vim对`set stl`值有自己的转义函数吗?

时间:2014-05-12 04:58:42

标签: vim escaping

我需要为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值有自己的转义函数吗?

1 个答案:

答案 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'