0

也就是说,我想动态构建一个带引号的字符串,其中包含转义序列(更珍贵的是,转义字符)

这是我的代码:

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

现在s:combo包含"\\<C-x>",我如何评估它"\<C-x>"以执行组合:normal

4

3 回答 3

1

:h eval()。就像是:

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

注意单引号内的双引号。

于 2012-03-02T04:38:50.640 回答
1

做你想做的最好的方法是使用“exe”:

exe "normal \<c-x>"
于 2012-03-02T06:16:53.607 回答
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>引号的 ,被翻译成它。

于 2012-03-04T04:07:08.103 回答