baa5669ff6
From the original author: "Note that this only enables bracketed paste mode when the $TERM value starts with "xterm".. you could omit the test altogether, since it isn’t strictly necessary—it’s just trying to be careful not to do something that might be incompatible with some other terminal type." (http://stackoverflow.com/questions/5585129/pasting-code-into-terminal-window-into-vim-on-mac-os-x/7053522#7053522) Since we don't understand yet if this is a problem, I recommend dropping the check and seeing if it comes back to bite us. Should be safe since vim has undo. (My machine has term set to 'linux', and I'm reluctant to keep adding clauses to that check.)
38 lines
1.1 KiB
VimL
38 lines
1.1 KiB
VimL
" Code from:
|
|
" http://stackoverflow.com/questions/5585129/pasting-code-into-terminal-window-into-vim-on-mac-os-x
|
|
" then https://coderwall.com/p/if9mda
|
|
" and then https://github.com/aaronjensen/vimfiles/blob/59a7019b1f2d08c70c28a41ef4e2612470ea0549/plugin/terminaltweaks.vim
|
|
" to fix the escape time problem with insert mode.
|
|
"
|
|
" Docs on bracketed paste mode:
|
|
" http://www.xfree86.org/current/ctlseqs.html
|
|
" Docs on mapping fast escape codes in vim
|
|
" http://vim.wikia.com/wiki/Mapping_fast_keycodes_in_terminal_Vim
|
|
function! WrapForTmux(s)
|
|
if !exists('$TMUX')
|
|
return a:s
|
|
endif
|
|
|
|
let tmux_start = "\<Esc>Ptmux;"
|
|
let tmux_end = "\<Esc>\\"
|
|
|
|
return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
|
|
endfunction
|
|
|
|
let &t_SI .= WrapForTmux("\<Esc>[?2004h")
|
|
let &t_EI .= WrapForTmux("\<Esc>[?2004l")
|
|
|
|
function! XTermPasteBegin(ret)
|
|
set pastetoggle=<f29>
|
|
set paste
|
|
return a:ret
|
|
endfunction
|
|
|
|
execute "set <f28>=\<Esc>[200~"
|
|
execute "set <f29>=\<Esc>[201~"
|
|
map <expr> <f28> XTermPasteBegin("i")
|
|
imap <expr> <f28> XTermPasteBegin("")
|
|
vmap <expr> <f28> XTermPasteBegin("c")
|
|
cmap <f28> <nop>
|
|
cmap <f29> <nop>
|