OS X 10.11 fügt Terminal.app eine nette Funktion hinzu, die Steuersequenzen der Form interpretiert
ESC ] 6 ; file://hostname/<path-as-URL> BEL
als Angabe des "Dokuments", das gerade bearbeitet oder angezeigt wird. Beispielsweise kann die Eingabe
echo -e "\x1b]6;file://localhost/etc/passwd\a"
bewirkt, dass der Terminaltitel den Dateinamen anzeigt passwd
, auf den Sie mit cmd+Klicken eine Breadcrumb-Spur erhalten (eine Funktion des „Dokumenttitels“ in den meisten Dateieditoren unter OS X). Die OS X-Standardeinstellung bashrc
verwendet diese Sequenz bereits, um das aktuelle Arbeitsverzeichnis in den Fenstertitel einzufügen.
Ich würde gerne wissen, wie ich Vim dazu bringen kann, diese spezielle Escape-Sequenz auszugeben, wenn eine neue Datei bearbeitet wird (und idealerweise, wie ich sie wieder aufhebe, wenn die Bearbeitung beendet wird – z. B. beim Beenden oder bei einem Dateiwechsel). Erweiterungen für EG less
und andere Programme wären ebenfalls sehr hilfreich.
Obwohl die URL technisch gesehen richtig URL-codiert sein muss, ist es für mich völlig in Ordnung, wenn dies nicht der Fall ist – ich bearbeite in Vim normalerweise keine Dateien mit besonders ungewöhnlichen Dateinamen.
Antwort1
Wenn es Ihnen nichts ausmacht, auf die übliche title
Handhabung in Vim zu verzichten, können Sie das übernehmen. Es sendet Daten an das Terminal und kann so angepasst werden, dass die entsprechenden Sequenzen ausgegeben werden:
set t_ts=^[]6;file://localhost
set t_fs=^G^M
set title
autocmd BufEnter * let &titlestring = expand("%:p")
Verwenden Sie control+vund dann, escum die Literalzeichen für die oben gezeigten Steuerzeichen zu erhalten. Eine Funktion vim
in Ihrer Shell löscht die Einstellung (das VimLeave
autocmd
konnte ich in 7.3 nicht zum Laufen bringen, und es gibt auch das „if-you-suspend vim
“-Problem).
function vim {
command vim "$@"
echo -ne "\033]6;\007"
}
:help title
für weitere Einzelheiten zu title
oder schauen Sie in der Vim- src/term.c
Datei nach dem Code.