:help する Vim の operator かいた <Vim Advent Calendar 2013>
この記事は Vim Advent Calendar 2013 176日目の記事です。
175日目は、 Vim Advent Calendar 2013 175日目: 横幅が統一ではない矩形をヤンクしたり削除したりするプラグインをつくった - C++でゲームプログラミング でした。
前置き的な
先日、vim plugin 読書会 にほんの少しだけ参加しました。
その時、v:register
のヘルプを引きたかったのですが、 :h register
を引いてしまって、Vimのユーザー登録を促されました。
それというのも、下のようなキーマップを適用して、カーソル下の単語でhelpを引くようにしていたのですが、v:register
は一単語とみなされなかったからです。
nnoremap <F1> :<C-u>help <C-r><C-w><CR>
つくった
これではこのような状況でhelpが引きづらく不便だなーと思ったので、operator化してみました。
はじめてでしたが、operatorプラグインを参考にするとなんとなく作ることが出来ました。うれしい。
vim-operator-help · 56ff841 · pocke/dotfiles · GitHub
function! OperatorHelp(motion_wise) if line("'[") != line("']") return endif let start = col("'[") - 1 let end = col("']") let sel = strpart(getline('.'), start, end - start) execute "help " . sel endfunction call operator#user#define('help', 'OperatorHelp') map <F1> <Plug>(operator-help)
コピペ力で頑張ったので、何やってるかよくわかんなかったりします。
'[
と']
に、それぞれoperator対象範囲の先頭と末尾の位置情報があるのかな?
つかう
これを~/.vimrc
に書いてやって、例えば<F1>w
とか<F1>ib
とか適当に選択して<F1>
してやれば、思い通りの範囲で:help
することができます。べんり。
もちろん、v:register
もhelpを引くことが出来ます。やったね。
さいごに
ちょっとVimわかった気がする、するだけかなぁ。
大した記事じゃなくてごめんなさい、明日は…どんな記事かなっ