有没有一种方法来评估一个文字字符串在VIm中引用的字符串?

问题描述:

也就是说,我想建立在包含转义序列飞带引号的字符串(更确切的,转义字符)有没有一种方法来评估一个文字字符串在VIm中引用的字符串?

这里是我的代码:

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

现在s:combo包含"\\<C-x>",我怎么能评估它到"\<C-x>":normal执行组合?

请参阅:h eval()。例如:

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

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

+0

它的工作原理,谢谢!非常聪明。我试过eval(“\\ ”),但它不会。 – 2012-03-02 12:43:23

做你想做什么是使用“EXE”的最佳方式:

exe "normal \<c-x>" 
+0

这正是我所做的,但我想评估“\\ ”到“\ ”,因为它是在飞行中建立的。 – 2012-03-02 12:34:32

如果你知道什么是你可以改用以下控制顺序:

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

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

顺便说一句,在你的例子s:combo包含\<C-x>,而不是\\<C-x>。问题是,:normal预计控制字符,而不是\<C-x>,\<C-x>双引号被翻译成它。