LoginSignup
80

More than 5 years have passed since last update.

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

Last updated at Posted at 2012-11-30

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弱さを痛感している。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
80