Как заставить вырезать / копировать / вставлять в GVim на Ubuntu работу с Ctrl + X, Ctrl + C, Ctrl + V?

40943
pcapademic

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

 Cut "+ x Копировать "+ у Вставить "+ gP 

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

49
Чтобы избежать конфликтов с ключами vim по умолчанию, выберите Ctrl + Shift + Key вместо Ctrl + Key Sheharyar 8 лет назад 0

4 ответа на вопрос

46
Ludwig Weinzierl

Добавьте следующие строки в ваш _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>+ 

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

Я понимаю и ценю замечания, которые Манни и Питер Торин высказали в комментариях к ответу Питера Торина. Я считаю, что я изучил GVim на Windows, как замену блокнота, и я хочу меньше трений. Спасибо Людвиг pcapademic 15 лет назад 1
Есть ли способ изменить текст ярлыка меню, чтобы он соответствовал новым сочетаниям клавиш? Nippysaurus 14 лет назад 2
@Nippysaurus: я попробовал это с menutrans в .gvimrc. Не получил его на работу, вечером еще раз посмотрю ... Ludwig Weinzierl 14 лет назад 0
@Nippysaurus: добавлен возможный вариант решения моего ответа, см. Выше. Ludwig Weinzierl 14 лет назад 0
С этим VIM заслуживает второй шанс! user1068352 9 лет назад 0
Но это не работает для ** GVim **, только для Vim! Suncatcher 8 лет назад 0
Похоже, что у `mswin.vim` уже есть вызов" ведите себя mswin ". Нужно ли вызывать это снова в моем собственном `_vimrc`? Nathan Friend 7 лет назад 2
@NathanFriend То же самое. Он работает даже без `вести себя mswin`, по крайней мере, в моей системе с Vim 8.0. Mikel 7 лет назад 1
44
Cogan

Если вы хотите, чтобы 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 переводят вас в режим вставки, так что вы можете сразу же вставить. Если вы попробуете это, вы обнаружите, что это чувствует себя совершенно естественно.

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

Это именно то, что я искал. Благодарю. Sean McCleary 13 лет назад 0
После некоторых экспериментов и консультации `: help i_ctrl-r_ctrl-o` я решил изменить` imap "+ pa` to` imap + `; это работает, как и ожидалось, когда курсор находится слева от первого символа строки, и наиболее близко имитирует «стандартное» поведение. Holger 12 лет назад 2
Я думаю об изменении`сдвинуть + вставить, что, кажется, намного быстрее на моей машине. Но в середине проекта и не хочется перезапускать vim прямо сейчас. Просто делюсь Will 12 лет назад 0
Вы классные =) Yugal Jindle 10 лет назад 0
9
jtb

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

set clipboard=unnamed 

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

вау это здорово спасибо Hoto 8 лет назад 0
2
Peter Thorin

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

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

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

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

Удачи!

Это должно сделать немного хитрости. Но это плохая идея. Ctrl-V должен перейти в визуальный режим, Ctrl-C отменит любые команды. И трюк будет работать только на вашей системе; на другой машине вы потеряетесь. innaM 15 лет назад 1
Я частично согласен с тем, что это плохая идея, я не хотел бы использовать ее сам, но если вы только обычный пользователь gvim, то вы, вероятно, не пропустите привязки, которые удаляете в любом случае. Peter Thorin 15 лет назад 1
Почему в первую очередь использовать gvim? Как долго вы будете оставаться случайным пользователем? innaM 15 лет назад 1
Я не думаю, что это такая плохая идея. Люди привыкли к Ctrl + X и т. Д., И есть миллиарды других причин использовать vim. Ludwig Weinzierl 15 лет назад 2