Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

最近めちゃくちゃ便利になった Vim の dot repeat の設定

$
0
0

ブログ記事からの転載です。

最近…というか asterisk.vim を使い始めた頃に(いまさら)dot repeat にはまっていたりします。

例えば、asterisk.vim を利用すると <Plug>(asterisk-z*)cgnというキー入力で

『カーソル下の単語を変更し、dot repeat で次の単語も同じ変更をする』

という事ができます。

dot repeat をうまく活用できなかった勢としては、これがかなり衝撃的でめちゃくちゃ便利でした。



が、これにも欠点があり(asterisk.vim を使う上でしょうがないんですが)『カーソル下の単語』しか対象にする事ができません。

textobj を多用する Vim でこれはちょっと不便だったので、operator-exec_commandにヘルパ関数を追加し、もう少し柔軟性を高くしてみました。

operator#exec_command#mapexpr_gn({operator}[, {noremap}])

このヘルパ関数は『{motion} のテキストを @/ に保存したあとに {operator}gn を行う operator のキーマッピング』を返します。

例えば cで dot repeat したい場合は以下のような設定になります。

" C{motion} で {motion} のテキストに対して dot repeat する事ができる
nmap <expr> C operator#exec_command#mapexpr_gn("c",1)

dotrepeat


これにより任意の textobj({motion})に対して dot repeat する事ができるようになります。

また、c以外のも <Plug>(operator-replace)などを適用することもできます。

nmap <expr> S operator#exec_command#mapexpr_gn("\<Plug>(operator-replace)")

これでかなり捗るようになった。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>