Vim マークとは
Vim マークとは後で戻ってきたい行に印を付けておくことで、いつでもそこに戻れるようにするVimの機能のことです。Vim マークによる移動をジャンプと呼んでいます。
Vimが自動で残すVim マークが存在しているので、まずはそれを利用してみましょう。
※今後<bq>とは「`」の事を指しますのでお手数お掛けしますがバッククォートのことだと読み替えて下さい。
私事ですがこの記事内で「`」を入力するとMarkdownが反応してしまい、入力出来ませんでした。
キーストローク | ジャンプ先 |
<bq><bq> | 直近のジャンプする直前にいた場所 |
<bq>. | 直前に変更された場所 |
<bq>^ | 直前に挿入された場所 |
<bq>[ | 直前に変更もしくはヤンクが行われた行頭 |
<bq>] | 直前に変更もしくはヤンクが行われた末尾 |
<bq>< | 直前のヴィジュアル選択範囲の先頭 |
<bq>> | 直前のヴィジュアル選択範囲の末尾 |
上の表のキーストロークをVimで入力すると各ジャンプ先にジャンプ出来るかと思います。また:marks
とExコマンドを入力するとVim マークの一覧も確認出来ます。
自分でVim マーク を作成する
先程「<bq>{mark}」でVimが勝手にマークしてくれるVimマークにジャンプ出来ることを確認しました。次はこのVimマークを自分で作成してみましょう。
「m{mark}」と入力すると自由にVim マークを作成出来ます。使えるのはアルファベットの26個分のみです。これはレジスタの数と同じ数です。仮に「ma」と入力してVim マークを保存した場合、そのVim マークへジャンプしたければ「`a」と入力することでジャンプ可能です。
Vim マークの基本操作には慣れましたでしょうか。ここでもう一つ知っておかなければならないことがあります。Vim マークにはローカルなVim マークと、グローバルなVim マークの2種類があります。ローカルなVim マークはバッファ内でジャンプが可能で、グローバルなVim マークの方はバッファ間でジャンプが可能という違いがあります。
グローバルなVim マークの作成・ジャンプの方法は、それぞれマークを指定する際に大文字で指定することでグローバルなVim マークとして扱われます。
Vim マーク は本当に便利か?
ここまでVim マークの説明を聞いて如何でしたでしょうか。「便利だな〜、今からすぐ使おう」と思えましたでしょうか。私はそうは思えません。今の状態では自分がVim マークを何処に残したかを直感的に把握することが出来ないので記憶を辿るか、:marks
を入力して目視で探すかどちらかでしょう。工数が多いし疲れてしまいます。
そこで一番いい方法は何かと調べた結果、とても良いプラグインの存在を知りました。vim-bookmarksというプラグインです。(プラグインの入れ方はこちら)
主な使い方は下の表の通りです。
キーストローク | 操作内容 |
mm | ブックマークする |
ma | ブックマークを全表示する Enterでジャンプする |
mp | 前のブックマークへジャンプする |
mn | 次のブックマークへジャンプする |
mi | 注釈を残す |
mc | バッファ内のブックマークを削除する |
mx | 全てのバッファを削除する |
操作画面は画像の様な感じです。
ma
の結果の中では検索も可能なので目視で探す必要はありません。使い始めて間もないですが標準の設定のままでも十分便利です。
終わりに
Vimmerの間ではVim マークによるジャンプを習得することで、生産性が飛躍的に向上することが知られています。もちろんVim マーク以外にも便利な機能は多くあるので、これを機に是非ご自身で掘り下げてみて下さい。
Vim マーク解説のくだりは蛇足かとも思いましたが、プラグインを使わないVim標準の機能について知っておくということも大切かと思い記述しました。それに苦労して学ぶからこそありがたみを感じて頭に定着しやすいのかなと考えております。