そのため、最近 Apple は、ターミナルのステータス バーに作業ディレクトリとファイルを表示するためのサポートを含めました。(現在のファイルを設定するために) 送信する必要があるエスケープ シーケンスは次のとおりです。
ESC ] 6 ; Pt BEL
wherePt
は、file://
現在編集中のファイルを指す URL です。それで、Vim にこのコマンドをエスケープ シーケンスとして送信させることができると考えましたが、少し問題があります。私はこれまでのところこれを持っています:
au BufNewFile,BufReadPost,BufFilePost,BufWritePost * echo <escape sequence>
しかし、私はそれがそのようにうまく機能しないと感じています。また、現在のファイルをfile://
URL として取得する方法もわかりませんが、netrw が役立つのではないかと思います。何か案は?
編集
これまでのところ、私はこれを持っています:
au BufNewFile,BufReadPost,BufFilePost * echo printf('\e]6;file://%s%s\a', $HOSTNAME, expand('%:p'))
しかし、まだ機能していません-$HOSTNAME
拡張されていません。これを拡張する方法についてのヒントはありますか?
編集 2
わかりましたので、引用符と exports にいくつかの変更を加えました$HOSTNAME
。これで、これは正常に印刷されます。しかし、エスケープ シーケンスを文字通りエコーする代わりに、vim はそれらを のよう^[
に出力しているため、役に立たなくなります! そして、ここで私の本当の質問が来ます.vimにリテラルエスケープシーケンスをシェルに送信させるにはどうすればよいですか?
成功!
最終的なコードは次のとおりです。
set title
set t_ts=^[]6;
set t_fs=^G
auto BufEnter * let &titlestring = "file://" . hostname() . expand("%:p")