今日のVim

今回は技術ネタを書ききれなかった(まとめられませんでした……)ので今日のVimのみです。
それも、小ネタの集合体です。その代わり量が多め……のはず。
普段はあまり使わないかもしれないけれどもある場面では役に立つ機能、紹介し忘れた機能で便利そうなものをピックアップしてみました。

編集系

やり直し(リドゥ)
<Ctrl>+r もしくは :redo

何気に大事な操作を紹介していませんでした……。元に戻す「u」の逆に当たる操作です。

カーソル位置からカーソル移動後位置の範囲に対する切り取り/コピー
dもしくはyの後に<カーソル移動操作>

現在のカーソル位置から移動した範囲に対して切り取りやコピーを行えます。
例えば、現在位置から行末までをコピーしたければコピーの「y」の後に行末移動の「$」を合わせた「y$」コマンドになります。
カーソル移動操作であればどのようなものでも効くようです。文章の先頭「gg」や文章の末尾「G」も効きます。

カーソル上の1文字を次に入力した文字で置き換える
r

1文字だけ直したい時にわざわざ挿入モードにしたり置換処理をする必要がなくなります。

アルファベットの大文字/小文字を変換
~

アルファベットの大文字を小文字に、小文字を大文字に変換する操作です。
範囲選択と合わせて利用することもできます。範囲選択後に「~」を入力すればOKです。

カーソル上にある数値をインクリメント(+1する)
<Ctrl>+a
カーソル上にある数値をデクリメント(-1する)
<Ctrl>+x

地味に便利なのがこの操作。数値を増やすだけであれば挿入モードにする必要はありません。
ちなみに、マイナス記号を認識したり、頭に0があると8進数と見なされる点には注意です。

現在行のインデント
>>
現在行の逆インデント
<<

現在の行のインデントを操作します。
選択範囲も有効であり、選択範囲のインデントを操作することも可能です。

選択系

全選択
ggVG

全選択は見ての通り文章先頭移動→行単位選択→文章末尾移動の組み合わせになっているだけです。

直前に選択した領域を再選択する
gv

領域の再選択は同じ領域に繰り返し処理をしたい場合に便利かもしれません。

移動系

表示行単位で下に移動
g<↓>
表示行単位で上に移動
g<↑>

Vimの折り返し行に対するカーソル移動はあくまで改行単位の移動であるため、折り返した部分にカーソルを移動させようとしても飛び越えてしまいます。
以下の状態から上に移動させようとしても……

AAAAAAAA<折り返し
AAA
BB
こうなってしまいます。
AAAAAAA<折り返し
AAA ←この行に来てほしい! BBB
この挙動を見た目通りにカーソル移動させる操作です。
左へカーソル移動
h
右へカーソル移動
l
下へカーソル移動(改行単位)
j
上へカーソル移動(改行単位)
k
実は、標準モードであればカーソルキーでなくても上記操作でカーソル移動できます。 わざわざホームポジションから手を動かすことなく、カーソル移動ができるので便利です。*1

挿入モード中の操作

いずれも挿入モード時の操作になります。
次の入力を標準モードでのコマンド入力とする
<Ctrl>+o
挿入モード中にこの操作をすると1回分だけ標準モードになります。 ステータス領域を表示している場合、挿入モードを示す部分が「-- 挿入 --」から「-- (挿入) --」に変わることで確認できます。 あらかじめコピーした内容を挿入モード中に貼り付けたい、という場合いちいち挿入モードと標準モードを行き来する必要がないので便利です。
編集中ファイル内の単語で入力補完(カーソル位置から前方へ単語検索)
<Ctrl>+p
編集中ファイル内の単語で入力補完(カーソル位置から後方へ単語検索)
<Ctrl>+n
編集中のファイルから単語を探し、現在入力中の単語を補完するとても便利な操作です。 スクリプトの編集や作成にとても役に立ち、知っていると知らないでは大違いになる操作の一つです。 次回こそはちゃんと技術ネタを書きたいです……。

*1:と書きつつもyukiinu2ndはカーソルキーを使ってしまいます……