Vim をしばらく使ってみた感想
去年の 11/13 あたりからしばらく Vim を使っていたのですが、ようやく普通に使えるようになってきました。
で、短期間しか使っていませんが、Vim を使っていていくつか便利だと思ったことを書いていきます。
単語単位の移動
w, b で単語単位の移動ができます。VS での Ctrl+→, Ctrl+← と同じですね。
単語単位の削除
dw で単語単位の削除ができます。VS での Ctrl+Del と同じですね。
行単位の削除
dd で行単位の削除ができます。VS での Shift+Del と同じですね。
カーソルの下にある単語を検索
* で、カーソルの下にある単語を検索できます。VS で Ctrl+F を押すとカーソルの下の単語が検索欄に出るので、それとほとんど同じですね。
行の最後に入力
A で行の最後から入力を開始できます。VS で End を押すのと同じですね。
改行して入力
o で改行して入力を開始できます。VS で End, Enter と押すのと同じですね。
対になるカッコへジャンプ
% でジャンプできます。VS で Ctrl+] を押すとの同じですね。
ウインドウ分割
:sp、:vsp で分割できます。VS で言うところの(水平タブ|垂直タブ)ウインドウ作成とほとんど同じですね。
矩形選択
Ctrl+v で矩形選択できます。VS で Alt+マウスドラッグと同じですね。
確認しながら簡易置換
例えば hoge を fuga に置換したいけれども、ほんとに全部の hoge を fuga に置換していいか分からないから確認しつつ置換したいときは、
/hoge<CR>cwfuga<Esc>
で 1 つの hoge を fuga に置き換えて、あとは n を押して次の候補を見て、置換して良さそうなら . を押して置換、置換しなくて良さそうならそのまま n を押して次へとやっていきます。
n.nn.n.nnn.nn.
VS のクイック置換で『次を検索』『置換』をやるのと大体同じですね。
カーソルの下の単語を複数のファイルから検索
こんなのを用意しておきました。
nnoremap qff :vimgrep /\<<C-r>=expand("<cword>")<CR>\>/j **/*.cpp **/*.h **/*.hpp \| cope<S-Left><S-Left><Left>
qff と押した段階では hpp の後ろにカーソルが行くので、あとは適当にファイルを追加するなり削除するなりして Enter 押せば vimgrep で検索されます。
VS で言うところの、カーソルの下で Ctrl+Shift+F 押して検索するのと同じですね。
あれ?何が便利なの?
普通にやってる分には VS と比べてそんなに便利だとは思っていないですはい。
何で使ってるの?
Apple Wireless Keyboard と iPad の RDP アプリを使って家の PC に繋いでコードを書くことが結構あるのですが、その編集を楽にするためです。
Apple Wireless Keyboard って家のキーボードと違って Home キーとか End キーとか無いので、そういうキーを多用してると、こっちで編集するのが辛いんですね。あと他の環境でも Vim はあるみたいだし、使い慣れておくと便利だろうと。
それからこれは重要なことなのですが、iPad の RDP アプリはなぜかファンクションキー, Esc キー, Ctrl キーが一切効きません。3つほど試しましたがどれも対応してないので、多分ハード的に不可能とかなんじゃないかなーと。
ということで、Vim を使う際に Esc キーとか Ctrl キーとかに頼らないようにしないといけないので、キーバインドをガリガリ変更しておきました。
" Esc に対するバインドの変更 noremap qj <Esc> noremap! qj <Esc> " 矩形選択 nnoremap qv <C-v> " スクロール nnoremap qd <C-d> nnoremap qu <C-u> " 1画面スクロールとか使わないし・・・ " nnoremap qf <C-f> " nnoremap qb <C-b> " ウインドウの移動 nnoremap qwl <C-w><C-l> nnoremap qwk <C-w><C-k> nnoremap qwj <C-w><C-j> nnoremap qwh <C-w><C-h> nnoremap qww <C-w><C-h> " exモードでのペースト cnoremap qr <C-r> " redo nnoremap qr <C-r>
マクロ潰して Ctrl の代わりにしてます。マクロとか 1 つ 2 つあれば十分ですよね?
とまあ使うキーが少ないおかげで、小さいキーボードや Ctrl の使えない状況でも楽々と組むことができて非常に便利です。これで VS のエディタと遜色無くできるのであれば十分やる価値はあります。
あと VS のインテリセンスは自分は基本使ってないというか、C++ でやってるとよく効かなくなるから頼らないようにしているので、無くてもそんな困らないです。Vim でも ctags とか使えばそれなりにできるらしいのだけれどもよく知りません。