Почему Vim форматирует вставляемый код неправильно?

grep может сделать это:

grep -o '[0-9.]\+'
106
29.04.2015, 18:38
4 ответа

Есть два причины:

Для вставки в VIM В то время как автоматический отклик включен, вы должны изменить К режим вставки , набрав:

:set paste

, вы можете изменить в «Вставить» и вставить свой код. После выполнения вставки введите:

:set nopaste

, чтобы отключить режим пасты. Поскольку это обычное и частые действия, VIM VIM предлагает переключение режима пасты:

set pastetoggle=<F2>

Вы можете изменить f2 на любой ключ, и теперь вы можете легко включить вкл. Отказ


Чтобы отключить автоматическую вставку комментариев, вы можете добавить эти строки в ваш Vimrc :

augroup auto_comment
    au!
    au FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
augroup END

VIM также предоставляет регистрационный регистр для вас, чтобы вставить текст из системы буфера обмена. Вы можете использовать »* P или » + p в зависимости от вашей системы. На системе без X11, таких как OSX или Windows, вы должны использовать реестр * . На системе X11, как Linux, вы можете использовать оба.

Дальнейшее чтение

128
27.01.2020, 19:29

Вклады были вставлены, потому что у вас включена автоматическое изобретение, и вы можете отключить это поведение, отключив автоматическое изобретение (: установить NOAI ), прежде чем вставить в терминал.

Комментарийные линии производятся путем автоматического комментирования и могут быть отключены, повернув его.

Альтернативы тем, которые вам следует получить желаемое поведение с помощью переключателей : установить пасту , вставляя свой отформатированный код и : установить Nopaste , чтобы восстановить нормальное поведение.

8
27.01.2020, 19:29

Используйте пасту vim. Вы хотите вставить то, что находится в буфере буфера обмена " + p

Это выбирает + и вставляет его на место.

Если вы используете Linux, * - это буфер X / среднего щелчка (последний выделенный текст).

Тогда vim знает, что это вставка.

В противном случае vim думает, что вы набрали вставляемые ключи и делают свой собственный автоматический отступ (поверх вашего скопированного отступа) до конца вставки.

В качестве примечания для того, чтобы это работало через SSH, вам необходимо установить параметр для вашего буфера обмена на общий доступ -Y

Подробнее см. man ssh .

36
27.01.2020, 19:29

Причина была очень хорошо объяснена другими плакатами. Здесь я хотел бы предоставить решение, которое автоматически обрабатывает ситуацию.

Со следующим в вашем~\.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

вы можете свободно вставлять текст, не беспокоясь об автоматически -отступах.

Если вы работаете в 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()

Источник: Coderwall , если вы хотите узнать больше.

2
31.10.2021, 04:20

Теги

Похожие вопросы