Vim Substitution

Aji*_*jin 5 vim substitution

我一直想知道,你如何在给定的参数内替代.

如果您有这样的一行:

123,Hello,World,(I am, here), unknown
Run Code Online (Sandbox Code Playgroud)

而且你想要替换World,Foobar那么这是一项简单的任务::%s/World/Foobar/

现在我想知道我怎么能摆脱一个,与之相关的东西( ).

从理论上讲,我只需要找到第一次出现,(然后,用空白代替).

Ben*_*oit 4

尝试前瞻和后瞻断言:

%s/([^)]*\zs,\ze.*)//
Run Code Online (Sandbox Code Playgroud)

\zs\ze告诉模式开始和结束的位置)

或者

%s/\(([^)]*\)\@<=,\(.*)\)\@=//
Run Code Online (Sandbox Code Playgroud)

第一个更具可读性,第二个使用\( ... \)组内带括号的分组,这使得它看起来很混乱,\@<=除了是一个漂亮的 ASCII 艺术鸭子之外,还有后向运算符,即\@=先行运算符。

参考文献:(:help pattern更多详细信息请参见:help /\@=:help /\ze等)

您使用 GUI 并想尝试这些命令?将它们复制到剪贴板并:@+在 Gvim 中运行。