Wie funktioniert das Ausschneiden / Kopieren / Einfügen in GVim unter Ubuntu mit Strg + X, Strg + C, Strg + V?

54

Standardmäßig sind die Verknüpfungen zum Ausschneiden / Kopieren / Einfügen in GVim unter Ubuntu:

 Schneiden Sie "+ x
 Kopieren "+ y
 Einfügen "+ gP

Ich möchte in GVim Tastenkombinationen verwenden, wie ich sie in Firefox und anderen Gnome-Anwendungen verwende. Wie konfiguriere ich GVim so, dass es wie andere Gnome-Apps funktioniert?

pcapademic
quelle
Um Konflikte mit vim-Standardtasten zu vermeiden, wählen Sie Strg + Umschalt + Taste anstelle von Strg + Taste
Sheharyar

Antworten:

50

Fügen Sie Ihrem _vimrcoder die folgenden Zeilen hinzu.vimrc

source $VIMRUNTIME/mswin.vim
behave mswin

Beachten Sie jedoch, dass der visuelle Modus dann STRG-Q anstelle von STRG-V ist.

Für eine Übersicht, was mswin.vim tut, sehen Sie den mswin.vim-Quellcode . Es ist sehr gut kommentiert und wenn ein Befehl unklar ist, können Sie ihn einfach in der Hilfe von vim nachschlagen.

Hier ist eine kurze Übersicht, die aus der Quelle zusammengestellt wurde:

  • Rücktaste und Cursortasten springen zur vorherigen / nächsten Zeile
  • STRG-X und UMSCHALT-ENTF sind ausgeschnitten
  • STRG-C und STRG-Einfügen sind Kopieren
  • STRG-V und UMSCHALT-Einfügen sind Einfügen
  • Verwenden Sie STRG-Q, um das zu tun, was STRG-V verwendet hat
  • Verwenden Sie STRG-S zum Speichern, auch im Einfügemodus
  • STRG-Z ist Undo; allerdings nicht in cmdline
  • STRG-Y ist Wiederholen (obwohl nicht wiederholen); allerdings nicht in cmdline
  • Alt-Leertaste ist das Systemmenü
  • STRG-A ist Alles auswählen
  • STRG-Tab ist Nächstes Fenster
  • STRG-F4 ist Fenster schließen

Auf Wunsch von Nippysaurus: Ich füge folgendes in mein .gvimrc ein, um Strg-V neben Einfügen im Menü anzuzeigen:

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

Ich habe es nicht gründlich getestet, nur eine kurze Überprüfung, ob es das getan hat, was ich erwartet hatte. Funktioniert für mich, hoffe es funktioniert für dich ;-)

Ludwig Weinzierl
quelle
1
Ich verstehe und schätze die Punkte, die Manni und Peter Thorin in den Kommentaren von Peter Thorins Antwort gemacht haben. Meiner Meinung nach habe ich GVim unter Windows als Notepad-Ersatz gelernt und möchte weniger Reibung. Danke Ludwig
pcapademic
2
Gibt es eine Möglichkeit, den Kontextmenütext so zu ändern, dass er den neuen Kontexttasten entspricht?
Nippysaurus
@Nippysaurus: Ich habe es mit Menutrans in .gvimrc versucht. Ich habe es nicht zum Laufen gebracht, werde es mir am Abend noch einmal ansehen ...
Ludwig Weinzierl
2
Es sieht aus wie mswin.vimbereits ein behave mswinAnruf hat. Muß ich das nochmal so nennen _vimrc?
Nathan Friend
1
@ NathanFriend Ditto. Es funktioniert auch ohne behave mswin, zumindest auf meinem System mit Vim 8.0.
Mikel
46

Wenn Sie möchten, dass Ausschneiden / Kopieren / Einfügen mit den "Standard" -Hotkeys funktioniert, aber keine der anderen Konfigurationsoptionen in gvim ändern möchten, fügen Sie Folgendes hinzu ~/.vimrc.

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

Einfügen funktioniert nur im visuellen und Einfügemodus, sodass Sie sich nicht um den Konflikt mit Strg-V und dem blockweisen visuellen Modus kümmern müssen. Dies ist kein Problem, da Sie durch Kopieren und Ausschneiden in den Einfügemodus versetzt und anschließend sofort eingefügt werden können. Wenn Sie es ausprobieren, werden Sie feststellen, dass es sich ganz natürlich anfühlt.

Ich habe diese Konfiguration nach mehreren Optimierungsversuchen gefunden und denke, sie ist jetzt "perfekt". Wenn Sie mit Ihrer aktuellen Copy / Paste-Konfiguration sogar ein wenig unzufrieden sind, probieren Sie dies aus und ich wette, Sie werden es lieben.

Cogan
quelle
Genau das habe ich gesucht. Vielen Dank.
Sean McCleary
2
Nach einigen Experimenten und Anhörung der :help i_ctrl-r_ctrl-o, entschied ich mich zu ändern , imap <C-v> <ESC>"+pazu imap <C-v> <C-r><C-o>+; Dies funktioniert wie erwartet, wenn sich der Cursor links vom ersten Zeichen einer Zeile befindet und das "Standard" -Verhalten am ehesten imitiert.
Holger
Ich denke darüber <C-v>nach, auf Shift + Insert umzusteigen, was auf meinem Rechner anscheinend viel schneller ist. Aber mitten in einem Projekt und keine Lust, vim jetzt neu zu starten. Just sharing
Will
You are awesome =)
Yugal Jindle
9

Wenn Sie das normale Verhalten von vim beibehalten möchten, die Systemzwischenablage jedoch weniger umständlich verwenden möchten, lesen Sie Zugreifen auf die Systemzwischenablage . Wenn Sie die Zwischenablage als Standard - Puffer verwenden möchten gvim (so dass jeder x, y, pusw. Befehl die Zwischenablage verwendet) , dann fügen Sie die folgende Zeile in die vimrc:

set clipboard=unnamed

Ich persönlich benutze die Puffer viel mehr innerhalb von vim als zwischen vim und dem System. Daher hätte ich lieber eine etwas umständlichere Verknüpfung als die ständig überfüllte System-Zwischenablage. Aber es ist schön, dass die Option für diejenigen da ist, die es vorziehen würden.

jtb
quelle
2

Ich denke, Sie können dies mit dem Befehl: imap hinzufügen (probierte es nur mit Strg + X in Windows, was funktionierte, drücken von Strg + C scheint den Befehl abzubrechen, so dass Sie es möglicherweise in vimrc tun müssen).

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

Wenn Sie es zu Ihrem ~ / .vimrc hinzufügen, müssen Sie nur das: vor imap entfernen.

imap fügt die Bindungen nur im Einfügemodus hinzu, daher möchten Sie sie möglicherweise nur in eine Karte oder etwas anderes ändern. In :help mapmodeerfahren Sie mehr über das Zuordnen und Aufheben von Zuordnungen.

Viel Glück!

Peter Thorin
quelle
1
Dies sollte ein wenig ausreichen. Aber es ist eine schlechte Idee, das zu tun. Ctrl-V sollte in den visuellen Modus wechseln, Ctrl-C bricht alle Befehle ab. Und der Trick funktioniert nur auf Ihrem System. Auf einer anderen Maschine sind Sie verloren.
22.
1
Ich bin zum Teil damit einverstanden, dass es eine schlechte Idee ist, ich würde es nicht selbst verwenden wollen, aber wenn Sie nur ein gelegentlicher Benutzer von gvim sind, dann würden Sie wahrscheinlich die Bindungen, die Sie sowieso entfernen, nicht verpassen.
Peter Thorin
1
Warum gvim überhaupt verwenden? Wie lange bleiben Sie ein gelegentlicher Benutzer?
22.
2
Ich denke nicht, dass es so eine schlechte Idee ist. Die Leute sind an Strg + X usw. gewöhnt und es gibt Milliarden anderer Gründe, vim zu benutzen.
Ludwig Weinzierl