vim初心者が覚えるべきコマンド集

vim初心者が覚えるべきコマンド集

開発部の上條です。
今回はvim初心者向けの記事です。

目次はこちら

  • 1.vimの入力やモードについて
  • 2.vim初心者が覚えるべきコマンド集

 

vimの入力やモードについて

vimを少しでも触ったことがある方は読み飛ばして大丈夫です。

vimにはモードがいくつかあります。
まずは通常モードと挿入モードについて覚えましょう。
通常モードでは主にカーソルの移動ができます。
hjklのキーを使って上下左右に移動することができます。(h = 左, j = 下, k=上, l=右)

挿入モードでは文字の入力ができます。
この状態はほぼ一般的なテキストエディタと同じ動きができます。
通常モードから挿入モードに変更するにはiでカーソルの左から挿入モードに、aでカーソルの右から挿入モードになります。
逆に挿入モードから通常モードに戻すにはescキーを入力します。
よくわからなくなったらescキー連打すれば大体通常モードに戻れます。

vimに慣れないうちは挿入モードで方向キーを使用して移動しても大丈夫です。
例えばaiueouを入力し忘れたとします。現在挿入モードで aieo| の時左の方向キーを二回押せば普通のテキストエディタと同じように ai|eo のようにカーソルを動かすことが出来ます。
vimに慣れてくると esc(通常モードに), h(左に移動), i(カーソルの左側から挿入モードに) で同じ動きが出来ます。
方向キーは遠いので最終的には使わず操作出来るようになりましょう。

Escキーが遠いなーと感じる方はvscodeの場合setting.jsonに

"vim.insertModeKeyBindings": [{"before": ["j","j"],"after": ["<ESC>"]}],

vimの場合は設定ファイルに

inoremap <silent> jj <ESC>

この一行を追加しましょう。挿入モードでjを二回押すことでescキーを押した時と同じ動作になります。

よく使用するモードにもう一つ、ビジュアルモードというモードがありますが、この記事では紹介しません。

vim初心者が覚えるべきコマンド集

ここまでで基本的な文字の入力は出来るようになったと思いますので、ここから使用頻度の高い覚えた方が良いコマンドを紹介していきます。

挿入モードに入る方法


★★★「i」カーソルの左から
★★★「a」カーソルの右から
★★★「I」行の一番左から
★★★「A」行の一番右から
★★★「o」カーソルの下に1行挿入して挿入モードに
★★☆「O」カーソルの上に1行挿入して挿入モードに

取り消し


★★★「u」直前の操作の取り消し
★★★「Ctrl-r」取り消しの取り消し

他のアプリやエディタではよくCtrl+z, Ctrl+yに割りあてられてる機能です。

移動系(←・→)


★★★「w」次の単語の先頭へ
★★★「b」前の単語の先頭へ
★★☆「e」単語の最後へ
★★☆「0」行頭へ
★★☆「$」行末へ
★★☆「f+??」fを押した後、何かのキーを押すと、カーソルから右にある最も近い押したアルファベットにカーソルを合わせる
★★☆「F+??」Fを押した後、何かのキーを押すと、カーソルから左にある最も近い押したアルファベットにカーソルを合わせる

行頭、行末移動は移動後に挿入モードに入る事が多い為、「I」や「A」を使うことが多いです。

移動系(↑・↓)


★★★「gg」ファイルの先頭へ
★★★「G」ファイルの最後の行へ

すぐ覚える必要はなく、先頭や最終行に行きたくなった時に都度コマンドを調べていたら身に付きます。

スクロール


★★★ 「Ctrl-d」半ページ下にスクロール
★★★ 「Ctrl-u」半ページ上にスクロール
★☆☆ 「Ctrl-b」1ページ下にスクロール
★☆☆ 「Ctrl-f」1ページ上にスクロール

個人的には半ページスクロールだけで問題無い為、Ctrl-b, Ctrl-fは別の機能を割り当てたりしています。

コピー&ペースト


★★★ 「yy」カーソルの1行をコピー
★★★ 「y$」カーソルから行末までコピー
★★☆ 「yw」カーソルの位置から単語の最後までコピー
★★★ 「yiw」(yank inner word without whitespace) カーソルの単語をコピー
★☆☆ 「yaw」(yank a word with whitespace) カーソルの単語をスペースを含んでコピー
★★★ 「p」カーソルの後にペースト
★★★ 「P」カーソルの前にペースト

y$はよく使用する為、Yに割り当てると便利です。削除の際のDと似た動きの為覚えやすいです。

vscodeの場合 setting.json

"vim.normalModeKeyBindings": [
{ "before": ["Y"], "after": ["y", "$"] }
]

vimの場合 .vimrc, init.vim etc…

nnoremap Y y$

削除(切り取り)


★★★ 「x」カーソルの文字を削除
★★★ 「D」カーソルから行末まで削除
★★☆ 「dw」カーソルの位置から単語の最後まで削除
★★★ 「diw」カーソルの単語を削除
★☆☆ 「daw」カーソルの単語をスペースを含んで削除
★★★ 「dd」カーソルの1行を削除

削除はwindowsのctrl+xとかの切り取り機能と同じで、削除したものはpでペーストすることができます。
この切り取りが必要無いこともあり、特にxやsで一文字削除した際に毎回コピーが上書きされるのはいやなので以下の設定で
切り取り機能をなくすことができます。

vscodeの場合 setting.json

"vim.normalModeKeyBindingsNonRecursive": [
{ "before": ["x"], "after": ["\"", "_", "x"] },
{ "before": ["s"], "after": ["\"", "_", "s"] }
]

vimの場合 .vimrc, init.vim etc…

nnoremap x "_x
nnoremap s "_s

削除(切り取り)して挿入モードに


★★★ 「cw」 「dw」+挿入モードに
★★★ 「C」 「D」+挿入モードに
★★★ 「ciw」 「diw」+挿入モードに
★☆☆ 「caw」 「daw」+挿入モードに
★★★ 「cc」 「dd」+挿入モードに
★★☆ 「s」 「x」 + 挿入モードに

c系のコマンドは削除+挿入モードの動きをします。
d + 挿入系コマンドでも問題ないですが、入力数が多くなる為なるべくこちらを使いましょう。

その他


★★☆ 「%」対応する括弧に移動
★★☆ 「Ctrl-a」カーソルから右に一番近い数字にカーソル移動して数字の値を1足す
★★☆ 「Ctrl-x」カーソルから右に一番近い数字にカーソル移動して数字の値を1引く
★★★ 「>>」インデントの追加
★★★ 「<<」インデントの削除


他にもまだまだ便利なコマンドはありますが今回は以上です。
vimに興味がある方のお役に立てれば幸いです。

jaJapanese