因此,最近苹果公司已经支持在终端的状态栏中显示工作目录和文件。必须发送(设置当前文件)的转义序列是这样的:
ESC ] 6 ; Pt BEL
Run Code Online (Sandbox Code Playgroud)
其中Pt的file://网址指向当前正在编辑的文件。所以我想我可以让Vim以转义序列的形式发送此命令,但是我有点麻烦。到目前为止,我有:
au BufNewFile,BufReadPost,BufFilePost,BufWritePost * echo <escape sequence>
Run Code Online (Sandbox Code Playgroud)
但我有种感觉,它不会像那样工作。另外,file://尽管我怀疑netrw可能会帮助我,但我也不知道如何获取当前文件作为url。有任何想法吗?
到目前为止,我有这个:
au BufNewFile,BufReadPost,BufFilePost * echo printf('\e]6;file://%s%s\a', $HOSTNAME, expand('%:p'))
Run Code Online (Sandbox Code Playgroud)
但它仍然无法正常工作- $HOSTNAME没有得到扩展。任何人都对如何使其扩展有任何建议?
好的,所以我对引号进行了一些更改并导出了$HOSTNAME,现在可以正常打印了。但是,vim ^[并没有像字面上那样呼出转义序列,而是像那样打印它们,这使它们毫无用处!所以这是我真正的问题:如何使vim将字面量转义序列发送到shell?
最终代码如下:
set title
set t_ts=^[]6;
set t_fs=^G
auto BufEnter * let &titlestring = "file://" . hostname() . expand("%:p")
Run Code Online (Sandbox Code Playgroud)