Удалить 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 Режим.

Другие вопросы по тегам