OS X 10.11では、Terminal.appに次のような形式の制御シーケンスを解釈する便利な機能が追加されました。
ESC ] 6 ; file://hostname/<path-as-URL> BEL
現在編集中または閲覧中の「文書」を指定するのに使用します。例として、
echo -e "\x1b]6;file://localhost/etc/passwd\a"
ターミナルのタイトルにファイル名が表示されpasswd
、cmd キーを押しながらクリックするとパンくずリストが表示されます (OS X のほとんどのファイル エディタの「ドキュメント タイトル」の機能)。OS X のデフォルトでbashrc
は、このシーケンスを使用して、現在の作業ディレクトリをウィンドウ タイトルに挿入しています。
Vim が新しいファイルを編集するたびにこの特定のエスケープ シーケンスを出力するようにするにはどうすればよいか (そして、理想的には、終了時やファイルの変更時など、編集が停止したらそれを設定解除する方法) を知りたいです。egless
やその他のプログラムの拡張機能も非常に役立ちます。
URL は技術的には適切に URL エンコードされている必要がありますが、そうでなくてもまったく問題ありません。通常、私は Vim で特に珍しいファイル名のファイルを編集することはありません。
答え1
Vim の通常の処理を放棄しても構わない場合はtitle
、それをハイジャックできます。ターミナルに出力し、適切なシーケンスを発行するように調整できます。
set t_ts=^[]6;file://localhost
set t_fs=^G^M
set title
autocmd BufEnter * let &titlestring = expand("%:p")
control+vおよびを使用してesc、上記の制御文字のリテラル文字を取得します。シェル内の関数 around はvim
設定を消去します ( VimLeave
autocmd
7.3 では動作しませんでした。また、if-you-suspend の問題もありますvim
)。
function vim {
command vim "$@"
echo -ne "\033]6;\007"
}
:help title
詳細については、 を参照するか、Vimファイル内のコードをtitle
参照してください。src/term.c