Wie kann ich vim dazu bringen, den Dokumentpfad im Terminal anzuzeigen?

Wie kann ich vim dazu bringen, den Dokumentpfad im Terminal anzuzeigen?

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 bashrcverwendet 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 lessund 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 titleHandhabung 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 vimin Ihrer Shell löscht die Einstellung (das VimLeave autocmdkonnte 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 titlefür weitere Einzelheiten zu titleoder schauen Sie in der Vim- src/term.cDatei nach dem Code.

verwandte Informationen