如何让 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文件中的代码。

相关内容