在vimscript中将字符串转换为键代码

在vimscript中将字符串转换为键代码,vim,Vim,是否有某种方法可以将字符串转换为Vimscript中由\动态显示的关键代码?我想让成为用户可以为绑定指定的选项,但在运行时通过检查getchar()的结果来检测\。这可能吗?我不明白,getchar()有什么问题?如果你需要一个字符串,你通常会写 let char=getchar() if type(char)==type(0) let char=nr2char(char) endif 并像往常一样进行比较: if char is# "\<C-a>" … endif

是否有某种方法可以将字符串
转换为Vimscript中由
\
动态显示的关键代码?我想让
成为用户可以为绑定指定的选项,但在运行时通过检查getchar()的结果来检测
\
。这可能吗?

我不明白,
getchar()
有什么问题?如果你需要一个字符串,你通常会写

let char=getchar()
if type(char)==type(0)
    let char=nr2char(char)
endif
并像往常一样进行比较:

if char is# "\<C-a>"
    …
endif
如果char是#“\”
…
恩迪夫
。如果您需要比较的右侧是一些用户定义的变量,这不是问题,只需告诉用户使用
let g:var=“\”
代替
let g:var=“”
。尽管使用后者也是可能的:以下技巧将
转换为
“\”


let string=eval(“”).escape(string,“\”我不明白,
getchar()有什么问题?
?如果你需要字符串,你通常会写

let char=getchar()
if type(char)==type(0)
    let char=nr2char(char)
endif
并像往常一样进行比较:

if char is# "\<C-a>"
    …
endif
如果char是#“\”
…
恩迪夫
。如果您需要比较的右侧是某个用户定义的变量,这不是问题,只需告诉用户使用
let g:var=“\”
代替
let g:var=“”
。尽管也可以使用后者:以下技巧将
转换为
”\


let string=eval(“”).escape(string,“\”谢谢!我想做的就是
let g:var=”“
,而不是
let g:var=“\”
,因为我想在map命令中使用变量,并将其与上面描述的getchar()的结果进行比较。您的上一个命令工作得非常好!不知道eval()以前。我最后使用了
exec'let string=“\'.'”
,这似乎也很有效,但我更喜欢你的方式!@terryma
noremap^A
(其中
^A
是原始控制字符)与
noremap
一样有效。您不需要在
*map
命令中使用
符号。事实上,如果某些vi兼容性设置被打开,它们甚至不起作用(但从未在其他人的设置中看到它们被打开).@terryma您将被迫使用
符号的唯一情况是
lhs
中的空格。当我的插件的一些用户试图在Mac中映射命令键时,这对他们不起作用。例如
“\”
给一些用户造成了问题,并且
起了作用。我发现解决他们问题的唯一方法是让他们映射
,但将其转换为插件中的
“\”
,我需要将其与
getchar()
的结果进行比较。谢谢!我想做的正是
let g:var=“”
而不是
let g:var=“\”
,因为我想在map命令中使用变量,并将其与上面描述的getchar()结果进行比较。您的上一个命令工作得非常好!以前不知道eval()。我最后使用了
exec'let string=“\”。”“
这似乎也行,但我更喜欢你的方式!@terryma
noremap^A
(其中
^A
是原始控制字符)与
noremap
一样有效。您不需要在
*map
命令中使用
符号。事实上,如果某些vi兼容性设置被打开,它们甚至不起作用(但从未在其他人的设置中看到它们被打开).@terryma您将被迫使用
符号的唯一情况是
lhs
中的空格。当我的插件的一些用户试图在Mac中映射命令键时,这对他们不起作用。例如
“\”
给一些用户造成了问题,并且
起了作用。我发现解决他们问题的唯一方法是让他们映射
,但将其转换为插件中的
“\”
,我需要将其与
getchar()的结果进行比较