Удалить vim отступы, когда я вставляю прямо из системного буфера обмена

У меня проблема с vim, когда я вставляю что-то, оно помещает их в каждую строку. Как я могу установить настройки по умолчанию vim.

2
задан 8 May 2015 в 12:47

3 ответа

Если Вы вставляете от системного буфера обмена, vim думает, что вставленный текст является вводом данных пользователем и, если confiured для обеспечения автоматического отступа, vim делает, это - задание и автоматически располагает код с отступом.

можно выключить тот автоматический отступ при вставке кода в vim непосредственно. Введите это в командном режиме:

:set paste

Теперь, Ваш вставляемый код должен быть записан без отступа. Чтобы повторно включить автоматический отступ, снова используйте:

:set nopaste

К simplfy, что, можно определить ярлык в Вас .vimrc следующим образом:

set pastetoggle=<F2>

Теперь, когда Вы нажимаете F2 в режиме вставки для имения желаемого поведения. Тогда нажмите снова F2 , для работы с автоматическим отступом как прежде.

0
ответ дан 8 May 2015 в 12:47

Можно вставить непосредственно от буфера обмена ("*) энергия использования paste (p) инструкция: "*p, не имея необходимость входить INSERT режим.

, Так как вышеупомянутое не будет работать, когда Вы будете подключены к удаленному терминалу, предложение хаоса было бы Вашим наилучшим вариантом.

неослабленный энергией добавляет хороший ярлык yo и yO, который автоматически делает set paste, вставляет новую строку после/прежде чем текущей строки курсора и затем set nopaste, после того как Вы выходите INSERT режим.

0
ответ дан 8 May 2015 в 22:47
  • 1
    замечательный, that' s ответ. пакеты миссии были премией. you' ре святой, и мне действительно было трудно понять такой простой синтаксис, позор мне. – Malkavian 8 August 2016 в 02:06

Я узнал об этой изящной автоматизации от 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()
1
ответ дан 16 July 2020 в 18:53

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

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