我一直想知道,你如何在给定的参数内替代.
如果您有这样的一行:
123,Hello,World,(I am, here), unknown
Run Code Online (Sandbox Code Playgroud)
而且你想要替换World,Foobar那么这是一项简单的任务::%s/World/Foobar/
现在我想知道我怎么能摆脱一个,与之相关的东西( ).
从理论上讲,我只需要找到第一次出现,(然后,用空白代替).
尝试前瞻和后瞻断言:
%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 中运行。
| 归档时间: |
|
| 查看次数: |
1175 次 |
| 最近记录: |