vimに端末にドキュメントパスを表示させる方法は?

vimに端末にドキュメントパスを表示させる方法は?

OS X 10.11は、フォームの制御順序を解釈するTerminal.appに素晴らしい機能を追加します。

ESC ] 6 ; file://hostname/<path-as-URL> BEL

現在編集中または表示している「文書」を指定します。たとえば、次のように入力します。

echo -e "\x1b]6;file://localhost/etc/passwd\a"

端末のタイトルにfilenameが表示されます。passwdこれは、ナビゲーションパス(ほとんどのOS Xファイルエディタの「ドキュメントタイトル」機能)をcmd +クリックすることで達成できます。 OS Xはbashrc既にデフォルトでこの順序を使用して、現在の作業ディレクトリをウィンドウのタイトルに挿入します。

新しいファイルを編集するときにVimにこの特定のエスケープシーケンスを出力させる方法を知りたいです(理想的には、編集が中止された後(シャットダウン時やファイルが変更されたときなど)設定を解除する方法など)。たとえば、他のプログラムへの拡張lessも非常に役立ちます。

技術的には、URLは適切にURLエンコードする必要がありますが、そうでなくても大丈夫です。私は通常Vimで特に珍しいファイル名を持つファイルを編集しません。

ベストアンサー1

Vimの通常の処理をあきらめても問題ない場合は、titleVimをハイジャックできます。これは端末に送信され、適切なシーケンスをエクスポートするように調整できます。

set t_ts=^[]6;file://localhost
set t_fs=^G^M
set title
autocmd BufEnter * let &titlestring = expand("%:p")

上記の制御文字のリテラル文字を取得するには、およびcontrol+vthenを使用します。escシェルにはvimその設定を消去する機能があります(VimLeave autocmd7.3では機能できず、一時停止する場合はvim問題があります)。

function vim {
    command vim "$@"
    echo -ne "\033]6;\007"
}

:help title詳細については、Vimファイルのコードをtitle確認してください。src/term.c

おすすめ記事