vimの連続コピペできない問題

More than 5 years have passed since last update.


vimの連続コピペできない問題


概要


コピーしておいた文字列を任意の単語や文章の代わりにペーストしたい

このヒドイ文章のtypoを、修正したい

def hoge

text = "A long time ago in a galaxy far far away"
puts test1 # => puts text
puts xtex2 # => puts text
extt3_array = twxt4.split(" ") # => text_array = text.split(" ")
puts txet5.gsub(" ", "¥n") # => puts txet.gsub(" ", "¥n")
end

textをヤンクして、txet xtex extt twxtの箇所にペーストしてやれば良い。

こういうとき、最初のtestをvisualモードで選択してペーストして、次のtxetも同様にペーストしようとすると思います。


問題

visualモードで選択したあとに、ヤンクした文字をペーストするとその置き換えた文字がヤンクされてしまい2回目同じようにしようとすると、前回置き換えた文字がペーストされてしまう。

このザマだよ!

def hoge

text = "A long time ago in a galaxy far far away"
puts text # ココは直せてる
puts test1 # => puts text
xtex2_array = extt3.split(" ") # => text_array = text.split(" ")
puts twxt4.gsub(" ", "¥n") # => puts txet.gsub(" ", "¥n")
end


解決策

visualモードで置き換えたい文字を選択した後、「p」でペーストするかわりに


「"0p」

でペーストする(0のレジスターを使用する)


でもめんどくさいじゃないですか〜

そこでこの設定

vnoremap <silent> <C-p> "0p<CR>


これで Ctrl-p で連続して貼り付けれるようになったぁ


まとめ


  • visualモードで選択して「Ctrl-p」で貼り付けれるようになったぁ。

  • 何回やっても同じ内容をペーストできるようになった。

  • コードを書く効率があがったぁー

ながらく探し求めていた方法が、0番のレジスターを使い、それに対してキーマッピングするだけで解決するとは思ってもなかったので自分のvim弱さを痛感している。