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