3

Я хочу иметь возможность вставлять из буфера обмена на gVim в Windows, используя Ctrl-Shift-V, как в Terminator.

Однако, если я положу это на мой .vimrc

 imap <C-S-V> "+gP

Ярлык работает без смещения, то есть я могу вставить текст с помощью простого Ctrl-V. Это отменяет уже существующую возможность, есть ли способ вставить только с помощью Ctrl-Shift-V?

3 ответа3

5

Vim не видит разницы между <C-V> , <C-v> и <C-S-V> .

Если вы хотите отображать с учетом регистра, вам нужно использовать неизмененные символы или клавишу Alt (например, <A-v> или <M-v> отличается от <A-V> или <M-V>).

3

Из-за способа обработки ввода с клавиатуры, к сожалению, сегодня это вообще невозможно, даже в GVIM. Некоторые сочетания клавиш, такие как Ctrl + не алфавитный, не могут быть сопоставлены, и Ctrl + буква против Ctrl + Shift + буква не может быть различена. (Если ваш терминал не отправляет для него отдельный код termcap , чего большинство не делает.) В режиме вставки или командной строки попробуйте ввести комбинацию клавиш. Если ничего не происходит / вставлено, вы не можете использовать эту комбинацию клавиш. Это также относится к <Tab> / <C-I> , <CR> / <C-M> / <Esc> / <C-[> и т.д. (Единственное исключение - <BS> / <C-H> .) Это известная проблема и предмет различных дискуссий на vim_dev и IRC-канале #vim.

Некоторые люди (прежде всего Пол ЛеоНерд Эванс) хотят это исправить (даже для консоли Vim в терминалах, которые поддерживают это), и выдвинули различные предложения, ср. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Но на сегодняшний день никаких патчей или добровольцев еще не появилось, хотя многие выразили желание иметь это в будущем выпуске Vim 8.

1

Вы можете запрограммировать Ctrl-Shift-v чтобы он перехватывался самим терминалом, а не vim, вы можете настроить, как происходит такой перехват.

Для меня я запускаю приложение Konsole , в меню «Настройки» -> «Настроить ярлыки» -> «Искать Ctrl+Shift+v и переназначить его на Ctrl-V . Так что теперь эта комбинация клавиш не сможет пройти через vim, и вы можете сделать так, чтобы Konsole правильно сделала, чтобы вставить содержимое буфера обмена.

Если вы используете какой-либо терминал, отличный от Konsole, вы можете поискать его функциональные возможности, чтобы перехватить эту комбинацию клавиш, а затем удерживать vim, чтобы он действовал правильно.

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