Насколько я знаю, нет события autocmd для копирования и вставки. Поэтому мне было любопытно, можно ли написать скрипт, который переключает режим вставки, когда для вставки используется буфер обмена. Если бы он мог обрабатывать Shift+Insert, Ctrl+Shift+v и среднюю кнопку мыши, или даже внутренний скрипт, это было бы здорово, но я в первую очередь пытаюсь решить проблему с помощью сочетаний клавиш. У моего vim есть атрибут -clipboard
.
3 ответа
Когда вы используете GVIM или вставляете, используя команды p
/ i_CTRL-R
вместе с регистром "*
или "+
, Vim распознает вставку, и все должно работать нормально. То, что вы имеете в виду, по-видимому, это параметр 'pastetoggle'
, который используется для переключения режима "вставки" при вставке через терминал (например, с помощью средней кнопки мыши или ярлыка терминала). Причина, по которой существует режим и режим переключения, заключается в том, что Vim не может определить, был ли текст введен пользователем или вставлен.
Вы могли только каким-то образом научить свой терминал отправлять ключ Vim '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
.
Я думаю, это довольно просто и не требует особых объяснений.
(Пере) сопоставьте промежуточную мышь, чтобы установить режим вставки, затем вставьте содержимое регистра *
и затем отмените режим вставки.
Вам нужна поддержка мыши для этого.
Примечание. Как уже предлагалось в комментариях к вопросу, неправильный способ вставки текста в vim. Но теперь у нас есть привычка вставлять в Linux. Итак, это отображение пригодится.
Протестировано на vim 7.4 на gnome-терминале через putty+xming.