2016-11-01 3 views
1

Warum frage ich:VIM Bewegung in Insert-Modus

I-Code einzugeben verwenden zum Beispiel if(condition){}, in folgenden Schritt:

  1. if(){ }
  2. bewegt den Cursor zurück in () Zustand zu beenden
  3. Bewegen Sie den Cursor in {}, um die Aufgabe
hinzuzufügen 0

Ich habe Traversing text in Insert mode gelesen, und ich schließe mich Follow-Code in $HOME/.vimrc

" key mapping 
inoremap <A-h> <C-o>h 
inoremap <A-j> <C-o>j 
inoremap <A-k> <C-o>k 
inoremap <A-l> <C-o>l 

jetzt kann ich Alt + h und Alt + l, aber der Rest von zwei neuen Karte verwenden ich teste keine Wirkung hatte, dann: Ctrl +oj und Ctrl + k, beide arbeiten.

  1. Gibt es einen Fehler, wenn ich die Tastenbelegung mache?
  2. Wie überprüfe ich, ob mein neues Mapping in Konflikt mit anderen steht oder nicht?

UPDATE: 2./Nov/2016


  1. ich eine neue Tastatur mit Cursor-Taste kaufen ...
  2. installieren auto pair

Allerdings fand ich eine interessante Sache, wenn ich in Linux, es ist ok für alle oben genannten Mapping nur außer Alt + h, weil es im Konflikt mit dem Hilfemenü des aktuellen Hilfeprogramms von ubuntu stand. Ich treffe nur mein Problem, wenn ich ssh über MobaXerm Anwendung verwende.

+0

Warum in der Hölle geht ich nicht einfach mit den Cursortasten - Insert-Modus in der neuen Zeile unter
O starten? – romainl

+0

Verwenden Sie GVim oder die Befehlszeile von einem Terminal- oder Terminalemulator? –

+0

@romainl becase meine Tastatur hat keine Cursortasten .... –

Antwort

4

Ich habe Traversing text in Insert mode gelesen, und ich füge hinzu Folge Code in my $ HOME/.vimrc

Sie sollten die accepted answer for that answer sorgfältig lesen, besonders dieser Teil:

Der richtige Weg ist zu drücken Esc, gehen Sie, wo Sie eine kleine Korrektur tun, beheben Sie es, gehen Sie zurück und behalten Sie bearbeiten Ing. Es ist effektiv , weil Vim viel mehr Bewegungen als üblich Charakter vorwärts/rückwärts/oben/unten hat.Nachdem Sie mehr von ihnen erfahren haben, wird dies produktiver sein.

Die Antwort, wo Sie die Zuordnungen entlehnt erwähnt auch dies:

Ungeachtet was Pavel Shved sagte -, dass es wahrscheinlich mehr ratsam, Flüchten Insert-Modus zu gewöhnen - hier ist ein Beispiel gesetzt von Zuordnungen für die schnelle Navigation innerhalb Insert-Modus: (...)

Wie auch immer, wenn Sie das Problem mit dem Alt + verstehen wollen j und Alt + k sollten Sie zuerst sicherstellen, dass das Mapping in Vim noch definiert ist (sie könnten gelöscht oder überschrieben worden sein). Sie können :imap verwenden, um sie aufzulisten; diese:

:imap <A-j> 
:imap <A-k> 

Wenn Ihre Zuordnungen korrekt jeder listet sein Ziel definiert sind (z.B .: * <C-O>j). In diesem Fall sollten Sie überprüfen, ob Vim diese Kombinationen korrekt empfängt. versuchen dann im Text (Insert-Modus) Einfügen mithilfe von Ctrl +V (oder Ctrl +Q wenn man das aus der Zwischenablage einzufügen abgebildet) und die Alt Kombinationen. Weitere Details erhalten Sie unter Vim FAQ "I am not able to create a mapping for the key. What is wrong?".

bearbeiten:


Wenn das Problem in erster Linie mit schließenden Klammer verbunden ist, dann gibt es mehrere andere Optionen, die ich glaube, die mehr praktisch sind. Ich schnelle Internet-Suche ergab folgendes:

+0

Aber wenn ich programmiere, wenn ich eingeben möchte (Bedingung), möchte ich immer zuerst if() eingeben und dann wieder auf Bedingung –

+0

@HowChen toll, dass du in diesem Kommentar einen tatsächlichen Anwendungsfall gepostet hast!Ich würde empfehlen, ein Makro zu schreiben oder ein bisschen nach "vim if parens" oder so etwas zu googeln (dabei habe ich https://github.com/jiangmiao/auto-pairs gefunden, was genau das ist, was Sie wollen, oder zumindest hoffentlich inspirierend). – chelmertz

0

Ich denke auch, dass Sie Vim missbrauchen.

Ich weiß, dass die Frage über etwas anderes war, aber hier ist meine Idee, wie Sie in vim bewegen sollten.

Sie haben 3 Schritten:
1. Legen Sie einige leere Schleife/Zustand
2. Legen Sie eine Bedingung
3. Setzen Sie einen Körper der Schleife/Zustand

Diese drei Änderungen darstellen sollten, die jeweils getrennt indem der Einfügemodus verlassen wird.

es richtig machen können Sie Schritt 1 ausführen und dann Einfügen-Modus verlassen, indem Sie entweder Esc oder Ctrl +[ (mit dem zweiten Ein- die auch vim ist Default- Sie müssen nicht erreichen für Escape-Taste).

Dann sollten Sie an den Ort navigieren, in dem Sie Ihre Änderung mit h einfügen möchten, j, k oder l und folgen ihm durch Insert-Modus zu starten.

Es gibt mehr Möglichkeiten, Insert-Modus zu starten:

I - Insert-Modus am Anfang der Zeile beginnen (Weglassen Leerzeichen am Anfang)
i - Insert-Modus starten, bevor die Cursor
a - Einfügemodus nach dem Cursor starten
A - am Ende der Leitung Einfügemodus beginnen
s - ändern Sie das Zeichen unter dem Cursor (kann mit visuellen Modus kombiniert werden)
c - Text unter dem Cursor ändern, bis Ort, den Sie mit der Bewegung angegeben haben (z. ce - Änderung bis zum Ende des Wortes, cl - das gleiche wie "s")
C - ändert alles vom Cursor bis zum Ende der Zeile
S - ersetzen Sie die ganze Linie
o - Start Insert-Modus in der neuen Zeile über