vim编号之间的搜索和更换

vim编号之间的搜索和更换,vim,Vim,我有一个模式,CSV文件中的数字之间有双引号。 我可以通过[0-9]\“[0-9]来搜索模式,但如何在删除双引号.CSV格式时保留值,如下所示: "1234"5678","Text1","Text2" "987654321","Text3","text4" "7812891"3","Text5","Text6" 正如你可能注意到的,我想删除一些数字之间的双引号 我尝试了以下方法,这是不正确的: :%s/[0-9]\"[0-9]/[0-9][0-9]/g 是否可以在每个搜索模式下执行一个命令,

我有一个模式,CSV文件中的数字之间有双引号。 我可以通过[0-9]\“[0-9]来搜索模式,但如何在删除双引号.CSV格式时保留值,如下所示:

"1234"5678","Text1","Text2"
"987654321","Text3","text4"
"7812891"3","Text5","Text6"
正如你可能注意到的,我想删除一些数字之间的双引号

我尝试了以下方法,这是不正确的:

:%s/[0-9]\"[0-9]/[0-9][0-9]/g

是否可以在每个搜索模式下执行一个命令,可以向前移动一个字符并将其删除。如何在搜索和替换中嵌入“lx”。

您需要捕获组。请尝试:

:%s/\(\d\)"\(\d\)/\1\2/g

[数字也可以用
\d
表示]

您需要在正则表达式中使用边界

试试这个:

:%s/\([0-9]\)"\([0-9]\)/\1\2/g
有点幼稚的解决方案:

%s/^"/BEGINNING OF LINE QUOTE MARK/g
%s/\",\"/quote comma quote/g
%s/\"$/quota end of line/g
%s/\"//g
%s/quota end of line/"/g
%s/quote comma quote/","/g
%s/BEGINNING OF LINE QUOTE MARK/"/g

可以很容易地创建宏,并根据需要多次调用它。

我知道这个问题已经得到了回答,但这里有另一种方法:

:%s/\d\zs"\ze\d
说明:

%s
替换整个缓冲区
\d
查找数字
\zs
在此处设置匹配的开始位置
查找双引号
\ze
在此处设置匹配结束
\d
查找数字

这使得替换命令仅匹配由数字包围的双引号。
省略替换字符串只会删除匹配项