1

Насколько я знаю, нет события autocmd для копирования и вставки. Поэтому мне было любопытно, можно ли написать скрипт, который переключает режим вставки, когда для вставки используется буфер обмена. Если бы он мог обрабатывать Shift+Insert, Ctrl+Shift+v и среднюю кнопку мыши, или даже внутренний скрипт, это было бы здорово, но я в первую очередь пытаюсь решить проблему с помощью сочетаний клавиш. У моего vim есть атрибут -clipboard .

3 ответа3

2

Когда вы используете GVIM или вставляете, используя команды p / i_CTRL-R вместе с регистром "* или "+ , Vim распознает вставку, и все должно работать нормально. То, что вы имеете в виду, по-видимому, это параметр 'pastetoggle' , который используется для переключения режима "вставки" при вставке через терминал (например, с помощью средней кнопки мыши или ярлыка терминала). Причина, по которой существует режим и режим переключения, заключается в том, что Vim не может определить, был ли текст введен пользователем или вставлен.

Вы могли только каким-то образом научить свой терминал отправлять ключ Vim 'pastetoggle' до и после вставки (когда Vim в данный момент работает); это не может быть решено только в Vim.

0

Мой вопрос на самом деле некорректен, так как он не отражает то, что я хотел, но теперь у меня есть то, что я хочу. По крайней мере, в моей настройке (set nopaste , set autoindent , copyindent , smarttab ), я получаю вставку в стиле вставки с помощью p или P и вставку в стиле nopaste с помощью Ctrl-Shift-v в режиме вставки. Если я вставляю с Ctrl-Shift-v в обычном режиме, я получаю странное поведение.
Мои настройки могут не совпадать с настройками pastetoggle идентично, и это не отвечает на вопрос в заголовке, но решает проблему, с которой я столкнулся Я тестировал как в мятном, так и в терминаторе.

0

У меня есть ниже map установленная в Vim:

set mouse=inv
noremap <MiddleMouse> :set paste<CR>"*p:set nopaste<CR>

Вы можете добавить эту строку в ваш ~/.vimrc или ~/.exrc .

Я думаю, это довольно просто и не требует особых объяснений.
(Пере) сопоставьте промежуточную мышь, чтобы установить режим вставки, затем вставьте содержимое регистра * и затем отмените режим вставки.
Вам нужна поддержка мыши для этого.

Примечание. Как уже предлагалось в комментариях к вопросу, неправильный способ вставки текста в vim. Но теперь у нас есть привычка вставлять в Linux. Итак, это отображение пригодится.

Протестировано на vim 7.4 на gnome-терминале через putty+xming.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .