Quando você deseja colar algo no terminal (não-gui) Vim, geralmente deseja executar o seguinte comando antes de colar:
set paste
E depois de colar:
set nopaste
Isso evita que o Vim indente automaticamente o código colado. Algumas pessoas costumam pastetoggle
tornar isso um pouco mais fácil:
set pastetoggle=<F2>
Agora você pressiona a tecla F2 para alternar a pasta antes e depois de colar.
Aqui está um pequeno truque que usa o modo de colagem entre colchetes do terminal para definir / remover automaticamente o modo de colagem do Vim quando você cola.
Coloque o seguinte em seu .vimrc:
let &t_SI .= "<Esc>[?2004h"
let &t_EI .= "<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
Agora você pode colar sem ativar / desativar o modo de colar explicitamente – isso é feito automaticamente para você.
Observe que, se você usar o Vim dentro de uma sessão Tmux, será necessário fazer o escape duplo dos códigos em t SI / t EI.
A configuração acima para usuários Tmux se parece com isto:
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()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
Respostas relacionadas:
Comandos básicos do Vim – para começar