viには標準で自動インデントや自動コメント行の機能がありますが、
その弊害として、インデントやコメントを含むコードを
クリップボードからペーストしたときにもその機能が実行されて
コードが崩れてしまうことがあります。
私の場合はJavaScriptのコードで
1 |
// |
によるコメントが含まれていると次の行もコメントになり、
ペーストしたコードが盛大に崩れてしまうことがよくありました。
しかし、さすがはvi。
.vimrcに以下のプログラムを書けばこの問題を回避できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if &term =~ "xterm" let &t_ti .= "\e[?2004h" let &t_te .= "\e[?2004l" let &pastetoggle = "\e[201~" function XTermPasteBegin(ret) set paste return a:ret endfunction noremap <special> <expr> <Esc>[200~ XTermPasteBegin("0i") inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("") cnoremap <special> <Esc>[200~ <nop> cnoremap <special> <Esc>[201~ <nop> endif |