本記事は Vim Advent Calendar 2012 の177日目です。
176日目は@manga_osyoさんによる、lingr で動作する reading_vimrc-bot をつくったでした。
本記事は簡単なTips集のようなものです。h``j``k``l
での移動が難なく出来るようになった程度のVim練度の方を対象に、かつ意外と気づきにくい便利な機能をおすすめしていきます。
行選択する
キーバインド:V
(Visual lineモード)
Windows系の操作だと基本はShiftを押しながらそのまま縦に選択していくしか行選択できないので、行選択という概念が頭になくなかなか気づきませんでした。それまでは普通にVisualモードで縦に選択していたのですが、行末の改行が選択できずもどかしい思いをしていました。
ちなみに矩形選択は<C-v>
です。こっちは調べるとすぐ出るので知ってる方も多いかもしれません。
ちょっと簡単にヘルプを引く
例えば上記の矩形選択についてhelpを引くとしましょう。恐らくこうなるはずです。
:help ctrl-v
ちょっとめんどくさがればこんなかんじでしょうか。
:h ctrl-v
ですが、ctrl系のキーバインドに関するヘルプは、下記でも引くことができます。
:h ^v
恐らく文字コードの関係だと思いますが、詳細はわかりません。気になった方は調べてみてください。とにかくタイプ数が減るので楽ちんです。
ちょっと簡単にタブを開く
タブを開くコマンドは:tabnew
ですが、:tabedit
でも開くことができます。:tabedit
には省略形:tabe
があるので、若干ではありますが楽にタブを開くことができます。
副ファイルを開く
キーバインド:C-^
複数のファイルを開いた際に、直前のファイルを開くコマンドです。ファイルの切り替えがぱっとできるので、ファイルを交互に行き来するのに便利。連打すると2つのファイルを行き来しますが、countを与えることで更に前のファイルと切り替えることも可能です。
バッファを選択する際に、同時にリストを表示する
副ファイルとしてバッファを開けない場合は:b[uffer]
でバッファを選択するかと思います。素のままでも最短で:b4
などして切り替えることができるのでわざわざmapする必要もないように感じますが、もしmapするのであれば一工夫してmapしてみるのも良いでしょう。
nnoremap B :ls<CR>:b
これでバッファを選択する際に同時にバッファリストも表示させることができます。初めて見たときとても感動しました。
カーソル位置をジャンプする
キーバインド:<C-o>
例えば検索したあと元の位置に戻りたい、例えば間違ってgg
/G
してしまった、そんな時があると思います。そんな時に役に立つのがこの機能です。前回のカーソル位置にジャンプします。行き過ぎた際はお隣のキーC-i
(もしくは<TAB>
)で戻ることができます。タグジャンプした際は本来は<C-t>
でタグスタックを使って戻るのですが、一応この<C-o>
も使えます。覚えておくと便利。
…とこれだけでも素敵なのですが、ちょっとした裏技があります。このジャンプリスト、ファイルに記録されるのでVimを閉じたあとでも履歴が残ります。そしてたいていのファイルで何らかのジャンプをしていることが多いので、<C-o>
を連打すると最近編集したファイルが開けることがあるのです。使いどころは多くないですが、閉じたあとに編集漏れを思い出した際など、適当に連打すると開くことがあって便利だったりします。
ちなみにこれを知ったのは、どなたかVimmerの方がファイルをどこに保存したかわからないと言っていた際に、<C-o>
で開かないかなーと言われていたのを見たためだったと思うのですが…どこで見たか忘れました。
最後に
機能やmapの単発モノをちょっとまとめて記事にしてみました。ご覧になられている方でこんなものもあるよ!という方がいらっしゃったらコメントで教えていただいたりしたいのですが、もっといい方法があります。それは、Vim Advent Calendar 2012として記事を書くことです。
Vim Advent Calendar 2012では、まだまだ執筆者を募集しています。こんな雑多な記事でも大丈夫ですし、最近の流行りはgifアニメやyoutubeのようです。twitterでも大丈夫だと聞いたこともあります(要出典)。なんとEmacsの記事まであります。1つのキーや機能、mapについてでも構いません。是非この機会に執筆してみてはいかがでしょうか。
以上VAC 177日目の記事でした、次回のAdvent Calendar 178日目は前回に引き続き?@manga_osyoさんです。
参考
hjklマスターとは
@sinsoku_listy つまり hjkl とは H な JK Love ってことですか。
— こはまさん (@c0hama) 2013年5月21日