358 Stimmen

Durchlaufen von Text im Einfügemodus

Während in Einfügemodus Gibt es in Vim irgendeine Möglichkeit, den Text zu durchlaufen, indem man einige Zeichen vorwärts und rückwärts bewegt, außer mit den Pfeiltasten?

Wenn ich drücke h , j , k y l im Einfügemodus werden die tatsächlichen Zeichen auf dem Bildschirm gedruckt, anstatt sich durch den Text zu bewegen.

Im Moment muss ich auf folgende Methoden zurückgreifen Ctrl + [ ( Esc ) und dann den Text zu durchlaufen; aber das ist natürlich nicht produktiv.

5voto

Alex Punkte 1548

Um die Navigation im Einfügemodus etwas zu verbessern, sollten Sie einige Tasten zuordnen.

imap <C-b> <Left>
imap <C-f> <Right>
imap <C-e> <End>
imap <C-a> <Home>
" <C-a> is used to repeat last entered text. Override it, if its not needed

Wenn Sie es schaffen, die Meta-Taste in Ihrem Terminal zum Laufen zu bringen, können Sie den Emacs-Modus noch besser nachahmen. Die Navigation in Normalbetrieb ist viel besser, aber für kürzere Bewegungen ist es hilfreich, im Einfügemodus zu bleiben.

Bei längeren Sprüngen bevorzuge ich die folgende Standardübersetzung:

<Meta-b>    maps to     <Esc><C-left>

Dies verlagert sich auf Normalbetrieb und geht ein Wort zurück

4voto

Erich Kitzmueller Punkte 35336

In GVim können Sie die Maus benutzen. Aber mal ehrlich, was ist falsch daran, die Pfeiltasten zu benutzen? Es gibt einen Grund, warum sie auf einer Tastatur sind.

2voto

Amber Punkte 473552

Je crois Home y End (und PageUp / PageDn ) funktionieren auch normal im Einfügemodus, aber abgesehen davon glaube ich nicht, dass es irgendwelche anderen Standardtasten für die Textüberquerung gibt.

1voto

Johan Punkte 19027

Tut mir leid, aber vim funktioniert so nicht.

Wechseln Sie in den "normalen" Modus, navigieren Sie und gehen Sie dann wieder zum Einfügen zurück.

1voto

pfries Punkte 1600

Sie können Zuordnungen erstellen, die im Einfügemodus funktionieren. Der Weg dazu führt über inoremap. Beachten Sie das 'i' am Anfang des Befehls (noremap ist nützlich, um Kollisionen mit Schlüsselzuordnungen zu vermeiden). Die logische Folge ist 'n' für den 'normalen' Modus. Sie können vermuten, was vim für 'normal' hält ;)

JEDOCH wollen Sie im "normalen" Modus durch den Text navigieren. Vim ist super in dieser Art von Dingen und die ganze Leistung ist im normalen Modus verfügbar. Vim bietet bereits einfache Möglichkeiten, vom normalen Modus in den Einfügemodus zu gelangen (z.B. i, I, a, A, o, O). Der Trick ist, es einfach zu machen, in den normalen Modus zu kommen. Das kann man erreichen, indem man die Escape-Taste auf eine bequemere Taste umbelegt. Aber Sie brauchen eine, die nicht mit Ihrem normalen Tippen kollidiert. Ich benutze:

inoremap jj <Esc>

Da jj (das sind zwei schnell hintereinander geschriebene j's) in meinem Wortschatz nicht vorkommt. Andere werden das Wort dorthin verschieben, wo es bequem ist.

Die andere wesentliche Änderung, die ich vornehme, ist das Vertauschen der CAPSLOCK- und CONTROL-Tasten auf meiner Tastatur (unter Verwendung der Tastaturkonfiguration des Host-Computers), da ich die CAPSLOCK-Taste fast nie benutze und sie diese große, schöne Taste genau dort hat, wo ich sie haben möchte. (Dies ist für Emacs-Benutzer üblich. Der Nachteil ist, dass man sich auf einer 'unfixierten' Tastatur wiederfindet! Aaarggh!)

Sobald Sie CAPSLOCK neu zugeordnet haben, können Sie bequem die folgenden Einfügemodus-Zuordnungen verwenden:

Wenn Sie bedenken, dass einige Tasten bereits im Einfügemodus belegt sind (das Rückwärts-Kill-Wort ist standardmäßig C-w (Control-w)), haben Sie vielleicht schon die gewünschten Bindungen. Abgesehen davon bevorzuge ich C-h, also habe ich in meiner .vimrc:

inoremap <C-h> <C-w>

ABER, Sie wollen wahrscheinlich den gleichen Muskelgedächtniskrampf im normalen Modus, also habe ich auch C-h als zugeordnet:

nnoremap <C-h> db

(d)elete (b)ackwards erreicht das Gleiche mit demselben Tonartakkord. Diese Art der schnellen Bearbeitung finde ich in der Praxis bei Tippfehlern nützlich. Bleiben Sie aber im normalen Modus, wenn Sie sich im Text bewegen und mehr als nur das vorherige Wort löschen wollen. Wenn Sie sich erst einmal angewöhnt haben, den Modus zu wechseln (natürlich mit einer Neuzuordnung), wird dies viel effizienter sein als die Neuzuordnung des Einfügemodus.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X