Hatena::Groupvim

vimまっしぐら★ このページをアンテナに追加 RSSフィード

引っ越し後の日記はコチラです

tokoromのその他の日記

2010-08-21Vimでコピーした内容をしばらく保持しておいて後から貼り付ける

Vimでなんらかの文字列をコピーした内容を、しばらく各種操作したあとに後から貼りつけたくなる。

emacsのYankRingみたいなものを実現するpluginもあるが、Vim使いとしてはレジスタを使ってなんとかしたいところ。

操作としては

:let @y=@*

クリップボードを利用していないなら * を 0 に置き換える

として適当な名前付きレジスタ(ここでは y )にクリップボードの内容を逃がしておき、他の各種操作が終わったあとに、

"yp

で先程逃がしておいたレジスタの内容を貼り付けるというこになる。


とは言え、ちょっとこれを毎回やるのは面倒だったのでこれらを簡略化するためにキーマップを追加

noremap [MyPrefix] <Nop>
map <Space> [MyPrefix]

" クリップボードの内容を名前付きレジスタに逃がす
nnoremap [MyPrefix]" :<C-u>let @y=@*<CR>

" 名前付きレジスタからペースト
nnoremap [MyPrefix]p "yp
nnoremap [MyPrefix]P "yP

※ここでは[MyPrefix]に<Space>を当てているが、これをお好みで。


これで、クリップボードの内容をしばらく取っておきたいときに「<Space>"」で逃がしておける。

そして、「<Space>p」「<Space>P」で好きなタイミングで貼り付ける。


<Space>をprefixとした操作を 名前付レジスタを使うものと位置づけると、

" 名前付きレジスタにヤンク
nnoremap [MyPrefix]y "yy
" 名前付きレジスタにヤンクして削除
nnoremap [MyPrefix]d "yd

というのもありだと思う。


今のところこれを気に入って使っている。

NextschoolNextschool2012/03/25 15:31Calling all cars, clailng all cars, we're ready to make a deal.

fhjczgnfhjczgn2012/03/25 18:006ey9k3 <a href="http://bmvaecupbkpp.com/">bmvaecupbkpp</a>