端書
ここ2~3年で、テキストエディタの世界はすっかりVisual Studio Code(VSCode)一強となりました。(このテキストを書くのに調べてみたら、VSCodeの初回リリースは2015年なんですね。もう少し最近かと思っていました。)
そんな中 癖の塊でしかないvim/gvim(以下、vi系)を使っていて、とても便利だと思った機能を紹介します。
基本的な使い方は 既に多くの方が記事を書かれているので そちらを参照してください。
なぜvi系を使うのか?
始まり
セミナー(※1)に行った時、OSがLinuxで viをまったく使えませんでした。
「設定を変更して保存してエディタを終了する」ことすらできない悔しさ。
できないならトレーニングすればよい。そこからvi系を探していたところ、gvimに出会いました。
生真面目にマニュアル読みながら覚えようとして挫折すること2回。
「カーソルの移動」と「コピー(ヤンク)」「ペースト」「デリート」のみでとりあえず使い始め 今に至ります。
※1
確か、Azureがまだ弱々だった頃のPostgreSQLのセミナーでした。
それでも有効性は高い
会社では ほぼWindowsしか使わないので、vi系知識が「必須になる」ことはありません。
ただ、OracleやPostgreSQLを使用する時、リリースタイミングと相互運用チェックと趣味でLinuxに構築することもあるので、意識せず使えるようになったvi系の知識は重宝します。
そして便利に使えるようになる
使えば使うほどコマンドを覚えて便利に使えるので、VSCodeよりも使っています。
(つまりVSCodeも使っています。)
せっかくなので、いくつか紹介したいなぁ、と思い至りました。
機能:連番
概要
連番をつけたい場合、番号なしでテキスト作成してから番号をつけます。
手順
テキストを作成して

Ctrl+vで矩形選択モードにして、カーソル移動(Shift+gでもOK)で最終行まで選択し

Shift+i→1.→ESCで左端に1.をまとめて設定

2行目以降の数値部分をCtrl+vで矩形選択し

g→Ctrl+a で連番になります。

仕組み
Ctrl+aは自身を含め右側で一番近い数字のインクリメント。
これにgをつけています。
(gについては後述します。)
機能:カーソル行以下削除(=レジスタ保存)
概要
私のgvim使用用途は主に「下書き」であり、作成した文書は別のところに持っていく必要があります。
書き出しを一番下の行から行えば、この方法で 簡単に余す所なくレジスタに入れることができます。
手順
文書を作成したら

書き出し部分に戻り

d→Shift+g

あとは必要なところに貼り付ける

仕組み
削除(レジスタ保存)のdと、最終行への移動のShift+gの組み合わせです。
移動キー:{、}
概要
段落移動できます。
目に見える範囲で移動できるので、Cntl+bやCntl+fよりも使い勝手がよいと思っています。
動作
}を繰り返し押下した時の動作は以下の通りです。





{は上記の逆方向に動作します。
もちろん、他のカーソル移動系キーと同様、d,y,vとの組み合わせも可能なので、「ブロックを切り取って移動する」などが簡単にできるようになります。
痒いところに手が届くg
gはちょっとした機能を提供してくれます。
表示上の行移動(g→j,g→k)、半角空白なしの行結合(g→Shift+j)、貼り付け後 貼り付けた最終行に移動(g→p)など。
今まで使っていたコマンドにgを付加すると結構面白いです。
あとがき(今後)
何か良さげなものがあったら追記します。
あとがき(雑談)
セミナーなどでノートPC のキーボードを使った時、vi系のカーソル移動は本当に便利だと感じました。
普段使いのキーボードは カーソルキーをホームポジションにマッピングしているので、そのあたりの利便性は気づきませんでしたが、ノートPCでNotepad使うと カーソル動かすだけでイライラしました。