Автоматически переходить в режим вставки при вставке из буфера обмена

Насколько я знаю, нет события 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.

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