Vim: ペースト時のオートインデントを無効にする方法
Vimでコードなどをペーストした時、オートインデント機能の副作用でこのような残念な感じに
なってしまうことがある。
{ "foo": "FOO", "bar": "BAR", "foo": "FOO", "bar": "BAR", "foo": "FOO", "bar": "BAR" }
これを回避するには、
- :set paste
- :set noautoindent, :set nosmartindent (:se noai, :se nosi)
- :a! -> ペースト -> エスケープ
などの方法があるが、いずれもペースト前に一手間かかるのが面倒。
.vimrc に以下のようなコードを書けば、ペーストか手入力かを判定し
ペースト時にのみオートインデントを無効にしてくれる。
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 [200~ XTermPasteBegin("0i") inoremap [200~ XTermPasteBegin("") cnoremap [200~ cnoremap [201~ endif
詳細は以下を参照。
References
クリップボードからの貼り付け時に自動インデントを無効にする
http://ttssh2.sourceforge.jp/manual/ja/usage/tips/vim.html#Bracketed
0 件のコメント:
コメントを投稿