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!


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.


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.


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.


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.


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 %

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.


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


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.


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.

Ich benutze alle diese außer abbr. Ich neige dazu, viel mehr Makros als Abkürzungen zu erstellen.
Frew Schmidt


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.


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

0

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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.