Tmux 1.7 新增的 bracketed paste mode 支援,可以讓 Vim 分辨現在是 tmux 貼上而不是手動打字。

引用 Bracketed Paste Mode | dodaの日記 | スラッシュドット・ジャパン(稍有修改):

" Ref http://slashdot.jp/journal/506765/Bracketed-Paste-Mode
" - Use tmux 1.7 `paste-buffer -p` to paste
" - Use <F11> and tmux `send-keys "\e[201~"` for pastetoggle
if &term =~ "xterm" && exists('$TMUX')
  let &t_ti = &t_ti . "\e[?2004h"
  let &t_te = "\e[?2004l" . &t_te
  let &pastetoggle = "\e[201~"
  map <F11> <Esc>[201~
  imap <F11> <Esc>[201~

  function! XTermPasteBegin(ret)
    set paste
    return a:ret
  endfunction

  map <special> <expr> <Esc>[200~ XTermPasteBegin("i")
  imap <special> <expr> <Esc>[200~ XTermPasteBegin("")
  cmap <special> <Esc>[200~ <nop>
  cmap <special> <Esc>[201~ <nop>
endif

\e[?2004h\e[?2004l 是啟用括弧貼上模式的控制碼,即 XTerm Control Sequences 中的
P s = 2 0 0 4 → Set bracketed paste modeP s = 2 0 0 4 → Reset bracketed paste mode

Tmux 1.7 的 paste-buffer 指令新增了 -p 選項,會在貼上文字前加 ESC[200~、後加 ESC[201~ 控制碼。 (參考 SF.net SVN: tmux:[2712] trunk

利用這兩個控制碼設定 mapping,就能自動調整 'paste' 的狀態了。

不過這個 pastetoggle 會把原本的設定蓋掉,變得無法一鍵切換 'paste'
將就方案是在 tmux 設定,例如我原本是用 <F11>,就加上 bind F11 send-keys "\e[201~"