Удалить vim отступы, когда я вставляю прямо из системного буфера обмена
У меня проблема с vim когда я вставляю что-то, оно помещает их в каждую строку. Как я могу установить настройки по умолчанию vim,
2 ответа
Если вы вставите из системного буфера обмена, vim считает, что вставленный текст является пользовательским вводом и, если он сконфигурирован для предоставления автоматического отступа, vim делает свою работу и автоматически делает отступ в коде.
Вы можете отключить этот автоматический отступ при вставке кода в vim непосредственно. Введите это в командном режиме:
:set paste
Теперь ваш вставленный код должен быть написан без отступа. Чтобы снова включить автоиндентирование, используйте:
:set nopaste
Чтобы упростить это, вы можете определить ярлык в вас .vimrc следующее:
set pastetoggle=<F2>
Теперь, когда вы нажимаете F2 в режиме вставки, чтобы иметь желаемое поведение. Затем снова нажмите F2, чтобы работать с автоиндентированием, как и раньше.
Я изучил эту аккуратную автоматизацию из coderwall, напишите следующее в свой
.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
и он будет включать и выключать режим вставки для вас.
С помощью
vim в
tmuxможет быть немного сложнее, так как вы можете (я использую "может", потому что у меня нет двойной побег, когда я внутри
tmux) нужно дважды экранировать, используя
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()
Вы можете вставить прямо из буфера обмена ("*) используя vim's paste (p) инструкция: "*p без необходимости входить INSERT Режим.
Так как вышеперечисленное не будет работать, когда вы подключены к удаленному терминалу, предложение хаоса будет вашим лучшим вариантом.
vim-unimpaired добавляет хороший ярлык yo а также yO который автоматически делает set pasteвставьте новую строку после / перед текущей строкой курсора, а затем set nopaste как только вы выходите INSERT Режим.