389 Stimmen

Vim's Tabs wie Puffer benutzen

Ich habe mir die Möglichkeit angesehen, Tabs in Vim zu verwenden (mit :tabe , :tabnew usw.) als Ersatz für meine derzeitige Praxis, viele Dateien im selben Fenster in versteckten Puffern zu öffnen.

Ich möchte, dass jede einzelne Datei, die ich geöffnet habe, immer in einer eigenen Registerkarte angezeigt wird. Es gibt jedoch einige Dinge, die dem im Wege stehen. Wie kann ich diese beheben?

  1. Wenn Befehle wie gf y ^] zu einer Stelle in einer anderen Datei springen, wird die Datei in einem neuen Puffer auf der aktuellen Registerkarte geöffnet. Gibt es eine Möglichkeit, dass alle diese Befehle die Datei in einer neuen Registerkarte öffnen oder zu der vorhandenen Registerkarte mit der Datei wechseln, wenn diese bereits geöffnet ist?

  2. Beim Umschalten von Puffern kann ich mit :b <part of filename><tab> und ergänzt die Namen der Dateien in den vorhandenen Puffern. <part of filename> kann auch in der Mitte eines Dateinamens stehen, anstatt am Anfang. Gibt es ein Äquivalent für den Wechsel der Tabulatoren?

11voto

icc97 Punkte 9849

Dies ist eine Antwort für diejenigen, die mit Vim nicht vertraut sind und von anderen Texteditoren kommen (in meinem Fall Sublime Text).

Ich habe mir alle Antworten durchgelesen, aber es war mir immer noch nicht klar. Wenn man sie oft genug durchliest, ergibt alles einen Sinn, aber ich habe Stunden gebraucht, um zwischen den Fragen hin und her zu gehen.

Der erste Punkt ist, wie andere bereits erklärt haben:

Registerkarten klingen sehr nach Registerkarten Sie verhalten sich wie Registerkarten und sehen so aus wie die Registerkarten in den meisten anderen GUI-Editoren, sind es aber nicht. Ich denke, es ist ein schlechtes mentales Modell, auf das in Vim aufgebaut wurde, das leider die zusätzliche Macht, die Sie innerhalb einer Registerkarte haben, trübt.

Die erste Beschreibung, die ich verstanden habe, stammt von @crenate's Antwort ist, dass sie das Äquivalent zu mehreren Desktops sind. So gesehen hat man immer nur ein paar Desktops geöffnet, aber viele GUI-Fenster in jedem davon.

Ich würde sagen, sie sind ähnlich wie in anderen Editoren/Browsern:

  1. Registerkarten-Gruppierungen
  2. Sublime Text Arbeitsbereiche (d.h. eine Liste der geöffneten Dateien, die Sie in einem Projekt haben)

Wenn Sie sie so sehen, erkennen Sie, wie mächtig sie sind: Sie können ganz einfach Dateigruppen (Puffer) zusammenfassen, z. B. Ihre CSS-Dateien, Ihre HTML-Dateien und Ihre JS-Dateien in verschiedenen Registerkarten. Das ist eigentlich ziemlich genial.

Andere Beschreibungen, die ich verwirrend finde

Ansichtsfenster

Das ergibt für mich keinen Sinn. Ein Ansichtsfenster, das zwar eine definierter Wörterbuchbegriff habe ich nur gehört, dass Vim Windows in der :help window doc. Viewport ist kein Begriff, den ich jemals im Zusammenhang mit Editoren wie Sublime Text, Visual Studio, Atom, Notepad++ gehört habe. In der Tat hatte ich noch nie davon gehört, bis ich anfing, Registerkarten zu verwenden.

Wenn Sie Registerkarten wie mehrere Desktops betrachten, erscheint es seltsam, einen Desktop als ein einzelnes Fenster zu bezeichnen.

Arbeitsbereiche

Dies macht möglicherweise mehr Sinn, die Wörterbuchdefinition est :

Eine Speichereinrichtung zur vorübergehenden Verwendung.

Es ist also ein Ort, an dem man eine Gruppe von Puffern speichert.

Ich hörte mich anfangs nicht an wie Das Konzept von Sublime Text eines Arbeitsbereichs, der eine Liste aller Dateien enthält, die Sie in Ihrem Projekt geöffnet haben:

die Datei sublime-workspace, die benutzerspezifische Daten enthält, z. B. die geöffneten Dateien und die jeweiligen Änderungen.

Aber wenn man genauer darüber nachdenkt, stimmt das tatsächlich. Wenn Sie eine Vim-Registerkarte wie ein Sublime Text-Projekt betrachten, dann würde es seltsam erscheinen, nur eine Datei in jedem Projekt geöffnet zu haben und ständig zwischen den Projekten zu wechseln. Daher ist es seltsam, eine Registerkarte zu benutzen, um nur eine Datei offen zu haben.

Sammlung von Fenstern

En :help window bezieht sich auf diese Weise auf Registerkarten. Und zahlreiche andere Antworten verwenden das gleiche Konzept. Solange Sie jedoch nicht wissen, was ein Vim-Fenster ist, ist das nicht viel wert, wie ein Schloss auf Sand zu bauen.

Wie ich bereits oben erwähnt habe, ist ein Vim-Fenster dasselbe wie ein Ansichtsfenster und wird in diesem Artikel hervorragend erklärt linux.com-Artikel :

Eine wirklich nützliche Funktion in Vim ist die Fähigkeit, den sichtbaren Bereich zwischen einer oder mehreren Dateien aufzuteilen, oder einfach das Fenster zu teilen, um zwei Teile derselben Datei einfacher zu betrachten. Die Vim-Dokumentation bezieht sich auf dies als ein Ansichtsfenster oder Fenster, austauschbar.

Sie sind vielleicht schon mit dieser Funktion vertraut, wenn Sie jemals die Hilfefunktion von Vim benutzt haben, indem Sie :help topic oder die F1-Taste gedrückt haben. Wenn Sie Hilfe eingeben, teilt Vim das Ansichtsfenster auf und öffnet die Hilfedokumentation im oberen Ansichtsfenster, während Ihr Dokument im unteren Ansichtsfenster geöffnet bleibt.

Ich finde es merkwürdig, dass eine Registerkarte als eine Sammlung von Fenstern und nicht als eine Sammlung von Puffern bezeichnet wird. Aber ich denke, man kann zwei separate Registerkarten mit mehreren Fenstern öffnen, die alle auf denselben Puffer zeigen, zumindest habe ich das bisher so verstanden.

5voto

Lucas Oman Punkte 15159
  • Sie können Befehle, die normalerweise Puffer manipulieren, auf Tabs abbilden, wie ich es mit gf in meiner .vimrc getan habe:

    map gf :tabe <cfile><CR>

    Ich bin sicher, dass Sie dasselbe mit [^] tun können.

  • Ich glaube nicht, dass vim dies für Tabs (noch) unterstützt. Ich benutze gt und gT, um zur nächsten bzw. vorherigen Registerkarte zu wechseln. Sie können auch Ngt verwenden, wobei N die Nummer der Registerkarte ist. Ein Problem, das ich habe, ist, dass die Tab-Nummer standardmäßig nicht in der Tab-Zeile angezeigt wird. Um dies zu beheben, habe ich ein paar Funktionen an das Ende von meine .vimrc-Datei (Ich habe ihn hier nicht eingefügt, weil er lang ist und nicht richtig formatiert wurde).

5voto

jkramer Punkte 15030

Ich verwende Puffer wie Tabs, indem ich die BufExplorer Plugin und ein paar Makros:

" CTRL+b opens the buffer list
map <C-b> <esc>:BufExplorer<cr>

" gz in command mode closes the current buffer
map gz :bdelete<cr>

" g[bB] in command mode switch to the next/prev. buffer
map gb :bnext<cr>
map gB :bprev<cr>

Mit BufExplorer haben Sie keine Tab-Leiste am oberen Rand, aber andererseits spart es Platz auf Ihrem Bildschirm, außerdem können Sie eine unbegrenzte Anzahl von Dateien/Puffern öffnen und die Pufferliste ist durchsuchbar...

4voto

Mike G. Punkte 1650

L :Hilfe-Registerkarten sieht es nicht so aus, als ob vim so arbeiten will, wie Sie es tun...

Puffer werden von mehreren Registerkarten gemeinsam genutzt, so dass es nicht möglich ist, einen bestimmten Puffer so zu sperren, dass er nur auf einer bestimmten Registerkarte erscheint.

Das ist aber eine gute Idee.

Sie könnten wahrscheinlich den gewünschten Effekt erzielen, indem Sie ein Terminal verwenden, das Tabs unterstützt, wie z.B. Multi-Gnome-Terminal, und dann vim-Instanzen in jedem Terminal-Tab ausführen. Nicht perfekt, obwohl...

2voto

thien.vuong Punkte 31

Wenn Sie möchten, dass Puffer wie Registerkarten funktionieren, sollten Sie sich die Tabline-Plugin .

Dabei wird ein einziges Fenster verwendet und eine Zeile am oberen Rand hinzugefügt, um die Registerkarten zu simulieren (die nur die Liste der Puffer anzeigen). Dies kam vor langer Zeit heraus, als Tabs nur in GVim unterstützt wurden, aber nicht im Kommandozeilen-Vim. Da es nur mit Puffern arbeitet, fügt sich alles gut in den Rest von vim ein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X