Welche Vim-Funktionen verwenden Sie? [geschlossen]

13

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

Peter Mortensen
quelle
1
Aus historischen Gründen ist hier ein Link zur ursprünglichen SO-Frage: stackoverflow.com/questions/95072/…
Jax
Beachten Sie meinen Kommentar unten, und Sie müssen nicht einmal tippen gv. :)
Nathan Long

Antworten:

9

:% 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 benutze es so oft, seit ich es bei der Arbeit gelernt habe, dass es von unschätzbarem Wert geworden ist.

Auch / Suchzeichenfolge

dann n , um durch alle Instanzen der Suchzeichenfolge in der Datei zu navigieren . Hervorragend geeignet, um manuelle Optimierungen viel einfacher durchzuführen, insbesondere wenn Sie keine Regel auf die gesamte Datei anwenden können.

karlgrz
quelle
Ich arbeite gerade daran, einen größeren Teil unserer Codebasis in Arbeit zu konvertieren, und mache dies (bis jetzt) ​​ausschließlich mit vim regulären Ausdrücken. Es funktioniert wirklich gut
Frew Schmidt
Fügen Sie am Ende ein 'c' hinzu, um den Befehl interaktiv zu machen. Beispiel:% s / x / y / gc
sml
1
Beachten Sie, dass %hier die Ersetzung vorgenommen werden muss - %bedeutet "die aktuelle Datei". Wenn Sie einige Zeilen optisch hervorheben und eingeben :s, können Sie nur in dieser Auswahl eine Ersetzung vornehmen.
Nathan Long
7

== macht schöne automatische Einrückung in der aktuellen Zeile.

Normalerweise benutze ich jedoch =eine Bewegung, =Gum bis zum Ende der Datei =i}einzurücken oder um innerhalb der aktuellen geschweiften Klammern einzurücken.

Nathan Long
quelle
2
Denken Sie auch an >> und <<, die manuell das Einrücken (aufheben) können.
Frew Schmidt
@Frew - yep. Auch, wenn Sie addieren vmap <Tab> >gvund vmap <S-Tab> <gvzu Ihrem .vimrc, können Sie einrücken und ausrücken mit Tab und Shift-Tab bzw. UND wird es gleich wieder in visuellen Auswahlmodus gehen , so dass Sie oder unindent weiter einrücken können.
Nathan Long
6

=% zum automatischen Einrücken aller Elemente innerhalb eines Codeblocks.

Kristo
quelle
Oooh! Das ist neu für mich!
Frew Schmidt
Das funktioniert, wenn sich Ihr Cursor am Anfang befindet {. Wenn Sie sich im Block befinden, können Sie dies tun =i{, indem Sie "in die geschweiften Klammern einrücken".
Nathan Long
5

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

Jonas
quelle
1
Und vergessen Sie nicht, dass es das Schwester-Kommando # ist, das das Gleiche tut, jedoch nicht vorwärts, sondern rückwärts geht!
Frew Schmidt
5

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

Ich wurde gebeten, den Abschlag 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 %
Person-b
quelle
Vielleicht möchten Sie den "Sudo-Tee" -Trick hier erklären :-) Auch ich mache gerne:! Sortiere nach dem Hervorheben von Variablendefinitionen und so weiter.
Frew Schmidt
Sie können Vim wirklich in einen großartigen "skriptfähigen" Editor verwandeln, indem Sie Folgendes verwenden:! und einige Shell / Python / Perl / andere Skripte.
Jonas
Ich habe tatsächlich eine Alternative zu !ls, die a vnewausführt, r!lsin den neuen Puffer ausgibt und ihn horizontal verkleinert. Ich kann nicht die Mühe haben, mir alle Dateien in einem Verzeichnis mit mehr als drei darin zu merken;)
new123456
4
.

Schlagen die. Taste wiederholt den vorherigen Befehl. Schön zum Beispiel zum Bearbeiten von .ini, oder so.

Phoshi
quelle
das ist überraschend mächtig, aber es dauert ein wenig, bis man wirklich gut damit umgehen kann.
Aaron
3

Syntax-Farbmarkierung

mas
quelle
2

Ich verwende gq immer, um Zeilenumbrüche bei E-Mails, Textdateien usw. zu wiederholen. Sehr nützlich, wenn ich auf E-Mails antworte (ich verwende pine) und mehrere vorherige Antworten bearbeite.

Erichui
quelle
Oooh, das hatte ich total vergessen!
Frew Schmidt
Warum, oh warum, können die populäreren E-Mail-Clients ähnliche Funktionen nicht unterstützen?
Erichui
Vor kurzem verwende ich gw anstelle von gq, weil es die Cursorposition
beibehält
2

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

  • NERD Tree - Datei durchsuchen . Macht VIM eher zu einer IDE.
    • Eine große Sache für mich ist die Möglichkeit, cdin ein Verzeichnis zu wechseln und dann über meine Shell-Zuordnungen (unten) zu einer Shell-Eingabeaufforderung zu wechseln.
  • ci für das Leeren von allem, was Sie dazwischen stecken.
  • :! zum Starten von Standard-Apps.
    • Ich habe Zuordnungen zum Starten einer Shell-Eingabeaufforderung, eines MySQL-Clients, von Apache-Protokolldateien usw.
    • Subversion- Integration ist immer nett. Schnelle diffs, stats, etc.
  • :abbr zum wiederholten Tippen von großen Blöcken verschwinden lassen.
  • Tabs. Muss ich mehr sagen?
  • Dateien aufteilen, immer gut. :Sexist immer schön.
  • :set paste! um zu verhindern, dass ein automatischer Einzug in den Amok läuft.
Jack M.
quelle
Ich benutze alle diese außer abbr. Ich neige dazu, viel mehr Makros als Abkürzungen zu erstellen.
Frew Schmidt
2

ZZ speichern und beenden (statt: wq!)

Dogbane
quelle
Huh? Was ist mit x ?
DevSolar
1

Ich verwende beim Schreiben oder Überqueren von C / Tcl / Perl-Code häufig die folgenden Befehle:

Code zum Kopieren und Einfügen

CTRL-fund CTRL-bfür Seitenvorwärts- und Rückwärtsdurchquerung
%für Block-für-Block-Durchquerung
^ gehe zum Zeilenanfang
$ gehe zum letzten Zeilenende

Starten Sie die Codeauswahl mit dem Befehl v(visueller Modus) und einer der oben genannten Tasten
yzum Kopieren
pund Einfügen

s ein Zeichen löschen und in den Einfügemodus wechseln, um neuen Text einzugeben.

Code Level Traversals (erfordert Codierstil Disziplin)

]]zum Start der nächsten Funktion
[[zum Start der vorherigen Funktion

CTRL-] um zur Definition einer Variablen / Funktion / eines Makros zu springen, wenn Tags verfügbar sind.

Suche

* => Suchwort (oder Text ausgewählt Verwendung v) in Vorwärtsrichtung
# => Suchwort (oder Text v ausgewählt Verwendung) in Rückwärtsrichtung
n => vorherigen Suchbefehl in Vorwärtsrichtung auszuführen
N => Befehl vorherige Suche in Rückwärtsrichtung auszuführen

Allen obigen Befehlen kann eine Zahl vorangestellt werden, um anzugeben, wie oft sie ausgeführt werden sollen. Die Realisierung der Kraft dieser zusätzlichen Dimension kommt langsam, wie man benutzt vim immer mehr und Herausforderungen, sich zu verbessern.

secureBadshah
quelle
Ah,]] und [[sind neu für mich. Das ist cool!
Frew Schmidt
0

Ich gebe nur Text ein. Alles andere ist nur ... Zucker.

Akira
quelle
0

Ich bin ein ehemaliger Benutzer von TextPad und hatte viele der Zugriffstasten dieses Programms auswendig gelernt. Eines der ersten Dinge, die ich in Vim tat, war das Erlernen der Kartenfunktion Konsistenz zu halten (F5 suchen, F8 ersetzen, etc.). Ich habe mein persönliches Farbschema erstellt und viel aus den vimrc-Dateien anderer ausgeliehen. Viva Vim! Beliebig konfigurierbar.

wbogacz
quelle