如何讓 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,可以透過 cmd+點擊來取得麵包屑路徑(OS X 上大多數檔案編輯器中「文件標題」的功能)。 OS X 預設bashrc已使用此序列將目前工作目錄插入視窗標題。

我想知道如何讓 Vim 在編輯新檔案時輸出這個特定的轉義序列(理想情況下,如何在編輯停止後取消設定 - 例如退出或檔案變更時)。對eg 和其他程式的擴充less也會非常有幫助。

儘管從技術上講 URL 必須進行正確的 URL 編碼,但如果不是的話我也完全沒問題 - 我通常不會在 Vim 中編輯具有特別不尋常的文件名的文件。

答案1

如果你不介意放棄titleVim 中的常規處理,你可以劫持它。它發送到終端,並且可以調整以發出適當的序列:

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

使用control+vand thenesc取得上面顯示的控製字元的文字字元。 shell 中的一個函數vim會清除該設定(VimLeave autocmd我無法在 7.3 中工作,並且還存在 if-you-suspendvim問題)。

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

:help title有關 的詳細信息title,或查看 Vimsrc/term.c文件中的代碼。

相關內容