Як змусити вирізати / скопіювати / вставити в GVim на Ubuntu роботу з Ctrl + X, Ctrl + C, Ctrl + V?


54

За замовчуванням скорочення скорочення / копіювання / вставки в GVim в Ubuntu є:

 Вирізати "+ x
 Скопіюйте "+ у
 Вставити "+ gP

Я хотів би використовувати комбінації клавіш управління в GVim, як я використовую в Firefox та інших програмах gnome. Як налаштувати GVim так, як інші програми Gnome?


Щоб уникнути конфліктів із ключами vim за замовчуванням,
виберіть

Відповіді:


50

Додайте наступні рядки до свого _vimrcабо.vimrc

source $VIMRUNTIME/mswin.vim
behave mswin

Але будьте обережні, тоді візуальний режим - це CTRL-Q замість CTRL-V.

Для ознайомлення з тим, що означає mswin.vim, ви знайдете серверний код 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 є Redo (хоча не повторюється); не в cmdline, хоча
  • Alt-Space - це системне меню
  • CTRL-A - Вибрати все
  • CTRL-Tab - це наступне вікно
  • CTRL-F4 - це вікно Закрити

На прохання Nippysaurus: Я помітив у своєму .gvimrc наступне, щоб показати Ctrl-V окрім вставки в меню:

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

Я не перевіряв її ретельно, просто швидку перевірку, чи це те, що я очікував. Працює для мене, сподіваюся, це працює для вас ;-)


1
Я розумію і ціную те, що Манні та Пітер Торін висловили в коментарях до відповіді Пітера Торіна. Я вважаю, що я дізнався GVim у Windows, як заміну блокнота, і мені потрібно менше тертя. Дякую Людвігу
pcapademic

2
Чи є спосіб змінити текст ярлика меню відповідно до нових клавіш швидкого доступу?
Nippysaurus

@Nippysaurus: Я б спробував це з ментрунами в .gvimrc. Не примусили його працювати, по-новому подивитись на нього ввечері ...
Людвіг Вайнцерль

2
Схоже, mswin.vimвже є behave mswinдзвінок. Чи потрібно це знову закликати до себе _vimrc?
Друг Натана

1
@NathanFriend Ditto. Він працює навіть без behave mswin, принаймні, в моїй системі з Vim 8.0.
Мікель

46

Якщо ви хочете, щоб 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>+

Вставлення працює лише в режимі Visual і insert, тому вам не доведеться турбуватися про конфлікт із Ctrl-V і блочно-візуальним режимом. Це не проблема, оскільки Copy and Cut перевів вас у режим вставки, тож ви зможете одразу вставити їх. Якщо ви спробуєте це, то виявите, що це відчуває себе абсолютно природно.

Цю конфігурацію я придумав після декількох ітерацій налаштування, і зараз я думаю, що це "ідеально". Якщо ви навіть трохи незадоволені вашою поточною конфігурацією копіювання / вставки, спробуйте це, і я думаю, вам сподобається.


Це саме те, що я шукав. Дякую.
Шон МакКлері

2
Після деяких експериментів і консультацій :help i_ctrl-r_ctrl-o, я вирішив змінити imap <C-v> <ESC>"+paдо imap <C-v> <C-r><C-o>+; це працює так, як очікувалося, коли курсор ліворуч від першого символу рядка, і він найбільш близько імітує «стандартну» поведінку.
Холгер

Я замислююся про перехід <C-v>на зміну + вставка, яка, здається, набагато швидша на моїй машині. Але в середині проекту і не відчуваю, як зараз перезапустити vim. Просто обмін
Буде

Ви приголомшливі =)
Yugal Jindle

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, вам просто потрібно видалити: перед imp.

Imap додає прив'язки лише в режимі вставки, тому ви можете змінити їх на просто карту чи щось інше. Погляньте, :help mapmodeщоб дізнатися більше про перекомпонування та видалення матеріалів.

Удачі!


1
Це повинно зробити трохи хитрості. Але це погана ідея. Ctrl-V повинен перейти у візуальний режим, Ctrl-C скасувати будь-які команди. А трюк буде працювати лише у вашій системі; на іншій машині ви загубитесь.
innaM

1
Я частково погоджуюся з тим, що це погана ідея, я б не хотів сам її використовувати, але якщо ви лише випадковий користувач gvim, то ви, ймовірно, не пропустите прив’язки, які ви видалите.
Пітер Торін

1
Для чого в першу чергу використовувати gvim? Як довго ви будете залишатися випадковим користувачем?
innaM

2
Я не думаю, що це така погана ідея. Люди звикли до Ctrl + X тощо, і є мільярди інших причин використовувати vim.
Ludwig Weinzierl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.