wake-up-neo.com

Was sind die am häufigsten verwendeten vim-Befehle / Tastendrücke?

Ich bin ein Ruby Programmierer, der versucht, von Textmate auf MacVim umzuschalten, und ich habe Probleme, die gigantischen Listen von Dingen durchzublättern, die Sie in VIM tun können und alle Tastendrücke für sie. Ich habe es satt zu hören "Sie können 'I' zum Einfügen von Text oder 'a' zum Anhängen von Text nach dem Zeichen oder 'A' zum Anhängen von Text am Ende der Zeile verwenden, oder ... "Ich kann mir nicht vorstellen, dass jeder alle 20 verschiedenen Tastendrücke verwendet, um durch Text zu navigieren, 10 oder so Tasten, um mit dem Hinzufügen von Text zu beginnen, und 18 Möglichkeiten, um einen inneren Block visuell auszuwählen. Oder doch?

Mein idealer Spickzettel wären die 30-40 am häufigsten verwendeten Tastendrücke oder Befehle, die jeder täglich zum Schreiben von Code verwendet, zusammen mit den absolut wesentlichen Plugins, die Rubyisten täglich verwenden, und den 10 am häufigsten verwendeten Befehlen für sie. In der Theorie, wenn ich das habe und anfange, mich mit VIM wie mit Textmate auszukennen, , dann kann ich fange an, die tausenden anderen VIM Befehle zu lernen, die mich mehr effizienter machen.

Oder lerne ich VIM den falschen Weg insgesamt?

100
Clinton Judy

Hier ist ein Tippblatt, das ich einmal geschrieben habe, mit den Befehlen, die ich tatsächlich regelmäßig verwende:

Verweise

Allgemeines

  • Fast allen Befehlen kann eine Nummer für eine Wiederholungszählung vorangestellt werden. z.B. 5dd löscht 5 Zeilen
  • Mit <Esc> verlassen Sie einen beliebigen Modus und kehren in den Befehlsmodus zurück
  • Befehle, denen vorangestellt ist: werden in der Befehlszeile am unteren Bildschirmrand ausgeführt
  • : help hilft bei jedem Befehl

Navigation

  • Cursorbewegung: ← h j k l →
  • Mit Worten:
    • w nächstes Wort (durch Interpunktion); [~ # ~] w [~ # ~] nächstes Wort (durch Leerzeichen)
    • b zurück Wort (durch Interpunktion); [~ # ~] b [~ # ~] zurück Word (durch Leerzeichen)
    • e end Word (durch Interpunktion); [~ # ~] e [~ # ~] end Word (durch Leerzeichen)
  • Mit der Linie:
    • 0 Zeilenanfang; ^ erstes Leerzeichen
    • $ Zeilenende
  • Nach Absatz:
    • { vorherige Leerzeile; } nächste leere Zeile
  • Nach Datei:
    • gg Dateianfang; [~ # ~] g [~ # ~] Dateiende
    • 123G gehe zu einer bestimmten Zeilennummer
  • Nach Markierung:
    • mx setze Marke x; 'x gehe zu x
    • '. gehe zur Position der letzten Bearbeitung
    • '' gehe zurück zum letzten Punkt vor dem Sprung
  • Scrollen:
    • ^ F Vollbild vorwärts; ^ B rückwärts im Vollbildmodus
    • ^ D halber Bildschirm; ^ U halber Bildschirm
    • ^ E eine Zeile nach oben scrollen; ^ Y eine Zeile nach unten scrollen
    • zz mittlere Cursorlinie

Bearbeitung

  • u rückgängig machen; ^ R wiederholen
  • . Wiederholen Sie den letzten Bearbeitungsbefehl

Einfügen

Alle Einfügebefehle werden mit <Esc> beendet, um in den Befehlsmodus zurückzukehren.

  • i füge Text am Cursor ein; [~ # ~] i [~ # ~] füge Text am Zeilenanfang ein
  • ein Text nach dem Cursor anhängen; [~ # ~] ein [~ # ~] Text nach dem Zeilenende anhängen
  • o neue Zeile darunter öffnen; [~ # ~] o [~ # ~] Neue Zeile oben öffnen

Ändern

Alle Änderungsbefehle außer r und [~ # ~] r [~ # ~] werden mit <Esc> beendet, um in den Befehlsmodus zurückzukehren.

  • r einzelnes Zeichen ersetzen; [~ # ~] r [~ # ~] ersetzt mehrere Zeichen
  • s ändert ein einzelnes Zeichen
  • cw Wort ändern; [~ # ~] c [~ # ~] zum Zeilenende wechseln; cc Ändert die gesamte Zeile
  • c <motion> ändert den Text in Bewegungsrichtung
  • ci ( Änderung in Klammern (siehe Textobjektauswahl für weitere Beispiele)

Löschen

  • x Zeichen löschen
  • dw Wort löschen; [~ # ~] d [~ # ~] zum Zeilenende löschen; dd ganze Zeile löschen
  • d <motion> löscht in Bewegungsrichtung

Ausschneiden und Einfügen

  • yy kopiere die Zeile in den Einfügepuffer; dd schneide die Linie in den Paste Buffer
  • p Puffer unterhalb der Cursorzeile einfügen; [~ # ~] p [~ # ~] Puffer über der Cursorzeile einfügen
  • xp Vertausche zwei Zeichen ( x , um ein Zeichen zu löschen, dann p um es nach der Cursorposition zurückzusetzen)

Blöcke

  • v visueller Blockstrom; [~ # ~] v [~ # ~] visuelle Blockzeile; ^ V visuelle Blockspalte
    • die meisten Bewegungsbefehle erweitern den Block auf die neue Cursorposition
    • o bewegt den Cursor an das andere Ende des Blocks
  • d oder x Block in Pastenpuffer ausschneiden
  • y Block in den Einfügepuffer kopieren
  • > Block einrücken; < nicht einrückender Block
  • gv wählt den letzten visuellen Block erneut aus

Global

  • :% s/foo/bar/g Ersatz alle Vorkommen von "foo" bis "bar"
    • % ist ein Bereich , das jede Zeile in der Datei angibt
    • / g ist ein Flag, das alle Vorkommen in einer Zeile ändert, anstatt nur das erste

Suchen

  • / vorwärts suchen; ? rückwärts suchen
  • * vorwärts unter dem Cursor nach Word suchen; # sucht rückwärts nach Word unter dem Cursor
  • n nächstes Spiel in die gleiche Richtung; [~ # ~] n [~ # ~] nächstes Spiel in die entgegengesetzte Richtung
  • fx weiter zum nächsten Zeichen x; Fx rückwärts zum vorherigen Zeichen x
  • ; bewegen Sie sich erneut zu demselben Zeichen in derselben Richtung; , bewegen sich wieder zum selben Zeichen in entgegengesetzter Richtung

Dateien

  • : w schreibt die Datei auf die Festplatte
  • : w name Datei als name auf die Festplatte schreiben
  • [~ # ~] zz [~ # ~] Datei auf die Festplatte schreiben und beenden
  • : n eine neue Datei bearbeiten; : n! bearbeitet eine neue Datei, ohne die aktuellen Änderungen zu speichern
  • : q Bearbeitung einer Datei beenden; : q! Bearbeitung beenden, ohne Änderungen zu speichern
  • : e dieselbe Datei erneut bearbeiten (falls außerhalb von vim geändert)
  • : e. Verzeichnis Explorer

Windows

  • ^ Wn neues Fenster
  • ^ Wj bis zum nächsten Fenster; ^ Wk bis zum vorherigen Fenster
  • ^ W _ aktuelles Fenster maximieren; ^ W = alle Fenster gleich groß machen
  • ^ W + Fenstergröße erhöhen; ^ W - Fenstergröße verringern

Quellennavigation

  • % springe zu passender Klammer oder Sprachblock, wenn ein Sprachmodul geladen ist
  • Gd gehe zur Definition des lokalen Symbols unter dem Cursor; ^ O Rückkehr zur vorherigen Position
  • ^] zur Definition des globalen Symbols springen (erfordert tags Datei); ^ T Rückkehr zur vorherigen Position (beliebiger Positionsstapel beibehalten)
  • ^ N (im Einfügemodus) automatische Wortvervollständigung

Lokale Änderungen anzeigen

Vim verfügt über einige Funktionen, die das Hervorheben von Zeilen vereinfachen, die in der Versionsverwaltung gegenüber einer Basisversion geändert wurden. Ich habe ein kleines vim-Skript erstellt, das dies einfach macht: http://github.com/ghewgill/vim-scmdiff

275
Greg Hewgill

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Dies ist das Beste, was es jemals für das Erlernen von VIM gab.

19
Justin Thomas

Hier ist ein tolles Spickzettel für Vim :

enter image description here

11
RDL

Haben Sie das integrierte Tutorial von Vim durchgearbeitet? Wenn nicht, wechseln Sie zur Befehlszeile und geben Sie vimtutor ein. Es ist eine großartige Möglichkeit, die anfänglichen Befehle zu erlernen.

Vim verfügt über eine unglaubliche Flexibilität und Leistungsfähigkeit. Wenn Sie wie die meisten Vim-Benutzer sind, lernen Sie viele neue Befehle und vergessen alte. Lernen Sie sie dann erneut. Die eingebaute Hilfe ist gut und verdient es, regelmäßig zu stöbern, um neue Dinge zu lernen.

Es gibt mehrere gute FAQs und Cheatsheets für Vim im Internet. Ich würde empfehlen, nach vim + faq Und vim + cheatsheet Zu suchen. Cheat-Sheets.org # vim ist eine gute Quelle, genau wie Vim Tips Wiki .

4
the Tin Man

Was die meisten Leute tun, ist, mit den bloßen Grundlagen zu beginnen, wie vielleicht iywyy, und p. Sie können weiterhin die Pfeiltasten verwenden, um sich zu bewegen, Text mit der Maus auszuwählen, Menüs zu verwenden usw. Wenn Sie dann langsamer werden, suchen Sie schneller danach und fügen nach und nach mehr und mehr Befehle hinzu. Möglicherweise lernen Sie für eine Weile einen neuen Befehl pro Tag, der dann auf einen pro Woche ansteigt. Sie werden sich in einem Monat ziemlich produktiv fühlen. Nach einem Jahr haben Sie ein ziemlich solides Repertoire, und nach 2-3 Jahren werden Sie nicht einmal mehr bewusst darüber nachdenken, was Ihre Finger tippen, und es wird seltsam aussehen, wenn Sie es für jemanden formulieren müssen. 1993 habe ich vi gelernt und erhalte immer noch 2 oder 3 neue Befehle pro Jahr.

3
Karl Bielefeldt

@ Greg Hewgills Spickzettel ist sehr gut. Ich habe vor ein paar Monaten meinen Wechsel von TextMate begonnen. Jetzt bin ich so produktiv wie ich mit TM war und immer wieder erstaunt über Vims Kraft.

Hier ist wie ich gewechselt habe . Vielleicht kann es Ihnen nützlich sein.

Grosso modo, ich halte es nicht für eine gute Idee, radikal umzusteigen. Vim ist ganz anders und es ist am besten, progressiv vorzugehen.

Und um Ihre Unterfrage zu beantworten: Ja, ich benutze jeden Tag iaIAoO, um in den Einfügemodus zu wechseln. Es scheint auf den ersten Blick seltsam, aber man denkt nach einer Weile nicht mehr darüber nach.

Einige Befehle, die für alle programmierbezogenen Aufgaben unglaublich nützlich sind:

  • r und R, um Zeichen zu ersetzen
  • <C-a> und <C-x>zum Erhöhen und Verringern von Zahlen
  • cit zum Ändern des Inhalts eines HTML-Tags und seiner Varianten (cat, dit, dat, ci(, etc.)
  • <C-x><C-o> (zugeordnet zu ,,) zur Vervollständigung
  • visuelle Blockauswahl mit <C-v>
  • und so weiter…

Sobald Sie sich an die Vim-Methode gewöhnt haben, wird es sehr schwierig, beim Bearbeiten von Text in einem anderen Editor oder Textfeld nicht die ganze Zeit auf o oder x zu drücken.

3
romainl

Fügen Sie dies in Ihre .bashrc-Datei ein, um vim mit der zuletzt bearbeiteten Datei in der zuletzt bearbeiteten Zeile zu öffnen

alias vil="vim  +\"'\"0"
2
modesto

Ich kann mir nicht vorstellen, dass jeder alle 20 verschiedenen Tastendrücke verwendet, um durch Text zu navigieren, 10 oder mehr Tasten, um mit dem Hinzufügen von Text zu beginnen, und 18 Möglichkeiten, um einen inneren Block visuell auszuwählen. Oder tust du!?

Ich mache.

In der Theorie kann ich, sobald ich das habe und mich mit VIM wie mit Textmate auskenne, mit dem Erlernen Tausender anderer VIM - Befehle beginnen wird mich effizienter machen.

Das ist der richtige Weg. Beginnen Sie mit grundlegenden Befehlen und wählen Sie dann diejenigen aus, die Ihre Produktivität verbessern. Ich folge gerne diesem Blog , um Tipps zur Verbesserung meiner Produktivität mit vim zu erhalten.

2
Jeff

tuxfiles.org hat einen ziemlich guten Spickzettel. Ich denke, es gibt ein paar Punkte, um die Befehle zu lernen:

  • Lesen Sie den Spickzettel regelmäßig. Machen Sie sich keine Sorgen, wenn Sie alle verwenden oder sich an alle Schlüssel erinnern, sondern wissen Sie nur, dass der Befehl vorhanden ist. Schlagen Sie den Befehl nach und verwenden Sie ihn, wenn Sie feststellen, dass Sie etwas Wiederholendes tun.
  • Wenn Sie feststellen, dass Sie regelmäßig etwas tun (z. B. eine ganze Zeile nach einem bestimmten Zeichen löschen), d$), gehen Sie eine schnelle Google-Suche, um zu sehen, ob Sie einen Befehl dafür finden können.
  • Schreiben Sie Befehle auf, die Sie für nützlich halten, und bewahren Sie diese Liste dort auf, wo Sie sie sehen können, während Sie Ihren Code schreiben. Ich würde mich dagegen aussprechen, etwas auszudrucken, und Sie ermutigen, nur für wenige Befehle gleichzeitig Haftnotizen zu verwenden.
  • Beobachten Sie nach Möglichkeit andere Programmierer, die vim verwenden, und fragen Sie sie, welche Befehle sie verwenden, wenn Sie sehen, dass sie etwas Interessantes tun.

Neben diesen Tipps gibt es einige grundlegende Konzepte, die Sie verstehen sollten.

  • vim verwendet dasselbe Zeichen, um dieselbe Funktion darzustellen. Um beispielsweise eine Zeile nach einem Zeichen zu löschen, verwenden Sie d$. Um eine Zeile nach einem bestimmten Zeichen hervorzuheben, verwenden Sie v$. Beachten Sie also, dass $ zeigt an, dass Sie etwas bis zum Ende der Zeile tun, von wo aus sich Ihr Cursor gerade befindet.
  • u ist rückgängig und ctrl+r wird wiederholt.
  • wenn Sie eine Zahl vor einen Befehl setzen, wird dieser wiederholt ausgeführt. 3dd löscht die Zeile, auf der sich Ihr Cursor befindet, und die beiden folgenden Zeilen, ähnlich 3yy kopiert die Zeile, auf der sich der Cursor befindet, und die beiden folgenden Zeilen.
  • verstehe, wie man durch die Puffer navigiert. benutze :ls, um die Puffer aufzulisten, und :bn, :bp, um sie zu durchlaufen.
  • Lesen Sie das Tutorial in :help Dies ist wahrscheinlich der beste Weg, um 'die Seile zu lernen' und den Rest der Befehle, die Sie durch Verwendung lernen werden.
2
amccormack

Gehen Sie zu Efficient Editing with vim und erfahren Sie, was Sie für den Einstieg benötigen. Nicht alles auf dieser Seite ist für den Anfang unbedingt erforderlich. Wählen Sie also aus, was Sie möchten.

Verwenden Sie von dort aus vim für alles. "hjkl", "y" und "p" bringen Sie weit, auch wenn dies nicht der effizienteste Weg ist. Wenn Sie auf eine Aufgabe stoßen, für die Sie den magischen Schlüssel zur effizienten Ausführung (oder überhaupt nicht) kennen und die Sie mehrmals ausführen, schlagen Sie nach. Nach und nach wird es zur zweiten Natur.

Ich fand vim vor vielen Monden entmutigend (damals hatte es nicht das "m" am Ende), aber es dauerte nur ungefähr eine Woche, um effizient zu werden. Ich finde es immer noch den schnellsten Editor, mit dem man etwas erledigen kann.

1
mikestew