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

BaR*_*Rud 1 vim

这可以映射{some_variable_name}={some_variable_name} =in吗vim?哪里?{some_variable_name}[A-Za-z0-9]

根据其他一些提示,我正在尝试:

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

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

这是行不通的。

请帮忙。

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

我正在尝试,但尚未成功。请帮忙

rom*_*inl 5

这个插入模式映射做了我认为你想要的,但你的问题是一个真正的混乱所以\xe2\x80\xa6 很好:

\n\n
:inoremap <expr> = getline(".")[col(".") - 2] !~# "[a-zA-Z]" ? "= " : " = "\n
Run Code Online (Sandbox Code Playgroud)\n\n

但在我看来,打字<Space>=是一个更好的解决方案。

\n\n

编辑:

\n\n

由于 Vim 在插入模式下处理光标位置的方式有些“奇怪”,因此getline(".")[col(".") - 2] !~# "[a-zA-Z]"不直观地将光标之前的字符与正则表达式进行比较[a-zA-Z]。用于getline(".")[col(".") - 1]光标后面的字符。

\n