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?

691voto

Zathrus Punkte 9760

Halt, halt, halt.

Dies ist nicht die Art und Weise, wie Vims Registerkarten benutzt werden sollen. In der Tat sind sie falsch benannt. Ein besserer Name wäre "Ansichtsfenster" oder "Layout", denn das ist es, was ein Tab ist - es ist ein anderes Layout von Windows von todos Ihrer vorhandenen Puffer.

Der Versuch, Vim in 1 Tab == 1 Puffer zu prügeln, ist eine Übung in Vergeblichkeit. Vim weiß es nicht oder es kümmert ihn nicht und er wird es nicht bei allen Befehlen respektieren - insbesondere bei allem, was den Quickfix-Puffer benutzt ( :make , :grep y :helpgrep sind die, die mir in den Sinn kommen) werden die Registerkarten fröhlich ignorieren, und es gibt nichts, was Sie dagegen tun können.

Stattdessen:

  • :set hidden
    Wenn Sie dieses Set noch nicht haben, sollten Sie es kaufen. Damit funktioniert vim wie jeder andere Editor mit mehreren Dateien auf dem Planeten. Sie können bearbeitete Puffer haben, die nicht irgendwo in einem Fenster sichtbar sind.
  • Verwenden Sie :bn , :bp , :b # , :b name y ctrl-6 um zwischen den Puffern zu wechseln. Ich mag ctrl-6 selbst (er schaltet allein auf den zuvor verwendeten Puffer um, oder #ctrl-6 wechselt zur Puffernummer # ).
  • Verwenden Sie :ls zum Auflisten von Puffern, oder ein Plugin wie MiniBufExpl o BufExplorer .

285voto

robince Punkte 10656

Ich bin ein bisschen spät dran, aber ich bin überrascht, dass ich die folgenden Dinge nicht in dieser Liste gesehen habe:

:tab sball - wird für jeden geöffneten Puffer eine neue Registerkarte geöffnet.

:help switchbuf - dies steuert das Verhalten beim Umschalten zwischen den Puffern, versuchen Sie :set switchbuf=usetab,newtab . Dies sollte bedeuten, dass Sie zu der vorhandenen Registerkarte wechseln, wenn der Puffer geöffnet ist, oder eine neue Registerkarte erstellen, wenn dies nicht der Fall ist.

193voto

crenate Punkte 3330

Vim :help window erklärt die Verwirrung "Tabs vs. Puffer" ziemlich gut.

Ein Puffer ist der speicherinterne Text einer Datei.
A auf einem Puffer.
Eine Registerkarte ist eine Sammlung von Fenstern.

Das Öffnen mehrerer Dateien wird in vim erreicht mit Puffer . In anderen Editoren (z.B. notepad++) wird dies mit Tabs gemacht, daher ist der Name Tab in vim vielleicht irreführend.

Windows dienen dazu, den Arbeitsbereich aufzuteilen und mehrere Dateien (Puffer) gemeinsam auf einem Bildschirm darzustellen. In anderen Editoren könnte dies durch das Öffnen mehrerer GUI-Fenster und deren Neuanordnung auf dem Desktop erreicht werden.

Schließlich ist in dieser Analogie vim's Registerkarten würde mehreren Desktops, d. h. verschiedenen Anordnungen von Windows, entsprechen.

Als vim help: tab-page erklärt, dass eine Registerkarte verwendet werden kann, wenn man eine Datei vorübergehend bearbeiten möchte, aber nichts am aktuellen Layout von Fenstern und Puffern ändern will. In einem solchen Fall kann eine andere Registerkarte nur für die Bearbeitung dieser bestimmten Datei verwendet werden.

Natürlich müssen Sie bedenken, dass die Anzeige derselben Datei auf mehreren Registerkarten oder in mehreren Fenstern dazu führen würde, dass dieselbe Arbeitskopie (Puffer) angezeigt wird.

58voto

Zenexer Punkte 17404

Im Gegensatz zu einigen der anderen Antworten hier, sage ich, dass Sie Tabs verwenden können, wie Sie wollen. vim wurde entwickelt, um vielseitig und anpassbar zu sein, anstatt Sie zu zwingen, nach vordefinierten Parametern zu arbeiten. Wir alle wissen, wie sehr wir Programmierer es lieben, allen anderen unsere "Ethik" aufzuzwingen, also ist diese Errungenschaft sicherlich ein Hauptmerkmal.

<C-w>gf ist das Tabulator-Äquivalent von buffers' gf Befehl. <C-PageUp> y <C-PageDown> wechselt zwischen den Registerkarten. (In Byobu funktionieren diese beiden Befehle bei mir nie, aber außerhalb von Byobu/tmux funktionieren sie. Alternativen sind gt y gT .) <C-w>T verschiebt das aktuelle Fenster in eine neue Registerkarte.

Wenn Sie es bevorzugen, dass vim, wenn möglich, eine bestehende Registerkarte verwendet, anstatt eine doppelte Registerkarte zu erstellen, fügen Sie :set switchbuf=usetab zu Ihrer .vimrc-Datei hinzufügen. Sie können hinzufügen newtab in die Liste ( :set switchbuf=usetab,newtab ), um zu erzwingen, dass QuickFix-Befehle, die Kompilierfehler anzeigen, in separaten Registerkarten geöffnet werden. Ich bevorzuge split stattdessen werden die Kompilierfehler in einem geteilten Fenster angezeigt.

Wenn Sie die Mausunterstützung mit :set mouse=a können Sie mit den Registerkarten interagieren, indem Sie sie anklicken. Außerdem gibt es eine + die standardmäßig eine neue Registerkarte erstellt.

Die Dokumentation zu den Registerkarten finden Sie unter :help tab-page im normalen Modus. (Danach können Sie das Verschieben eines Fensters auf eine Registerkarte mit <C-w>T .) Es gibt eine lange Liste von Befehlen. Einige der Fensterbefehle haben mit Tabs zu tun, also sollten Sie sich auch diese Dokumentation ansehen über :help windows .

Zusatz: 2013-12-19

Um mehrere Dateien in vim zu öffnen, mit jeder Datei in einem separaten Tab, verwenden Sie vim -p file1 file2 ... . Wenn Sie wie ich sind und immer vergessen, die -p können Sie es am Ende hinzufügen, da vim den normalen Regeln für das Parsen von Kommandozeilenoptionen folgt. Alternativ können Sie eine Bash-Alias-Zuordnung hinzufügen vim a vim -p .

14voto

Dominic Dos Santos Punkte 2355

Ich bin auf das gleiche Problem gestoßen. Ich wollte, dass die Registerkarten wie Puffer funktionieren, und ich habe es nie ganz geschafft, sie dazu zu bringen. Die Lösung, auf die ich mich schließlich geeinigt habe, war, dass sich Puffer wie Registerkarten verhalten!

Probieren Sie das Plugin namens Mini-Puffer-Explorer Wenn Sie das Programm installiert und konfiguriert haben, können Sie mit Puffern genauso virtuell arbeiten wie mit Tabs, ohne irgendwelche Funktionen zu verlieren.

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