我需要为vim窗口:setl stl=$title
设置标题。
$ title='It is b.c';
$ vim $file -c "setl stl=${title}";
不幸的是,set stl
不支持某些特殊字符,例如space
。我必须首先逃离特殊的角色。
$ vim $file -c "setl stl=${title// /\ }";//It\ is\ b.c
我想知道的是:
这个问题有没有方便的方法?vim对stl值有自己的转义函数吗?
答案 0 :(得分:2)
Vim确实有逃脱功能。它被称为escape()
。 (看看:h escape()
)。您可以将其与execute
(:h exec
)结合使用,以正确设置stl
。
vim $file -c "exec 'setl stl='.escape('${title}', ' ')"
此特定示例的vim命令是
:echo escape('It is b.c', ' ')
It\ is\ b.c
因此,您可以使用execute来正确构造字符串。其中.
用于字符串连接。
:exec 'setl stl=' . escape('It is b.c', ' ')
来自@NikitaKouevda的更简单的解决方案如下。 (:h let-&
)
vim $file -c "let &l:stl = '${title}'"
由于vim本身可以读取环境变量,因此可以进一步简化它。
vim $file -c 'let &l:stl=$title'