也就是说,我想在运行中构建一个包含转义序列的引用字符串(更为珍贵的转义字符)
这是我的代码:
let s:char = "x"
let s:combo = "\\<C-" . s:char . ">"
现在s:combo
包含"\\<C-x>"
,如何将其评估为"\<C-x>"
以执行与:normal
的组合?
答案 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>
被转换为它。