Regex Vim使用Visual Studio的Vim插件在可视块中搜索2个或多个整数值,并将其替换为9 0

Regex Vim使用Visual Studio的Vim插件在可视块中搜索2个或多个整数值,并将其替换为9 0,regex,visual-studio-2010,vim,plugins,replace,Regex,Visual Studio 2010,Vim,Plugins,Replace,说我有 01 02 53 04 05 96 在可视块中 我想把它们全部转换成“000000000” 我目前正在使用以下表达式,但它似乎不起作用: :\%V'<,'>s/[0-9]+/000000000/g 我一直收到一个解析错误。我需要改变什么?我想你想要这个。将\%V移到替换项中,而不是移到替换项之前。我删除了\因为我使用了非常神奇的模式,这也是使用unescaped所必需的+ 或者您可以将[0-9]替换为\d我想您需要这个。将\%V移到替换项中,而不是移到替换项之前。我删除了

说我有

01
02
53
04
05
96
在可视块中

我想把它们全部转换成“000000000”

我目前正在使用以下表达式,但它似乎不起作用:

:\%V'<,'>s/[0-9]+/000000000/g

我一直收到一个解析错误。我需要改变什么?

我想你想要这个。将\%V移到替换项中,而不是移到替换项之前。我删除了\因为我使用了非常神奇的模式,这也是使用unescaped所必需的+


或者您可以将[0-9]替换为\d

我想您需要这个。将\%V移到替换项中,而不是移到替换项之前。我删除了\因为我使用了非常神奇的模式,这也是使用unescaped所必需的+

或者您可以用\%V是一个特殊的正则表达式原子的\d

替换[0-9];因此,它属于:substitute命令的{pattern}部分,而不在放置它的[range]中

因为这是Vim正则表达式方言的一个特长,所以您使用的Vim仿真可能不支持这一点。您可以尝试使用更常见的Vim功能解决此问题:

备选案文1 在分块选择中,执行r0。这将用0替换所有现有数字。 使用gv重新选择,然后通过I0000000添加缺少的0 备选案文2 您可以将可视块复制/移动到某个单独的空行区域,然后在该区域应用普通的3,6s//命令,然后再次按块删除结果并将其粘贴到原始选择上。

注意\%V是一个特殊的正则表达式原子;因此,它属于:substitute命令的{pattern}部分,而不在放置它的[range]中

因为这是Vim正则表达式方言的一个特长,所以您使用的Vim仿真可能不支持这一点。您可以尝试使用更常见的Vim功能解决此问题:

备选案文1 在分块选择中,执行r0。这将用0替换所有现有数字。 使用gv重新选择,然后通过I0000000添加缺少的0 备选案文2
您可以将可视块复制/移动到某个单独的空行区域中,然后在该区域上应用正常的3,6s//命令,然后再次按块删除结果并将其粘贴到原始选择上。

这不起作用,也许我的问题是我使用的是VisualStudioVim插件,它们不支持视觉替换。让我更新这个问题来反映这一点。@MatthewHoggan你说它不起作用是什么意思?我也没有VisualStudio,所以我不确定如何帮助他们,如果输出错误,可能还会添加示例输入和输出。我需要在cygwin的vim中测试这一点。如果它在那里工作,那么我会给你检查,直到其他人或我能够弄清楚为什么它在vim的文本版本中工作,而不是在VisualStudio的插件中。我唯一能提供的就是插件的输出。找不到VS2010插件输出窗口中表达式的输出模式:\v%v\d+。这在cygwin的vim中确实有效。所以我猜测可能有一种特殊的方式将其输入到visual studio插件内的vim提示符中。这不起作用,也许我的问题是我使用的是visual studio vim插件,它们不支持视觉替换。让我更新这个问题来反映这一点。@MatthewHoggan你说它不起作用是什么意思?我也没有VisualStudio,所以我不确定如何帮助他们,如果输出错误,可能还会添加示例输入和输出。我需要在cygwin的vim中测试这一点。如果它在那里工作,那么我会给你检查,直到其他人或我能够弄清楚为什么它在vim的文本版本中工作,而不是在VisualStudio的插件中。我唯一能提供的就是插件的输出。找不到VS2010插件输出窗口中表达式的输出模式:\v%v\d+。这在cygwin的vim中确实有效。所以我猜测可能有一种特殊的方式将其输入到VisualStudio插件内的vim提示符中。
:'<,'>s/\v%V[0-9]+/000000000/g