Durch mehrere Dateien navigieren

11

Wenn ich vim mit mehreren Dateien in der Befehlszeile öffne, z. B. vim debug.log*welche geladen werden debug.log, debug.log.1und debug.log.2kann ich zwischen ihnen navigieren und sie mehreren Fenstern ( :split/ :vsplit) oder dergleichen zuweisen ?

Die einzige Abkürzung, die ich für diesen Betriebsmodus kenne :n, ist das Laden der nächsten Datei in der Liste. Was kann ich in diesem Mehrdateibetriebsmodus noch tun? (oder welches Hilfethema deckt das ab?)

SF.
quelle
3
:previous(oder :prev) ist die Umkehrung von :nund geht eine Datei zurück.
Rich

Antworten:

13

Das relevanteste Hilfethema ist :lsauch als :filesoder bekannt :buffers.

In Ihrem vim debug.log*Beispiel :lswürden Sie sehen , wenn Sie den Befehl geben würden:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

… Zeigt an, dass der erste der aktive Puffer ist.

debug.log.2Geben Sie zum Öffnen im aktuellen Fenster den Befehl :b 3oder ein :b debug.log.2, um Puffer 3 anzuzeigen.

Geben Sie den :sb 2Befehl ein , um das Fenster zu teilen und Puffer 2 darin zu öffnen . Die vertikal geteilte Version davon ist :vert sb 2.

Es gibt viele Varianten des :bBefehls. Durchsuchen Sie die hier genannten Hilfethemen, um ein Gefühl dafür zu bekommen.


Darüber hinaus können Sie aufrufen vim -o debug.log*, um alle Dateien zu öffnen, jede in ihrer eigenen Aufteilung, oder vim -O debug.log*um sie jeweils in einer vertikalen Aufteilung zu öffnen.

200_Erfolg
quelle
6

Zusätzlich zu der von 200_success erwähnten Raw-Vim-Funktionalität enthält das Vim-Ökosystem zahlreiche Plugins, um zusätzliche Funktionen bereitzustellen, z.

Bevor Sie jedoch Plugins verwenden, sollten Sie die Puffer und Fenster in vim vollständig verstehen.

Cody Umfrage
quelle
1
Bitte lesen Sie unsere Richtlinien zu Antworten auf Plugin-Empfehlungen und fügen Sie einige Details hinzu, wie genau diese Plugins dem Benutzer zugute kommen können.
200_erfolg
5

Sie können vim auch mit verschiedenen Parametern öffnen.

Öffnet Dateien in Registerkarten:

vim -p debug.log*

Öffnet Dateien in vertikalen Teilungen:

vim -o debug.log*

Es gibt ein cooles und ziemlich leistungsfähiges Plugin namens CtrlSpace:

https://github.com/szw/vim-ctrlspace

Es ist sehr praktisch, wenn Sie mit vielen Dateien arbeiten müssen. Sie können sich einfach Strg-Leerzeichen als eigene Pufferliste für jede Registerkarte vorstellen. Es bietet eine sehr einfache Möglichkeit, zwischen den Dateien zu navigieren, wie der Autor feststellt:

Vim-CtrlSpace ist ein Vim-Plugin zur Steuerung und Organisation Ihres Arbeitsbereichs in Vim. Einschließlich der Verwaltung von Puffern, Dateien, Registerkarten, Sitzungen und schließlich Projekten. Der Ansatz ist etwas einzigartig, aber Sie werden sich sicherlich wie zu Hause fühlen, insbesondere wenn Sie bereits geteilte Fenster, Registerkarten, Puffer usw. verwenden.

Martin Höger
quelle
Willkommen bei Vi / Vim! Bitte lesen Sie unsere Richtlinien zu Antworten auf Plugin-Empfehlungen und fügen Sie einige Details hinzu, wie genau das Plugin die Frage beantwortet.
200_erfolg
3

Wenn Sie eine bestimmte Datei öffnen möchten, ohne sie durchlaufen zu müssen :ls, können Sie eine der folgenden Optionen verwenden:

  • :vs filename öffnet die Datei in vertikaler Aufteilung
  • :sp filename macht das gleiche, aber in einer horizontalen Aufteilung
  • :tabe filename wird in einer neuen Registerkarte geöffnet

Es ist auch wichtig zu wissen, dass Sie, wenn Sie keinen Dateinamen angeben, einen neuen Split / Tab der aktuellen Datei öffnen, was für lange Dateien nützlich sein kann.

Tom
quelle
2
:tist der Kopierbefehl. Denn :tabeditdu brauchst wenigstens :tabe.
Tommcdo
Oh verdammt, du hast vollkommen recht. Danke, ich werde bearbeiten!
Tom
0

Es gibt nur wenige nützliche Verknüpfungen zum Navigieren in mehreren Dateien:

  • CTRL-^(wo Nist die Puffernummer), um zur zuvor bearbeiteten Datei zu springen.
  • N CTRL-^(wo Nist die Puffernummer), um zu einem bestimmten Puffer zu springen.

    Beispielsweise:

    • 1Control+^ - Zum 1. Puffer gehen
    • 2Control+^ - Zum 2. Puffer gehen
    • etc.

    Dies entspricht :buffer N.

  • Verwenden Sie :Ex/ :Sex/ :Vexdas aktuelle Verzeichnis zu navigieren.

  • Verwenden Sie :tabsstattdessen ( vim -p) mit einigen benutzerdefinierten Verknüpfungen .vimrcwie:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • Verwendung :ba/ :vert baSplit, springen in die ausgewählten Puffer über Control+w, w/ W, dann ist es das aktuelle Fenster (stellen :on).

Kenorb
quelle