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

用正则表达式映射vim中的变量,vim,Vim,这是否可以将{some_variable_name}=映射到{some_variable_name}=中的{some_variable_name}=?其中{some_variable_name}是[A-Za-z0-9] 从其他一些提示中,我尝试: :inoremap ?P<name>([A-Za-z0-9-_])= ${name} = :inoremap?P([A-Za-z0-9-)]=${name}= 编辑以便,如果我键入“a=”,它将转换为“a=”,如果我键入“blah=

这是否可以将
{some_variable_name}=
映射到
{some_variable_name}=
中的
{some_variable_name}=
?其中
{some_variable_name}
[A-Za-z0-9]

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

:inoremap ?P<name>([A-Za-z0-9-_])=  ${name} = 
:inoremap?P([A-Za-z0-9-)]=${name}=
编辑以便,如果我键入“a=”,它将转换为“a=”,如果我键入“blah=”,它将转换为“blah=”

这是行不通的

请帮忙

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


我正在努力,但还没有成功。请帮忙

这个插入模式映射实现了我认为您想要的功能,但您的问题真是一团糟,所以

:inoremap <expr> = getline(".")[col(".") - 2] !~# "[a-zA-Z]" ? "= " : " = "
:inoremap=getline(“.”[col(“.”-2]!~#“[a-zA-Z]”?"= " : " = "
但是键入
=
是一个更好的解决方案

编辑:


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

此插入模式映射符合您的要求,但您的问题真是一团糟,所以

:inoremap <expr> = getline(".")[col(".") - 2] !~# "[a-zA-Z]" ? "= " : " = "
:inoremap=getline(“.”[col(“.”-2]!~#“[a-zA-Z]”?"= " : " = "
但是键入
=
是一个更好的解决方案

编辑:


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

此插入模式映射符合您的要求,但您的问题真是一团糟,所以

:inoremap <expr> = getline(".")[col(".") - 2] !~# "[a-zA-Z]" ? "= " : " = "
:inoremap=getline(“.”[col(“.”-2]!~#“[a-zA-Z]”?"= " : " = "
但是键入
=
是一个更好的解决方案

编辑:


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

此插入模式映射符合您的要求,但您的问题真是一团糟,所以

:inoremap <expr> = getline(".")[col(".") - 2] !~# "[a-zA-Z]" ? "= " : " = "
:inoremap=getline(“.”[col(“.”-2]!~#“[a-zA-Z]”?"= " : " = "
但是键入
=
是一个更好的解决方案

编辑:


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

举个例子,说明您想要什么。我不能理解你的要求。@Kent:example/intention added你想要像
%s/\v(\s)\=/\1=/g |%s/\v\=(\s)/=\1/g
。但不确定如何映射它%s/\v(\s)\=/\1=/gc也在做,但不在映射中请举例说明您想要什么。我不能理解你的要求。@Kent:example/intention added你想要像
%s/\v(\s)\=/\1=/g |%s/\v\=(\s)/=\1/g
。但不确定如何映射它%s/\v(\s)\=/\1=/gc也在做,但不在映射中请举例说明您想要什么。我不能理解你的要求。@Kent:example/intention added你想要像
%s/\v(\s)\=/\1=/g |%s/\v\=(\s)/=\1/g
。但不确定如何映射它%s/\v(\s)\=/\1=/gc也在做,但不在映射中请举例说明您想要什么。我不能理解你的要求。@Kent:example/intention added你想要像
%s/\v(\s)\=/\1=/g |%s/\v\=(\s)/=\1/g
。但不确定如何映射它%s/\v(\s)\=/\1=/gc也在做,但不在map中。虽然您的解决方案(一如既往)工作正常(我已经标记为已接受),但我仍然无法理解发生了什么。特别是,
[col(“.”-2]~#据我所知,您将从当前行的当前列返回2列…然后…不知道。您能解释一下吗?虽然您的解决方案(一如既往)运行良好(我已经标记为已接受),但我仍然无法理解发生了什么。特别是,
[col(“.”-2]~#据我所知,您将从当前行的当前列返回2列…然后…不知道。您能解释一下吗?虽然您的解决方案(一如既往)运行良好(我已经标记为已接受),但我仍然无法理解发生了什么。特别是,
[col(“.”-2]~#据我所知,您将从当前行的当前列返回2列…然后…不知道。您能解释一下吗?虽然您的解决方案(一如既往)运行良好(我已经标记为已接受),但我仍然无法理解发生了什么。特别是,
[col(“.”-2]~#据我所知,您将从当前行的当前列返回2列…然后…不知道。你能解释一下吗?