Gibt es im Einfügemodus in Vim eine Möglichkeit, den Text zu durchlaufen und einige Zeichen vorwärts und rückwärts zu bewegen, außer mit den Pfeiltasten?
Wenn ich drücke h, j, kund lwährend im Insert - Modus werden die tatsächlichen Zeichen auf dem Bildschirm gedruckt , anstatt durch den Text zu bewegen.
Die Art und Weise, wie ich es im Moment mache, ist, auf Ctrl+ [( Esc) zurückzugreifen und dann den Text zu durchlaufen; aber das ist natürlich nicht produktiv.
imap jk <Esc>
) zuordnen, damit Sie Ihren Schwung nicht unterbrechen und über Ihre Tastatur greifen müssen, um die Taste zu drücken.<ESC>
) zugeordnetkj
stattjk
; mein Freund Dijkstra ist schuld!jk
undkj
, also drücke ich es einfach wie einen großen Knopf mit zwei Fingern und es spielt keine Rolle, in welcher Reihenfolge ich wieder normal bin.Antworten:
Sie scheinen vim zu missbrauchen, aber das liegt wahrscheinlich daran, dass Sie nicht sehr vertraut damit sind.
Der richtige Weg ist zu drücken Esc, dorthin zu gehen, wo Sie eine kleine Korrektur vornehmen möchten, sie zu reparieren, zurück zu gehen und weiter zu bearbeiten. Es ist effektiv, weil Vim viel mehr Bewegungen als der übliche Charakter vorwärts / rückwärts / auf / ab hat. Nachdem Sie mehr davon gelernt haben, wird dies produktiver.
Hier sind einige Anwendungsfälle:
Wenn Sie jedoch weiterhin kleine Textdurchläufe durchführen möchten, ohne den Einfügemodus zu verlassen, befolgen Sie die Anweisungen von rson und verwenden Sie Ctrl+ O. Mit dem ersten Beispiel, das ich oben erwähnt habe, werden Sie mit Ctrl+ OFfzu einem vorherigen "f" -Zeichen verschoben und im Einfügemodus belassen.
quelle
Ctrl+o
einen einzelnen Befehl im normalen Modus ausgeben können. Dies kann Sie manchmal dahin bringen, wo Sie sein möchten, insbesondere in Kombination mit den Bewegungsbefehlen t / T und f / F.:h ins-special-keys
.ctrl-h
: Rücktaste ,ctrl-w
: Wort löschen ,ctrl-u
: bis zum Zeilenanfang löschen ,alt-b
: ein Wort zurückgehen.Verwenden Sie im Einfügemodus , um für nur einen Befehl CtrlOin den normalen Modus zu wechseln :
Dies ist wahrscheinlich der einfachste Weg, um das zu tun, was Sie wollen, und leicht zu merken.
Andere sehr nützliche Steuertasten im Einfügemodus:
Dadurch werden viele verschwenderische Schalter zurück in den normalen Modus eliminiert.
quelle
Einfügemodus
Bewegung
hjkl
Ungeachtet dessen, was Pavel Shved gesagt hat - dass es wahrscheinlich ratsamer ist, sich an den EscAffen-Einfügemodus zu gewöhnen -, ist hier ein Beispielsatz von Zuordnungen für die schnelle Navigation im Einfügemodus:
Dadurch wird Alt+ him Einfügemodus ein Zeichen nach links, Alt+ nach junten usw. analog zum hjklNormalmodus verschoben.
Sie müssen diesen Code in Ihre vimrc-Datei kopieren, damit er bei jedem Start von vim geladen wird (Sie können ihn öffnen, indem Sie
:new $myvimrc
im normalen Modus beginnen).Alle Bewegungen im normalen Modus
Da die AltModifizierertaste standardmäßig nicht (auf etwas Wichtiges) abgebildet ist, können Sie auf die gleiche Weise andere (oder alle) Funktionen vom Normalmodus in den Einfügemodus ziehen. Beispiel:
Mit Alt+ zum Anfang des aktuellen Wortes wechseln b:
(Andere Verwendungen Altim Einfügemodus)
Es ist erwähnenswert, dass der AltSchlüssel möglicherweise besser verwendet werden kann als das Replizieren des Verhaltens im normalen Modus: Hier sind beispielsweise Zuordnungen zum Kopieren des Teils aus der aktuellen Spalte bis zum Zeilenende aus einer benachbarten Zeile:
(Ich habe
\
Zeilenfortsetzung und Einrückung verwendet, um die Übersichtlichkeit zu erhöhen. Die Befehle werden so interpretiert, als ob sie in eine einzelne Zeile geschrieben wären.)Eingebaute Hotkeys zum Bearbeiten
(Es gibt keine nennenswerten integrierten Hotkeys für Bewegungen im Einfügemodus.)
Referenz:
:help insert-index
Befehlszeilenmodus
Diese Zuordnung stellt die oberen Alt+ hjkl Bewegungen in der Befehlszeile zur Verfügung:
Alternativ fügen diese Zuordnungen die Bewegungen auf einmal sowohl zum Einfügemodus als auch zum Befehlszeilenmodus hinzu :
Die Zuordnungsbefehle zum Ziehen von Befehlen im Normalmodus in den Befehlszeilenmodus unterscheiden sich ein wenig von den Zuordnungsbefehlen für den Einfügemodus (da im Befehlszeilenmodus das Einfügemodus Ctrl+ fehlt O):
Eingebaute Hotkeys zum Bewegen und Bearbeiten
Referenz:
:help ex-edit-index
quelle
Alt
Schlüssel?Wenn Sie ein Vim-Purist sind, überspringen Sie das Lesen dieser Antwort. OTOH, wenn Sie neu in Vim sind und nach ein paar hilfreichen Tipps suchen, die Sie in den vielen hundert Vim-Tutorials und -Blogs nicht finden, lesen Sie weiter ... :-)
Ein paar unorthodoxe (vim) Wege
Es ist 2014, und als jemand, der kürzlich zurückgekehrt ist,
vim
kann ich einige, möglicherweise konträre Standpunkte und Tipps anbieten.Verwenden Sie Umschalt + links oder Umschalt + rechts, um Wörter zu durchlaufen
Während Wiederholung in vim ein mächtiges Konzept ist, finde ich es (persönlich) seltsam, dass ich entweder gezwungen bin, zu zählen (Linien, Zeichen, Wörter usw.) oder Vermutungen anzustellen. Mein Gehirn arbeitet normalerweise wie "Ich möchte den Cursor dort " und nicht wie "Ich möchte den Cursor _5_Wörter_zu_der_Links_". Wenn ich den Cursor schnell bewegen und visuell beobachten kann, wo sich die Einfügemarke auf diese Weise befindet, kann ich mich auf das konzentrieren, was ich bearbeite, anstatt zählen zu müssen, wie viele Sprünge ich machen muss, um dorthin zu gelangen, wo ich bearbeiten muss.
Schalten Sie den Mausmodus ein, verwenden Sie das Mausrad und klicken Sie
... um durch große Textkörper zu navigieren.
Die meisten (alle) modernen Computer verfügen über ein Touchpad , das eng in die Tastatur integriert ist (z. B. MacBooks). Industriedesigner haben viele Mannjahre damit verbracht, diese Designs so zu optimieren, dass das alte Problem, die Hand von der Tastatur wegbewegen zu müssen, kein echtes Problem mehr darstellt. Okay, wenn Sie an eine Maus gewöhnt sind und nicht gerne wechseln, aber für alle, die neu in Vim sind (wie diejenigen, die diesen Beitrag über eine Suche finden könnten), sollte dies kein großes Problem sein.
Als Bonus versetzt Sie Click + Drag in den visuellen Modus
Wenn die Maus aktiviert ist, wird durch Klicken und Ziehen in den visuellen Modus gewechselt und ein Bereich zum Ziehen markiert.
Und benutze das Scrollrad
Das Scrollen mit der Maus (Rad) und das Klicken zum Positionieren des Cursors (duh) funktionieren einfach. Weitere Informationen hierzu finden Sie unter http://usevim.com/2012/05/16/mouse/ .
Und so...
Dies sind die moderneren Navigationsmethoden (mit Maus, Scrollrad usw.) in vim, die je nach Präferenz für die Eingabe gleichermaßen effektiv sind.
HTH
quelle
Viele Leute in der Vim-Community argumentieren, dass Sie nicht im Einfügemodus navigieren sollten, sondern dass dies nicht der Vim-Weg ist. Ich denke, dies ist ein falsches Gefühl, das man beim Übergang von Standard-Editoren zu Vim gelernt hat.
Vim ist am leistungsfähigsten, wenn Sie seine Werkzeuge verwenden, um atomare, wiederholbare Aktionen oder Fundstücke zu erstellen.
Es ist in Ordnung, im Einfügemodus zu navigieren, wenn Sie einen Fehler beheben, den Sie in derselben Einfügesitzung gemacht haben. Sie sollten nicht außerhalb des von Ihnen geänderten Textbereichs navigieren.
Wenn Sie bei der Eingabe von Text einen Fehler machen und den Einfügemodus verlassen, um ihn zu beheben, können Sie die beabsichtigte Aktion
.
nicht wiederholen. Die Korrektur wird wiederholt.Vim unterstützt viele Navigationstasten im Einfügemodus. Natürlich gibt es die Pfeiltasten Home und End, aber es gibt auch viele andere Verknüpfungen. Siehe
:h ins-special-keys
.quelle
In GVim können Sie die Maus verwenden. Aber ehrlich gesagt, was ist falsch daran, die Pfeiltasten zu verwenden? Es gibt einen Grund, warum sie auf einer Tastatur sitzen.
quelle
Warum nicht einige Tasten zuordnen, um im Einfügemodus etwas besser navigieren zu können?
Wenn Sie umgehen können, dass der Meta-Schlüssel in Ihrem Terminal funktioniert, können Sie den Emacs-Modus noch besser verspotten. Die Navigation im Normalmodus ist viel besser, aber für kürzere Bewegungen hilft es, im Einfügemodus zu bleiben.
Für längere Sprünge bevorzuge ich die folgende Standardübersetzung:
Dies wechselt in den Normalmodus und geht ein Wort zurück
quelle
Ich glaube Homeund End(und PageUp/ PageDn) funktionieren auch normal im Einfügemodus, aber abgesehen davon glaube ich nicht, dass andere Standardschlüssel für die Textdurchquerung definiert sind.
quelle
Sorry, aber vim funktioniert nicht so.
Sie sollten in den "normalen" Modus wechseln, navigieren und dann zurückgehen, um erneut einzufügen.
quelle
Sie können Zuordnungen erstellen, die im Einfügemodus funktionieren. Der Weg dazu führt über eine Inoremap. Beachten Sie das 'i' am Anfang des Befehls (noremap ist nützlich, um Kollisionen mit Schlüsselkarten zu vermeiden). Die Folge ist 'n' für den 'normalen' Modus. Sie können vermuten, was vim für "normal" hält;)
Sie möchten jedoch wirklich im normalen Modus im Text navigieren. Vim ist in dieser Art von Dingen super und all diese Leistung ist im normalen Modus verfügbar. Vim bietet bereits einfache Möglichkeiten, um vom normalen Modus in den Einfügemodus zu gelangen (z. B. i, I, a, A, o, O). Der Trick besteht darin, den normalen Modus zu vereinfachen. Der Weg, dies zu tun, besteht darin, die Flucht einem bequemeren Schlüssel zuzuordnen. Sie benötigen jedoch eine, die nicht mit Ihrer normalen Eingabe in Konflikt steht. Ich benutze:
Da jj (das sind 2 j, die schnell nacheinander eingegeben werden) nicht in meinem Wortschatz zu erscheinen scheint. Andere werden neu zuordnen, wo es bequem ist.
Die andere wesentliche Änderung, die ich vornehme, ist das Umschalten der Tasten CAPSLOCK und CONTROL auf meiner Tastatur (unter Verwendung der Tastaturkonfiguration des Host-Computers), da ich CAPSLOCK fast nie verwende und die große, schöne Taste genau dort ist, wo ich sie haben möchte. (Dies ist bei Emacs-Benutzern üblich. Der Nachteil ist, dass Sie sich auf einer "nicht fixierten" Tastatur befinden! Aaarggh!)
Sobald Sie CAPSLOCK neu zugeordnet haben, können Sie die folgenden Neuzuordnungen im Einfügemodus bequem verwenden:
Wenn Sie bedenken, dass einige Schlüssel bereits im Einfügemodus zugeordnet sind (Rückwärts-Kill-Wort ist standardmäßig Cw (Strg-W)), haben Sie möglicherweise bereits die gewünschten Bindungen. Das heißt, ich bevorzuge Ch so in meiner .vimrc, die ich habe ::
ABER du willst wahrscheinlich den gleichen Muskelgedächtniskrampf im normalen Modus, also ordne ich Ch auch als:
(d) elete (b) ackwards erreicht dasselbe mit demselben Tastenakkord. Diese Art der schnellen Bearbeitung ist eine, die ich in der Praxis für Tippfehler nützlich finde. Aber bleiben Sie beim normalen Modus, um sich im Text zu bewegen und alles andere als das vorherige Wort zu töten. Sobald Sie sich angewöhnt haben, den Modus zu ändern (natürlich mithilfe einer Neuzuordnung), ist dies viel effizienter als die Neuzuordnung des Einfügemodus.
quelle
Sie können
imap
jede Taste im Einfügemodus einer der Cursortasten zuordnen. Wie so:Jetzt funktioniert h wie im normalen Modus und bewegt den Cursor. (Die Zuordnung von h auf diese Weise ist offensichtlich eine schlechte Wahl.)
Trotzdem denke ich nicht, dass die Standardmethode zum Bewegen von Text mit VIM "nicht produktiv" ist. Es gibt viele sehr leistungsfähige Möglichkeiten, den Text im normalen Modus zu durchlaufen (z. B. mit w und b oder / und? Oder f und F usw.).
quelle
Für einige häufig verwendete Bewegungen und Aktionen habe ich die folgenden Zuordnungen definiert. Dies erspart einen Tastenanschlag im Vergleich zur STRG + O-Kombination und da ich sie häufig benötige, zahlen sie sich auf lange Sicht aus.
quelle