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

vimでヴィジュアルモードの連続貼り付け

$
0
0

悩み

ヴィジュアルモード(visual mode)で単語を選択→yでコピー(copy)→適当な場所へ移動→ビジュアルモードで選択→pで置換貼り付け
とやると、最初の一回は意図したとおりに貼り付けれるが、2回目以降は、直前に置換した元の単語が貼り付けられてしまう。

多分、ビジュアルモードで貼り付ける際に、d→i→pみたいに途中でレジスタに入りコピーされてしまうのではないかと思われる。不便だ。

解決


.vimrc
function! Put_text_without_override_register()
let line_len = strlen(getline('.'))
execute "normal! `>"
let col_loc = col('.')
execute 'normal! gv"_x'
if line_len == col_loc
execute 'normal! p'
else
execute 'normal! P'
endif
endfunction
xnoremap <silent> p :call Put_text_without_override_register()<CR>

これを.vimrcに追記すれば解決

確かに解決はしたんだけど、こんな大仰なことしないでも、貼付け時のレジスタを変更すればいいだけだった。
というわけで以下でOKでした。

.vimrc
vnoremap <silent> p "0p

ちなみに

vimのコピーをOSのクリップボードと一緒にする設定で

.vimrc
set clipboard=unnamed,autoselect

というのをよく見かけるが、これをやると前述のヴィジュアルモードを使った置換貼付けができなくなる

.vimrc
set clipboard=unnamed

とするとうまくいく。

組み合わせると、両立できる!!

参考


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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