vimで上書きの置換をうまいことやる
- 2010年04月12日
- category:vim
- Comment(0)
- Trackback(0)
以下の様なテキストがあって、全てringoに置換したいときに、ringoをyankしてgoriraを削除してringoを貼り付けると、goriaがyankされるのでまたringoをヤンクしないといけなくて面倒なことになります。
ringo
gorira
rappa
pannda
DA PUMP
これをうまくやるために以下のような設定を書いてみました。
nnoremap y "xy
vnoremap y "xy
nnoremap d "xd
vnoremap d "xd
nnoremap c "xc
vnoremap c "xc
vnoremap p "xp
nnoremap <C-p> :<C-u>set opfunc=OverridePaste<CR>g@
nnoremap <C-p><C-p> :<C-u>set opfunc=OverridePaste<CR>g@g@
function! OverridePaste(type, ...)
if a:0
silent execute "normal! `<" . a:type . "`>\"xp"
elseif a:type == 'line'
silent execute "normal! '[V']\"xp"
elseif a:type == 'block'
silent execute "normal! `[\<C-V>`]\"xp"
else
silent execute "normal! `[v`]\"xp"
endif
endfunction
y、d、cでxというレジスタに入れておいて、ビジュアルモードのpと<C-p>に割り当てたオペレーターで置換するときはxのレジスタを使うという感じです。
というのを某勉強会で話したら、いつものごとくkanaさんがすでにプラグイン化しておりました。
- Prev Entry
- ref.vimのjQuery用source書いた
- Next Entry
- symfonyのunitテストでちょっと楽する
コメントフォーム
スパムがひどいので一時的にコメントフォーム閉じます。ゴメンナサイ。
