使用正则表达式在vim中映射变量

时间:2014-06-16 16:13:49

标签: vim

是否可以将{some_variable_name}=映射到{some_variable_name} =中的vim{some_variable_name}[A-Za-z0-9]的哪个位置?

从其他一些提示中,我在尝试:

:inoremap ?P<name>([A-Za-z0-9-_])=  ${name} = 

编辑 ,这样,如果我输入“a =”,它将被转换为“a =”,如果我输入“blah =”,它将会转换为“blah =”

无效。

请帮助。

编辑:可能是一种更简单的方法来定义问题:动态地将“=”替换为“=”,然后是[A-z0-9]。

我正在尝试,但还没有成功。请帮助

1 个答案:

答案 0 :(得分:3)

这种插​​入模式映射可以实现我想要的你想要的,但你的问题真是一团糟......所以......好吧:

:inoremap <expr> = getline(".")[col(".") - 2] !~# "[a-zA-Z]" ? "= " : " = "

但输入<Space>=是一个很多更好的解决方案IMO。

编辑:

由于某些&#34;古怪&#34;在Vim在插入模式下处理光标位置的方式中,getline(".")[col(".") - 2] !~# "[a-zA-Z]"不正确地将光标前的字符与正则表达式[a-zA-Z]进行比较。使用getline(".")[col(".") - 1]作为光标后面的字符。