vimでC++編集する時に使えるいいこと考えちゃった


TL;DR

この方法は良くない。いいと思ったけど良くない。
z+f等の畳み込み(Folding)を使おう!

はじめに

便利なものを作ったつもりで以下を書いたのですが,実際にはコメントで教えていただいた折畳を使った方が良さそうです.折畳に関してはこちらにまとめました.

したこと

Vimを使い始めて半年経ち,vimrcでショートカットを作成したりするようになって,ようやくVimmerと呼ばれてもいいくらいになってきた.(Pluginは使っていない)
何気なくC++のプログラムを編集していて,思った.

「確実にあっている部分が視界に入って鬱陶しいなあ・・・」

そこで,何か解決方法はないかを考えたところ,Vimを使い始めた時に何度か間違えて押していたShift+jを思い出した.ちなみに,

Shift + jは,現在の行と次の行をスペースをいれて連結するコマンドである.

このコマンドは間違えて入力すると,ソースコードがまとまって面倒なことになる.uを使ってすぐに戻っていた.

しかし,みたくない部分をまとめてしまうことができるなと考えた.終了後に元に戻すことができれば便利に使えそうだ.ここで考えたのが,C++であれば行末には;があるため,;;<CR>に置換することだ.

Vim上で

:s/;/;^M/g

とコマンドを実行すると;;<CR>になってくれた.そこで,Shift+kにショートカットを割り当てようと思い,~/.vimrcに以下を記述した.

~/.vimrc
nnoremap <S-k> :s/;/;^M/g

これでVim上でShift+kを入力するとコマンドが

/g

になってしまった.どうやらvimrcでは^Mは使えないようだ.そこで,先ほどの内容を以下に変更した.

~/.vimrc
nnoremap <S-k> :s/;/;\r/g

これで無事Shift+k;を;<CR>に置換を割り当てることができた.

動作画面

以下が,動作画面である.連結すると,見た目上の行数が減るので,注目できる(かも).

いつでも;を;<CR>に置換ができるので,編集中は読みたくない部分を省略して編集後に戻すことができるようになった.