Автоматически переходить в режим вставки при вставке из буфера обмена
Насколько я знаю, нет события autocmd для копирования и вставки. Поэтому мне было любопытно, можно ли написать скрипт, который переключает режим вставки, когда для вставки используется буфер обмена. Если бы он мог обрабатывать Shift + Insert, Ctrl + Shift + v и среднюю кнопку мыши, или даже внутренний скрипт, это было бы здорово, но я в первую очередь пытаюсь решить проблему с помощью сочетаний клавиш. Мой Vim имеет -clipboard
приписывать.
3 ответа
Когда вы используете GVIM или вставить с помощью p
/ i_CTRL-R
команды вместе с регистром "*
или же "+
Vim распознает пасту, и все должно работать нормально. То, что вы имеете в виду, по-видимому, 'pastetoggle'
настройка, которая используется для переключения режима "вставки" при вставке через терминал (например, с помощью средней кнопки мыши или ярлыка терминала). Причина, по которой существует режим и режим переключения, заключается в том, что Vim не может определить, был ли текст введен пользователем или вставлен.
Вы могли только как-то научить свой терминал отправлять Vim's 'pastetoggle'
ключ до и после вставки (когда Vim в данный момент работает); это не может быть решено только в Vim.
Мой вопрос на самом деле некорректен, так как он не отражает то, что я хотел, но теперь у меня есть то, что я хочу. По крайней мере, в моей настройке (set nopaste
, set autoindent
, copyindent
, smarttab
), я получаю вставку в стиле вставки с помощью p или P и вставку в стиле nopaste с помощью Ctrl-Shift-v в режиме вставки. Если я вставляю с Ctrl-Shift-v в обычном режиме, я получаю странное поведение.
Мои настройки могут не имитировать pastetoggle
настройки идентичны и не отвечают на вопрос в названии, но решают проблему, которая у меня была. Я тестировал как в мяте, так и в терминаторе.
У меня ниже map
установить в vim:
set mouse=inv
noremap <MiddleMouse> :set paste<CR>"*p:set nopaste<CR>
Вы можете добавить эту строку в свой ~/.vimrc
или же ~/.exrc
,
Я думаю, это довольно просто и не требует особых объяснений.
(Пере) сопоставьте middlemouse, чтобы установить режим вставки, затем вставьте содержимое *
зарегистрироваться и затем сбросить режим вставки.
Вам нужна поддержка мыши для этого.
Примечание. Как уже предлагалось в комментариях к вопросу, неправильный способ вставки текста в vim. Но теперь у нас есть привычка вставлять в Linux. Итак, это отображение пригодится.
Протестировано на vim 7.4 на gnome-терминале через putty+xming.