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 件のコメント:
コメントを投稿