Ich weiß, dass ich mit so vim
etwas 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?
linux
command-line
vim
files
cwd
quelle
quelle
Antworten:
In vim können Sie zunächst :(Doppelpunkt) eingeben und dann helfen
help
,:help
um 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
Ok, weiter zu deiner Antwort.
Nachdem Sie vim mit einer Liste von Dateien gestartet haben, können Sie durch Eingabe von
:next
oder:n
kurz zur nächsten Datei wechseln .:wnext
steht für "Aktuelle Änderungen schreiben" und "Zur nächsten Datei wechseln".Es gibt auch eine analoge
:previous
,:wprevious
und:Next
. (Beachten Sie, dass:p
es sich um eine Abkürzung für handelt:print
. Die Abkürzung für:previous
ist:prev
oder:N
.)Um zu sehen, wo Sie sich in der Dateiliste befinden, geben Sie ein
:args
und die aktuell bearbeitete Datei wird in[]
(Klammern) angezeigt.Beispiel:
Ergebnis:
quelle
Sie können eine andere Datei öffnen, während vim geöffnet ist,
:tabe filename
und zu der anderen Datei wechseln, die Sie eingeben,:tabn
oder:tabp
fü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.
quelle
vim -p file1 file2
:argadd filename
und dann:next
dorthin. Ebenso können Sie verwenden:argdel filename
, um eine der Dateien in Bearbeitung zu entfernen.Befehle zum Wechseln zwischen Puffern:
:help buffer
um weitere Informationen zu findenUm zu wissen , Dateiname Verwendung Ctrl+ G,
:file
oder:f
quelle
:bw
Datei schließen haha. Vergessen Sie nicht, die Hilfe zu lesen, in der:bw
steht, 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:bd
oder:q
wie ein normaler Mensch:bw
Fall, dass Sie neugierig sind: vi.stackexchange.com/questions/2212/…Eine andere Möglichkeit, abgesehen von den gegebenen Antworten, besteht darin, das Fenster zu teilen mit:
:vsp
ist für vertikale Teilung. Verwenden Sie dannCtrl+W <ARROW_KEYS>
, um sich in Fenstern zu bewegen.quelle
:vs
anstelle von:vsp
Ctrl+W, v
für vertikales undCtrl+W, s
horizontales Teilen.CTRL+W
seit 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.quelle
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
:split
Befehl von VIM zwei Dateien in einem Bash-Fenster öffnen :$ vim file1
, öffnen Sie eine zweite Datei in VIM mit dem:split file2
Befehl.$ vim -o file1 file2
aus Bash.:q
beendet 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!
quelle
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:
Wenn Sie bereits vim geöffnet haben, können Sie eine neue Datei in einem neuen Tab wie folgt öffnen:
Sobald Sie die Registerkarten geöffnet haben, können Sie
gt
mit die nächste undgT
die vorherige Registerkarte anzeigen.Sie können auch zum ersten Tab mit
1gt
, zum zweiten Tab mit2gt
usw. springen .Sie können Registerkarten mit schließen
:tabc
Schließlich können Sie die aktuelle Registerkarte an die
n
Stelle verschieben,:ntabm
an dern
eine beliebige Zahl größer oder gleich ist0
.quelle
argadd ...
fügt alle Dateien zu args sowie zu:ls
/ hinzu:buffers
und 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*
.quelle
Es gibt viele Möglichkeiten, dies zu tun. Der erste, vielleicht weniger bequeme Schritt besteht darin
vim
, die zu bearbeitenden Dateien aufzurufen. Erstellen Sie:Es ruft die zwei Dateien in zwei Puffern auf. Verwenden Sie
:n
und, um von einer Datei zu einer anderen zu wechseln:N
. Um die Dateien aufzulisten, die Sie gerade bearbeiten,:args
erledigen Sie die Aufgabe.:help buffer
wird 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-window
wird Ihnen dabei weiterhelfen.Wenn Sie nun die Unterschiede zwischen den Dateien sehen möchten , verwenden Sie das
-d
Argument oder rufen Sie das Programm vimdiff mit den entsprechenden Dateien auf (es ist dasselbe).:help diff
wird Ihnen dabei weiterhelfen.Bitte lassen Sie mich wissen, wenn Sie ein Problem haben.
quelle
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:
quelle
:e #(filename)
um zwischen zwei geöffneten Dateien zu wechseln:p
für vorherige Datei:n
für die nächste Dateiquelle