相关疑难解决方法(0)

如何在Vim中发送转义序列?

因此,最近苹果公司已经支持在终端的状态栏中显示工作目录和文件。必须发送(设置当前文件)的转义序列是这样的:

ESC ] 6 ; Pt BEL
Run Code Online (Sandbox Code Playgroud)

其中Ptfile://网址指向当前正在编辑的文件。所以我想我可以让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没有得到扩展。任何人都对如何使其扩展有任何建议?

编辑2

好的,所以我对引号进行了一些更改并导出了$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)

vim ansi-escape viml

5
推荐指数
1
解决办法
948
查看次数

标签 统计

ansi-escape ×1

vim ×1

viml ×1