screen + vim - Gibt es eine Möglichkeit, den Namen des Bildschirmfensters automatisch festzulegen, um den vim-Dateinamen zu öffnen?

10

Ich habe eine ziemlich schöne Bildschirm-RC-Datei, die mir die geöffneten Bildschirmfenster fast wie Registerkarten am unteren Rand des Terminals zeigt. Derzeit werden die Fenster nach meiner Eingabeaufforderung benannt, was nicht so nützlich ist. Gibt es eine Möglichkeit, die Fenster automatisch anhand des Dateinamens einer offenen vim-Sitzung zu benennen, die sich derzeit im Fenster befindet? Ich denke, dies wäre ein hervorragender Multi-Fenster-Editor, wenn es möglich wäre.

user4785
quelle

Antworten:

5

Stellen Sie die titleOption ein . Dies funktioniert für mich sofort in xterm und dergleichen, aber nicht auf dem Bildschirm. Dieser Tipp funktioniert :

if &term == "screen"
  set t_ts="\ek"
  set t_fs="\e\\"
  set title
endif

Ein anderer Ansatz besteht darin, eine preexecFunktion in Ihre Shell zu schreiben , die den Fenstertitel auf den ausgeführten Befehl setzt. Zsh unterstützt preexecnativ und Bash kann es auch . Hier ist ein zsh-Beispiel .

Gilles 'SO - hör auf böse zu sein'
quelle
Hallo. Das hat bei mir nicht funktioniert, aber ich denke, es liegt daran, wie meine .screenrc-Datei eingerichtet ist. 1 termcapinfo xterm * ti @: te @ 2 hardstatus alwayslastline 3 hardstatus string '% {gk} [% {G}% H% {g}] [% =% {wk}%?% - Lw%?% {= B. kR} (% {W}% n *% f% t%? (% u)%?% {= b kR})% {= kw}%?% + Lw%?%?% =% {g}] [% {Y}% l% {g}]% {= b C} [% m /% d% c]% {W} '
user4785
@ user4785: Wenn Ihre Eingabeaufforderung den Titel des Bildschirmfensters festlegen kann, sollte Vim dies auch können. Was ist Ihre Aufforderung? Funktioniert mein .vimrcSnippet ohne deines .screenrc?
Gilles 'SO - hör auf böse zu sein'
1

Ich habe es auf eine etwas hackigere Art gemacht: Mit tcsh habe ich Folgendes in meine .cshrc eingefügt

# escape sequence to set the screen title
alias stitle 'echo -n "^[k\!*^[\\"'
# shorthand to set the screen title to the hostname
alias H stitle `hostname -s`
# shorthand to set the screen title to the filename, launch vim, and then set it back
alias vis 'stitle \!* ; vim \!* ; H'

Solange Sie daran denken, vis anstelle von vim zu verwenden, wenn Sie den Titel dort haben möchten, funktioniert es.

Ich habe auch hinzugefügt

set notitle

zu meiner .vimrc, um vim davon abzuhalten, den Titel des Fensterbildschirms festzulegen, in dem ausgeführt wurde.

22 Grad
quelle