Wie zeige ich den Namen der Datei, die ich gerade mit vim bearbeite, auf dem Terminaltitel an?


20

Ich bearbeite mehrere Dateien im selben Ordner auf mehreren Registerkarten auf einem einzigen Terminal.

pwd(Verzeichnis, in dem ich gerade arbeite) wird oben in der Kopfzeile des Terminals angezeigt, nicht jedoch der Name der Datei, die ich bearbeite. Es wird verwirrend, wenn Sie mit mehreren Dateien im selben Verzeichnis arbeiten.

So zeigen Sie den Namen der aktuellen Datei über dem Terminal an pwd.

Ich laufe vimin einer Bash-Shell in gnome-terminal, am 12.04 LTS.


1
Bearbeiten mit welchem ​​Editor? In welcher Schale? Welcher Terminalemulator?
Terdon

@terdon - Bearbeiten mit Vim, Bash Shell,
Xterm-

2
Bitte bearbeiten Sie Ihre Frage, um zusätzliche Informationen hinzuzufügen. Es ist schwer zu lesen und in den Kommentaren leicht zu übersehen. Sie können dann den Benutzer anpingen, der nach den Informationen gefragt hat, indem Sie einen Kommentar hinterlassen und ein @vor dem Benutzernamen einfügen. Zum Beispiel ping mich: @terdon.
Terdon

xtermhat keine tabs. Sind Sie sicher, dass dies so ist xterm? echo $TERMIn der Regel wird der Name Ihres Terminal-Emulators nicht zurückgegeben, wenn Sie dies getan haben.
Terdon

@terdon Ja, ich habe echo $ TERM verwendet. es gibt "xterm" aus. Ich benutze 64-Bit Ubuntu 12.04 LTS Standard-Terminal. Gibt es andere Möglichkeiten, Details des Emulators zu überprüfen?
Malhar

Antworten:


13

Sie müssen eine Datei .vimrcin Ihrem Home-Verzeichnis haben / erstellen, die den folgenden Code enthält:

let &titlestring = $USER . "@" . hostname() . " " . expand("%:p")
if &term == "screen"
  set t_ts=^[k
  set t_fs=^[\
endif
if &term == "screen" || &term == "xterm"
  set title
endif

Bildbeschreibung hier eingeben

Quelle: gnome-terminal erlaubt keine Änderung des Titels


Um ^ [zu erstellen, müssen Sie
STRG

8

Die aktuelle (akzeptierte) Antwort funktioniert nicht, wenn Sie Dateien / Puffer innerhalb einer Ihrer vim-Sitzungen wechseln. Der Titel wird nicht aktualisiert.

Die folgende reicht automatisch aktualisiert Titel in gnome-terminal auch haben , wenn Sie Dateien wechseln , indem Sie mit :e foo.txt, :b0, :b#etc.

Fügen Sie dies einfach in Ihre ~/.vimrcDatei ein:

autocmd BufEnter * let &titlestring = ' ' . expand("%:t")             
set title

System: Ubuntu 14.10, vim 7.4.273, gnome-terminal 3.6.2-0ubunt.


Sollte nicht set titlein der gleichen Zeile sein, nachdem |?
Victor Sergienko

Im Zusammenhang mit der Frage: den Titel nach dem Verlassen vim wiederherzustellen, fügen Sie set titleold=zu .vimrc.
Victor Sergienko

5

Einfach hinzufügen

set title

zu deinem ~/.vimrc.

Beispieltitel: Testdatei (~ / Dokumente) - VIM


1
Das ist die einzige Antwort, die für mich funktioniert hat und die kürzeste ist.
user10089632

1

Sie können den Namen der Datei, die Sie bearbeiten, auf folgende Weise an eine Registerkarte anhängen:

  1. Gehen Sie zum Menü oben auf dem Terminal. Terminal-> Titel setzen-> Hier hängen Sie den Namen der Datei an, die Sie gerade bearbeiten

Wenn Sie z. B. das Terminal öffnen, wird in der Überschrift des Terminals nur "~" angezeigt. pwd shows / home / xxx /

Angenommen, Sie bearbeiten an dieser Stelle eine Datei ABC.cpp und können den Titel der Registerkarte auf "~ / ABC.cpp" setzen, indem Sie "/ABC.cpp" im Feld "Titel festlegen" anhängen.

Ebenso können Sie dies auch für andere Registerkarten wiederholen.


4
Und werden Sie diese Änderungen jedes Mal vornehmen, wenn Sie eine andere Datei bearbeiten? Klingt schmerzhaft ...
Radu Rădeanu

0

Dies ändert auch den Fenstertitel, wenn Sie einen Puffer umbenennen:

set title
augroup WindowTitleGroup
  autocmd!
  autocmd BufEnter,BufFilePost * let &titlestring = expand('%:t')
augroup end

Durch das Einfügen des Befehls in eine Gruppe wird vermieden, dass der Befehl bei mehreren Sourcing-Vorgängen vimrcmehrmals ausgeführt wird.

Dies funktioniert gut mit vim-eunuch , mit dem Sie eine Datei umbenennen können :Rename.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.