Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 非贪婪搜索_Vim - Fatal编程技术网

Vim 非贪婪搜索

Vim 非贪婪搜索,vim,Vim,我试图删除csv文件中每行第一个逗号之前的所有内容。 这些线条如下: -29.45829963684082~149.14680480957031,-000029.45829963684082, 000149.14680480957031,WGS84 -29.46190071105957~149.09509277343750,-000029.46190071105957, 000149.09509277343750,WGS84 当我执行%s/*,\\{-}/时,它会删除所有内容 如果我使用%s/

我试图删除csv文件中每行第一个逗号之前的所有内容。 这些线条如下:

-29.45829963684082~149.14680480957031,-000029.45829963684082, 000149.14680480957031,WGS84
-29.46190071105957~149.09509277343750,-000029.46190071105957, 000149.09509277343750,WGS84
当我执行
%s/*,\\{-}/
时,它会删除所有内容

如果我使用
%s/*,//
它会删除除WGS84之外的所有内容,这是我所期望的

谁能告诉我我做错了什么?我认为
\{-}
在Vim中强加了非贪婪匹配

谢谢


John

我会用
[^,]*
而不是
*
。这将使你的正则表达式不贪吃逗号

关于你的变体不起作用的原因,你的正则表达式中的对象似乎是错误的
{-}
应该等同于
*
但不是贪婪的,而且你已经习惯了
*
尽可能多地吸吮。你的反斜杠也太多了。尝试:

:%s/.\{-},//
相反

当我对您的测试输入执行此操作时,我得到:

-000029.45829963684082, 000149.14680480957031,WGS84
-000029.46190071105957, 000149.09509277343750,WGS84

正如所料。

以下是您需要做的

%s/[^,]*//

\{-}
是Vim中的非贪婪匹配,因此应该使用
\{-}
而不是
*

尝试:


另一种方法是使用global命令

:g//normal dt,

@康纳:哦,哇。我从来没有意识到:)从现在起我就这么用它@sehe退房::-)@康纳加。我会用
:g/^/t.
而不是那里的
:%norm Yp
。当然,
8@:
从那里以指数级增长文件:)@sehe是的,这不太实用。。。很有趣。那篇文章是在他的背景下写的。
:g//normal dt,