每次要在 vim 上 copy / paste code 時,
都要先 :set paste 切換成 paste mode
後來就把 toggle paste mode 設定成某個快捷鍵
最近在設定環境的時候又想到這個問題,
原本想去找怎麼把 toggle 設定在 insert 鍵上
結果看到了這個 vim-bracketed-paste-mode
基本上就是讓 terminal 能夠判斷這是 input 還是 paste,
如果是 paste 那麼就會把某些字元替換掉
如果 vim 再打開相對應的設定
一旦偵測到替換掉的特殊字元就自動開啟 paste mode.
這樣就手動去按熱鍵的動作都可以省下來了
目前 OSX 的 terminal / iterm2 還有最新的 putty 都有支援 bracketed paste mode
所以我們只要在 .vimrc 加入以下的設定就好了
都要先 :set paste 切換成 paste mode
後來就把 toggle paste mode 設定成某個快捷鍵
最近在設定環境的時候又想到這個問題,
原本想去找怎麼把 toggle 設定在 insert 鍵上
結果看到了這個 vim-bracketed-paste-mode
基本上就是讓 terminal 能夠判斷這是 input 還是 paste,
如果是 paste 那麼就會把某些字元替換掉
如果 vim 再打開相對應的設定
一旦偵測到替換掉的特殊字元就自動開啟 paste mode.
這樣就手動去按熱鍵的動作都可以省下來了
目前 OSX 的 terminal / iterm2 還有最新的 putty 都有支援 bracketed paste mode
所以我們只要在 .vimrc 加入以下的設定就好了
if &term =~ "xterm.*"
let &t_ti = &t_ti . "\e[?2004h"
let &t_te = "\e[?2004l" . &t_te
function XTermPasteBegin(ret)
set pastetoggle=<Esc>[201~
set paste
return a:ret
endfunction
map <expr> <Esc>[200~ XTermPasteBegin("i")
imap <expr> <Esc>[200~ XTermPasteBegin("")
cmap <Esc>[200~ <nop>
cmap <Esc>[201~ <nop>
endif
留言
張貼留言