問題是這樣的
當用 v (選取)一些字後,想用 p (貼上)剛剛用 y (複製)下來的東西
但是 vim 在做完 p 後會自動把選取的字 d (剪下)
導致下次 p 時,會貼到剛剛被覆蓋的字
如下範例,第二次用 p 時,正常預期結果是 aaa 但實際卻是 bbb
aaa ---> y 複製
bbb ---> p 貼上 ---> aaa
ccc ---> p 貼上 ---> bbb
解決:
開啟 .vimrc,貼上:
" Ref: https://stackoverflow.com/a/290723/6734174 function! RestoreRegister() let @" = s:restore_reg return '' endfunction function! s:Repl() let s:restore_reg = @" return "p@=RestoreRegister()\<cr>" endfunction " NB: this supports "rp that replaces the selection by the contents of @r vnoremap <silent> <expr> p <sid>Repl()
主要做的事就是在貼上前先把目前暫存器的值儲存下來
貼上的動作完成後再把內容回復
參考資料:
How to paste over without overwriting register
沒有留言:
張貼留言