Welche Vim-Funktionen verwenden Sie?

2936
Frew Schmidt

Ich verbringe fast den ganzen Tag in Vim und bin sicher, dass viele von Ihnen auch dies tun. Welche Funktionen nutzen Sie, um Ihre tägliche Codierung noch besser zu machen? Eines, das ich verwende, ist gv, mit dem Sie den zuvor ausgewählten Text erneut auswählen können. Es ist großartig für die Wiederentdeckung!

13
Aus historischen Gründen ist hier ein Link zur ursprünglichen SO-Frage: http://stackoverflow.com/questions/95072/what-are-your-fourite-vim-tricks Jax vor 15 Jahren 1
Beachten Sie meinen Kommentar unten, und Sie müssen nicht einmal 'gv' eingeben. :) Nathan Long vor 13 Jahren 0

13 Antworten auf die Frage

9
karlgrz

% s / x / y / g

Dieser Befehl ersetzt alle Instanzen von x in der aktuellen Datei durch y . Dies ist im Grunde nur ein Suchen und Ersetzen, aber ich verwende es so oft, seit ich bei der Arbeit gelernt habe, dass es von unschätzbarem Wert ist.

/ Suchstring

dann n, um durch alle Instanzen der Suchzeichenfolge in der Datei zu navigieren . Sehr gut für manuelle Anpassungen, besonders wenn Sie keine Regel auf die gesamte Datei anwenden können.

Ich arbeite gerade daran, einen größeren Teil unserer Codebase bei der Arbeit umzuwandeln, und ich mache das komplett mit vim regulären Ausdrücken (bisher). Es funktioniert wirklich gut! Frew Schmidt vor 15 Jahren 0
Fügen Sie am Ende 'c' hinzu, um den Befehl interaktiv zu gestalten. zB:% s / x / y / gc sml vor 14 Jahren 0
Beachten Sie, dass das "%" die Stelle ist, an der die Ersetzung erfolgen soll - "%" bedeutet "die aktuelle Datei". Wenn Sie einige Zeilen visuell markieren und ": s" eingeben, können Sie nur in dieser Auswahl eine Ersetzung vornehmen. Nathan Long vor 13 Jahren 1
7
Nathan Long

== macht das automatische Einrücken in die aktuelle Zeile.

Normalerweise verwende ich jedoch =mit einer Bewegung, wie =Gzum Beispiel am Ende der Datei oder =i}innerhalb der aktuellen geschweiften Klammern.

Denken Sie auch an >> und <<, die das Einrücken manuell ausführen können. Frew Schmidt vor 15 Jahren 2
@Frew - yep. Auch wenn Sie `vmap hinzufügen > gv` und `vmap Nathan Long vor 13 Jahren 0
6
Kristo

=% zum automatischen Einrücken aller Elemente in einem Codeblock.

Oooh! Das ist neu für mich! Frew Schmidt vor 15 Jahren 0
Das funktioniert, wenn sich der Cursor am Anfang {'befindet. Wenn Sie sich innerhalb des Blocks befinden, können Sie `= i {` für "Einzug in die geschweiften Klammern" tun. Nathan Long vor 13 Jahren 0
5
Lucas Jones

Der :!Befehl - von unschätzbarem Wert für lsing und der "Sudo-Abschlag".

Ich wurde gebeten, den Abschlag-Trick zu erklären. Grundsätzlich können Sie eine Textdatei mit Administratorrechten speichern, auch wenn Sie VIM nicht als root gestartet haben:

:w !sudo tee % 
Vielleicht möchten Sie den "Sudo-Abschlag" -Trick hier erklären :-) Außerdem mache ich gerne:! Sortiere nach dem Markieren von Variablendefinitionen und so weiter. Frew Schmidt vor 15 Jahren 0
Sie können Vim wirklich zu einem großartigen "scriptfähigen" Editor machen, indem Sie:! und einige Shell / Python / Perl / andere Skripte. Jonas vor 15 Jahren 0
Ich habe tatsächlich eine Alternative zu "! Ls", die ein "vnew" ausführt, "r! Ls" in den neuen Puffer ausgibt und horizontal schrumpft. Ich kann mir nicht die Mühe machen, mich an alle Dateien in einem Verzeichnis mit mehr als drei Dateien zu erinnern. new123456 vor 12 Jahren 0
5
Jonas

Verwenden Sie *im Befehlsmodus für das Wort unter dem Cursor zu suchen.

Und vergessen Sie nicht, dass es der Befehl der Schwester # ist, der dasselbe tut, aber rückwärts statt vorwärts geht! Frew Schmidt vor 15 Jahren 1
4
Phoshi
. 

Schlagen die. Taste wiederholt den vorherigen Befehl. Schön, sagen wir, ein .inioder so bearbeiten .

Das ist überraschend mächtig, aber es dauert ein wenig, bis Sie wirklich gut werden können. aaron vor 13 Jahren 0
3
mas

Syntaxfarbe hervorheben

2
erichui

Ich verwende gq immer, um Zeilenumbrüche in E-Mails, Textdateien usw. zu wiederholen. Wirklich nützlich, wenn Sie auf E-Mails antworten (ich verwende Pine) und mehrere vorherige Antworten bearbeiten.

Oooh, das hatte ich total vergessen! Frew Schmidt vor 15 Jahren 0
Warum, oh warum, können die bekannteren E-Mail-Clients nicht ähnliche Funktionen unterstützen? erichui vor 15 Jahren 0
Vor kurzem verwende ich gw anstelle von gq, da die Cursorposition beibehalten wird SergioAraujo vor 6 Jahren 0
2
Jack M.

Wo soll ich anfangen? Hier sind die Dinge, an die ich mich erinnern kann, die ich in den letzten 5 Minuten verwendet habe.

  • NERD Tree - Erkundung von Dateien . Macht VIM eher wie eine IDE.
    • Eine große Sache für mich ist die Möglichkeit, cdein Verzeichnis zu erstellen und dann durch meine Shell-Mappings (unten) zu einer Shell-Eingabeaufforderung zu gelangen.
  • ci für das Leeren, was auch immer Sie dazwischen stecken.
  • :! zum Starten von Standard-Apps.
    • Ich habe Zuordnungen zum Starten einer Shell-Eingabeaufforderung, eines MySQL-Clients, Apache-Protokolldateien usw.
    • Subversion- Integration ist immer schön. Schnelle diffs, stats usw.
  • :abbr zum wiederholten Tippen von großen Blöcken verschwinden.
  • Tabs. Muss ich mehr sagen?
  • Dateien teilen, immer gut. :Sexist immer nett
  • :set paste! um zu verhindern, dass der Auto-Indent-Amok läuft.
Ich benutze alle bis auf abbr. Ich mache viel mehr Makros als Abkürzungen. Frew Schmidt vor 15 Jahren 0
2
dogbane

ZZ speichern und beenden (statt: wq!)

Huh Was ist mit ** x **? DevSolar vor 13 Jahren 0