4 Stimmen

Puffer in Vim zurücksetzen

Ist es möglich, den alternativen Puffer in einer Vim-Sitzung auf den vorherigen Zustand zurückzusetzen?

Mit alternativem Puffer meine ich denjenigen, auf den sich # bezieht, d.h. denjenigen, der angezeigt wird, wenn Sie cntl-^ eingeben.

Angenommen, ich habe zwei Dateien geöffnet, main.c und other.c, und :ls zeigt mir an:

  1 %a   "main.c"              lines 27
  2 #    "other.c"             lines 56

Sagen wir, ich öffne eine andere Datei, z.B. refer.c, :ls gibt mir jetzt einen Hinweis:

  1 %a   "main.c"              lines 27
  2      "other.c"             lines 56
  3 #    "refer.c"             lines 125

Wenn ich den Puffer mit refer.c lösche, zeigt :ls jetzt an:

  1 %a   "main.c"              lines 27
  2      "other.c"             lines 56

Aber wenn ich cntl-^ drücke, wird refer.c wieder angezeigt!

Gibt es eine Möglichkeit, vim dazu zu bringen, den alternativen Puffer automatisch auf den letzten Stand zurückzusetzen? Eine "Geschichte" von alternativen Puffern?

Oder muss ich ein :2 b machen, um other.c in den alternativen Puffer zu laden?

Oder gibt es vielleicht einen guten Grund für dieses Verhalten?

7voto

graywh Punkte 9143

In diesem Fall bedeutet "alternate" einfach "previous". Also, ja, :b2 (oder 2 ctrl-6) ist wahrscheinlich der einfachste Weg, um zu ändern, welche zwei Puffer durch ctrl-6 umgeschaltet werden.

Werfen Sie auch einen Blick auf den Befehl :keepalt.

2voto

NeilG Punkte 3191

Wie Sie es von Vim gewohnt sind, gibt es einen guten Grund für dieses Verhalten. :bd (Mnemonik für Puffer löschen) macht no den Puffer als solchen zu löschen, sondern löscht es aus der Hauptpufferliste !

Wenn Sie versuchen :ls! o :buffers! Sie werden sehen, dass es noch verfügbar ist, aber mit einem u neben seiner Puffernummer, was bedeutet, dass er jetzt "nicht gelistet" ist (d. h. nicht gelistet, es sei denn, Sie listen ihn mit einem Ausrufezeichen auf).

Ich lasse es so schrecklich wie möglich klingen, aber wie bei den meisten Vim-Befehlen funktioniert es, wenn man es einmal verstanden hat, und die Verwendung von Ausrufezeichen / bang, um den Befehl zu erzwingen, ist konsequent.

Um den Puffer vollständig loszuwerden, müssen Sie wischen es mit :bw . Wenn Sie das getan haben, werden Sie immer noch das gleiche Problem haben, aber diesmal versuchen Sie, mit CTRL-^ wird auslösen No alternate file (weil es dieses Mal realmente gegangen ist).

Um zu der gewünschten Datei zu wechseln, verwenden Sie die Puffernummer: :b2 oder die Puffernummer der gewünschten Datei ein, wodurch ein neuer alternativer Puffer eingerichtet wird.

Ich finde, es ist einfach, sich Puffernummern zu merken oder sie nachzuschlagen mit :buffers o :buffers! wirklich schnell, und natürlich ist das Wechseln zu ihnen dann schnell, aber natürlich gibt es eine Reihe von Techniken in Vim für das Wechseln von Puffern, besonders einschließlich Marken .

Sie haben hier auch eine andere großartige Vim-Funktion entdeckt, die nicht aufgelisteten Puffer. Wenn Sie mit ein paar zusätzlichen Dateien zu tun haben, ist es manchmal hilfreich, sie aus dem :buffers Liste mit :bd um sie aus dem Blickfeld zu bekommen, aber obwohl sie versteckt sind, sind sie nicht unzugänglich, und Sie können überprüfen, welche Sie wollen mit :buffers! y luego :b<num> um sie aufzurufen, ohne sie wiederherstellen zu müssen oder ähnliches.

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