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
如果你不介意放弃title
Vim 中的常规处理,你可以劫持它。它发送到终端,并且可以调整以发出适当的序列:
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
文件中的代码。