Wie kann ich mehrere Dateien in VIM bearbeiten?


167

Ich weiß, dass ich mit so vimetwas wie mehrere Dateien öffnen kann vim 2011-12*.log, aber wie kann ich zwischen Dateien wechseln und die Dateien einzeln schließen? Wie kann ich auch den Dateinamen der aktuellen Datei ermitteln, die ich bearbeite?


Antworten:


170

In vim können Sie zunächst :(Doppelpunkt) eingeben und dann helfen help, :helpum eine Liste mit Selbsthilfethemen zu erhalten, einschließlich eines kurzen Tutorials. Bewegen Sie den Mauszeiger in der Themenliste über das gewünschte Thema und drücken Sie. ctrl]Das Thema wird geöffnet.

Ein guter Ausgangspunkt für Sie wäre das Thema

|usr_07.txt|  Editing more than one file

Ok, weiter zu deiner Antwort.

Nachdem Sie vim mit einer Liste von Dateien gestartet haben, können Sie durch Eingabe von :nextoder :nkurz zur nächsten Datei wechseln . :wnextsteht für "Aktuelle Änderungen schreiben" und "Zur nächsten Datei wechseln".

Es gibt auch eine analoge :previous, :wpreviousund :Next. (Beachten Sie, dass :pes sich um eine Abkürzung für handelt :print. Die Abkürzung für :previousist :prevoder :N.)

Um zu sehen, wo Sie sich in der Dateiliste befinden, geben Sie ein :argsund die aktuell bearbeitete Datei wird in [](Klammern) angezeigt.

Beispiel:

vim foo.txt bar.txt
:args

Ergebnis:

[foo.txt] bar.txt

24
: wn ist die Kurzform von: wnext.
Kowh

Sie können auch Folgendes tun: rew, um zur ersten Datei zurückzukehren. : e # wechselt zwischen 2 Dateien. : n! Geht zur nächsten Datei ohne zu schreiben. Siehe auch: Autoschreiben einstellen.
Sasquiha

4
Weitere Informationen zu mehreren Puffern / Fenstern / Registerkarten finden Sie unter StackOverflow. Wie kann man effektiv mit mehreren Dateien in Vim arbeiten? und Verwenden der Registerkarten von Vim wie Puffer .
mmoya

1
Ich fand auch Kapitel 22 "Finden der zu bearbeitenden Datei" sehr nützlich. Die gewünschten Dateien werden mit dem Verzeichnis-Explorer bearbeitet.
Harry Moreno

: wn super ein.
Rammayur

54

Sie können eine andere Datei öffnen, während vim geöffnet ist, :tabe filenameund zu der anderen Datei wechseln, die Sie eingeben, :tabnoder :tabpfür die nächste und vorherige entsprechend.

Mit den Tastenkombinationen gT und gt können Sie auch zwischen Registerkarten wechseln, wenn Sie sich nicht im Bearbeitungsmodus befinden (dh nicht im Einfüge-, Ersetzungsmodus usw.). Auf einigen Systemen Ctrl+ Alt+ Page Upund Ctrl+ Alt+ Page Downauch Tabula umschichten, aber das funktioniert nicht immer (zum Beispiel, wird es in dem O X - Terminal nicht funktioniert ‚out of the box‘).

Und Sie können den Dateinamen oben in der vim-App sehen.


16
Diese. Öffnen Sie auch Dateien in Registerkarten mit:vim -p file1 file2
Not Now

AMAZE! Ich hatte das noch nie erlebt, obwohl ich vim jahrelang benutzt hatte. Das ändert alles .
me_and

Beachten Sie, dass Registerkarten nicht für die Arbeit mit mehreren Dateien vorgesehen sind. Sie sollen mit mehreren Layouts arbeiten . Siehe Artikel .
patryk.beza

5
Nebenbei: Wenn Sie bereits in vim sind und eine weitere Datei hinzufügen möchten, können Sie Folgendes verwenden: :argadd filenameund dann :nextdorthin. Ebenso können Sie verwenden :argdel filename, um eine der Dateien in Bearbeitung zu entfernen.
Luv2code

36

Befehle zum Wechseln zwischen Puffern:

:bf            # Go to first file.
:bl            # Go to last file
:bn            # Go to next file.
:bp            # Go to previous file.
:bw            # Close file.

:help buffer um weitere Informationen zu finden

Um zu wissen , Dateiname Verwendung Ctrl+ G, :fileoder:f


1
:bwDatei schließen haha. Vergessen Sie nicht, die Hilfe zu lesen, in der :bwsteht, dass Sie sie nur verwenden sollten, wenn Sie wissen, was Sie tun. Es ist keine große Sache, aber es sei denn, Sie möchten alle Markierungen und Informationen über die Datei löschen, besser verwenden :bdoder :qwie ein normaler Mensch
Dylan

1
Weitere Informationen für den :bwFall, dass Sie neugierig sind: vi.stackexchange.com/questions/2212/…
wisbucky

25

Eine andere Möglichkeit, abgesehen von den gegebenen Antworten, besteht darin, das Fenster zu teilen mit:

:sp
:vsp

:vspist für vertikale Teilung. Verwenden Sie dann Ctrl+W <ARROW_KEYS>, um sich in Fenstern zu bewegen.


4
Sie können :vsanstelle von:vsp
Khaja Minhajuddin

2
Oder auch nur Ctrl+W, vfür vertikales und Ctrl+W, shorizontales Teilen.
Ruslan

1
Ich benutze es CTRL+Wseit Jahren und in letzter Zeit bearbeite ich viele VIs auf Webseiten. Jedes Mal tippe ich den Befehl ohne nachzudenken und ... whammmm ... der Browser-Tab ist GEGANGEN! Ich vergesse immer wieder. Ich muss wirklich eine neue Verknüpfung lernen.
Jeach

13
:n -> Move to next file
:N -> Move to previous file

10

Ich habe beim Superuser eine ähnliche Frage gestellt.

"Wie kann ich zwischen verschiedenen Bash-Fenstern und mit VI geöffneten Dateien kopieren und einfügen?"

Die Antwort auf meine Frage war, dass Sie nicht können, aber Sie können mit dem :splitBefehl von VIM zwei Dateien in einem Bash-Fenster öffnen :

  1. Öffnen Sie eine Datei mit $ vim file1, öffnen Sie eine zweite Datei in VIM mit dem :split file2Befehl.
  2. Oder verwenden Sie $ vim -o file1 file2aus Bash.
  3. Zwischen Dateien wechseln - aktive Datei umschalten - in VIM mit ctrl- w ctrl- w.
  4. Eine Beispieloperation ist dann Kopieren (oder Ziehen) in Datei1 yy, Schalter (3), dann Einfügen (oder Einfügen) von pInhalten in Datei2.
  5. Alles andere ist normal, wenn eines der beiden Fenster aktiv ist und somit :qbeendet wird und das :q!Beenden erzwungen wird.

Meine Bash ist schwarz und weiß, daher wird der Dateiname jedes Bildschirms als umgekehrte "ausgewählte" Zeile mit dem dort angegebenen Dateinamen dargestellt.

Woot!


6

Ich finde, die bequemste Methode zum Bearbeiten mehrerer Dateien ist die Verwendung von Registerkarten. Sie können mehrere Dateien in separaten Registerkarten über die Befehlszeile wie folgt öffnen:

vim -p file1.txt file2.txt

Wenn Sie bereits vim geöffnet haben, können Sie eine neue Datei in einem neuen Tab wie folgt öffnen:

:tabe file2.txt

Sobald Sie die Registerkarten geöffnet haben, können Sie gtmit die nächste und gTdie vorherige Registerkarte anzeigen.

Sie können auch zum ersten Tab mit 1gt, zum zweiten Tab mit 2gtusw. springen .

Sie können Registerkarten mit schließen :tabc

Schließlich können Sie die aktuelle Registerkarte an die nStelle verschieben, :ntabman der neine beliebige Zahl größer oder gleich ist 0.


6
argadd a/b c/d e/f

argadd ...fügt alle Dateien zu args sowie zu :ls/ hinzu :buffersund ermöglicht es Ihnen, sie zu bearbeiten.


Siehe :h arglsit& :h argedit&:h argsd


Außerdem können Sie bestimmte Aktionen nur mit args ausführen :argdo ...und mit args neu beginnen :argsd*.


0

Es gibt viele Möglichkeiten, dies zu tun. Der erste, vielleicht weniger bequeme Schritt besteht darin vim, die zu bearbeitenden Dateien aufzurufen. Erstellen Sie:

vim first_file second_file ...

Es ruft die zwei Dateien in zwei Puffern auf. Verwenden Sie :nund, um von einer Datei zu einer anderen zu wechseln :N. Um die Dateien aufzulisten, die Sie gerade bearbeiten, :argserledigen Sie die Aufgabe. :help bufferwird Ihnen dabei weiterhelfen.


Dies sollte Ihre Frage beantworten. Aber hier sind weitere Informationen:

Sie können Ihre Dateien auf bequemere Weise bearbeiten, indem Sie den Konsolenbildschirm mit vim aufteilen . Öffnen Sie dazu zwei Frames mit :split( :sp) oder :vsplit( :vs), während Sie vim verwenden . Navigieren Sie dann mit der Kombination Ctrl+ W> Ctrl+ in diesen Frames W. Sie können auch verwenden Ctrl+ W+ auf den Pfeil oder den Schlüssel ( H, J, Koder L) zum nächsten Bild entspricht. Wenn dies erledigt ist, bearbeiten Sie die gewünschte Datei mit :e file_name. :help opening-windowwird Ihnen dabei weiterhelfen.

Wenn Sie nun die Unterschiede zwischen den Dateien sehen möchten , verwenden Sie das -dArgument oder rufen Sie das Programm vimdiff mit den entsprechenden Dateien auf (es ist dasselbe). :help diffwird Ihnen dabei weiterhelfen.

vim -d first_file second_file ...

Bitte lassen Sie mich wissen, wenn Sie ein Problem haben.


0

Ich verwende gerne geteilte Fenster - sowohl horizontale als auch vertikale -, um mehrere Dateien zu bearbeiten.

Ich benutze tmux, um diese Fenster einfacher zu verwalten

https://tmux.github.io/ "Was ist ein Terminalmultiplexer? Mit ihm können Sie problemlos zwischen mehreren Programmen in einem Terminal wechseln, diese trennen (sie laufen im Hintergrund weiter) und sie erneut einem anderen Terminal zuordnen. Und a viel mehr. Siehe das Handbuch. "

Beispiel: Anzeigen von Dateien oder Ausführen von Tests auf der rechten Seite, Bearbeiten von Test- und Quelldateien auf der linken Seite: Bildbeschreibung hier eingeben


0

:e #(filename) um zwischen zwei geöffneten Dateien zu wechseln

:p für vorherige Datei

:n für die nächste Datei


Willkommen bei U & L, dies fügt kaum etwas zu anderen Antworten hinzu, die vor Jahren veröffentlicht wurden.
Archemar
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.