有没有办法在VIm中评估文字字符串引用字符串?

时间:2012-03-02 04:20:00

标签: escaping vim string-literals quote

也就是说,我想在运行中构建一个包含转义序列的引用字符串(更为珍贵的转义字符)

这是我的代码:

let s:char = "x"
let s:combo = "\\<C-" . s:char . ">"

现在s:combo包含"\\<C-x>",如何将其评估为"\<C-x>"以执行与:normal的组合?

3 个答案:

答案 0 :(得分:1)

请参阅:h eval()。类似的东西:

let s:char = "x"
let s:combo = eval('"\<C-' . s:char . '>"')

请注意单引号内的双引号。

答案 1 :(得分:1)

做你想做的事的最好方法是使用'exe':

exe "normal \<c-x>"

答案 2 :(得分:0)

如果您知道什么是控制序列,则可以使用以下代码:

let s:char='x'
let s:combo=nr2char(char2nr(toupper(s:char))-0x40)

。这适用于每个拉丁字母字符。

顺便说一下,在您的示例s:combo中包含\<C-x>,而不是\\<C-x>。问题是:normal期望双引号中的控制字符而不是\<C-x>\<C-x>被转换为它。