Vimのレジスタをうまくつかいたい話
Noahです。この記事はVim Advent Calendar 15日目の記事です
レジスタをうまく使いたい
日頃Vimを触ってるとき、ぼくは何も考えずにヤンクや削除をしていますが、他のレジスタも有効活用したい.
ただ、"ay
とかを打つのはしんどい
打ちやすいようにマッピングしても、結局レジスタを指定する際に [a-z]
みたいに打たねばいけないので面倒だったりする
そして多分僕はレジスタを使う頃には中身を覚えていないので :reg
などで確認する羽目になる. そのため、名前付きバッファの場合は各バッファに意味を持たせないといけなさそう
レジスタについて
レジスタとは、テキストを保持できるスペースのことで、ヤンクや削除をしたテキストを入れたりしてペーストできるようになっています.
普段ヤンクや削除をする際、なにも設定していなければ無名レジスタに入り、ペーストする際にはそこから利用されます.
レジスタには種類があり、
1. 無名レジスタ "" 2. 10個の番号付きレジスタ "0 から "9 3. 小削除用レジスタ "- 4. 26個の名前付きレジスタ "a から "z または "A から "Z 5. 3個の読み取り専用レジスタ ": と ". と "% 6. 代替バッファ用レジスタ "# 7. expression 用レジスタ "= 8. 選択領域用レジスタ "* と "+ と "~ 9. 消去専用レジスタ "_ 10. 最終検索パターン用レジスタ "/
ref. https://vim-jp.org/vimdoc-ja/change.html#registers
なるほど、たくさんある。
有効活用できるようにしてみる
個人的に思った問題は、
を満たす下のようなプラグインを書いてみました
個人的にfzfが好きなので、fzfありきのコードになっている
上のプレビューでは、README.mdの各見出しをヤンクしてそれぞれ管理しているレジスタの中に入れている (ここでは、"b
, "c
, "f
, "h
)
レジスタを複数予め指定しておけば、ヤンクする際に、よしなにレジスタに割り振ってくれるが、ペーストする際にはfzfで検索をかけるのでどこのレジスタに保存したのかを心配しなくていいのがいいところ
総論
みなさんどのようにレジスタを有効活用しているのかぜひ教えて下さい。