51

По умолчанию ярлыки вырезать / копировать / вставить в GVim в Ubuntu:

 Cut    "+x
 Copy   "+y
 Paste  "+gP

Я хотел бы использовать комбинации клавиш управления в GVim, как я использую в Firefox и других приложениях gnome. Как настроить GVim для работы, как и другие приложения Gnome?

4 ответа4

49

Добавьте следующие строки в ваш _vimrc или .vimrc

source $VIMRUNTIME/mswin.vim
behave mswin

Но будьте осторожны, тогда визуальный режим - это CTRL-Q вместо CTRL-V.

Для обзора того, что mswin.vim видит sourcode mswin.vim. Он очень хорошо прокомментирован, и если какая-то команда неясна, вы можете легко найти ее в справке vim.

Вот краткий обзор, составленный из источника:

  • клавиши возврата и курсора переносятся на предыдущую / следующую строку
  • CTRL-X и SHIFT-Del обрезаются
  • CTRL-C и CTRL-Insert являются копиями
  • CTRL-V и SHIFT-Insert - Вставить
  • Используйте CTRL-Q, чтобы сделать то, что делал CTRL-V
  • Используйте CTRL-S для сохранения, также в режиме вставки
  • CTRL-Z - Отменить; не в cmdline, хотя
  • CTRL-Y - Повторить (хотя и не повторить); не в cmdline, хотя
  • Alt-Space - Системное меню
  • CTRL-A - Выбрать все
  • CTRL-Tab - следующее окно
  • CTRL-F4 - Закрыть окно

По просьбе Nippysaurus: я добавил следующее в мой .gvimrc, чтобы показать Ctrl-V, кроме Paste в меню:

unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V        "+gP
cnoremenu    &Edit.&Paste<Tab>Ctrl-V        <C-R>+

Я не проверил это полностью, только быструю проверку, сделало ли это то, что я ожидал. У меня работает, надеюсь, у вас работает ;-)

44

Если вы хотите, чтобы Cut/Copy/Paste работали с использованием "стандартных" горячих клавиш, но вы не хотите изменять какие-либо другие параметры конфигурации в gvim, попробуйте добавить следующее в ~/.vimrc .

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

Вставка работает только в визуальном режиме и режиме вставки, поэтому вам не нужно беспокоиться о конфликте с Ctrl-V и блочном визуальном режиме. Это не проблема, потому что Copy и Cut переводят вас в режим вставки, так что вы можете сразу же вставить. Если вы попробуете это, вы обнаружите, что это чувствует себя совершенно естественно.

Я придумал эту конфигурацию после нескольких итераций, и теперь я думаю, что она "идеальна". Если вы даже немного недовольны текущей конфигурацией копирования / вставки, попробуйте это, и я уверен, что вам понравится.

9

Если вы хотите сохранить нормальное поведение vim, но при этом разрешить менее громоздкое использование системного буфера обмена, см. Доступ к системному буферу обмена. Если вы хотите, чтобы gvim использовал системный буфер обмена в качестве буфера по умолчанию (поэтому любая команда x , y , p и т.д. Использует буфер обмена), добавьте следующую строку в ваш vimrc:

set clipboard=unnamed

Я лично использую буферы гораздо больше в vim, чем между vim и системой; так что я бы предпочел немного более громоздкий ярлык, чем постоянная работа моего системного буфера обмена. Но приятно, что есть вариант для тех, кто предпочел бы его.

2

Я думаю, вы можете добавить это с помощью команды:imap (пробовал это только с помощью Ctrl+X в Windows, которая работала, нажатие ctrl+c, кажется, отменяет команду, хотя, возможно, вам придется делать это в vimrc).

:imap <C-X> "+x
:imap <C-C> "+y 
:imap <C-V> "+gP

Если вы добавите его в ~/.vimrc, вам просто нужно удалить: перед imap.

imap добавляет привязки только в режиме вставки, так что вы можете изменить его на карту или что-то еще. Посмотрите на :help mapmode чтобы узнать больше о переназначении и отмене отображения вещей.

Удачи!

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