我正在学习 power of g并且想要删除包含表达式的所有行,直到句子的末尾(用句点标记)。像这样:There was a little sheep. The sheep was black. There was another sheep.
(运行命令查找所有类似 There was
的句子并删除到下一个句点)。The sheep was black.
我试过了:
:g/There was/d\/\.
试图“向前删除直到下一个时期”,但我得到了 trailing characters
错误。 :g/There was/df.
但得到一个 df. is not an editor command error.
有什么想法吗?
最佳答案
与 g
相关的操作必须能够在线上操作,而无需来自 g
的模式匹配的位置信息。暗示。在您使用的命令中,delete forward 命令需要一个未提供的起始位置。
问题是g
仅表示行匹配,而不是模式匹配的特定字符位置。我做了以下事情,它做了我认为你想要的:
:g/There was/s/There was[^.]*[.]//
这找到了与模式匹配的行
There was
,并执行了正则表达式 There was[^.]*[.]
的替换用空字符串。这相当于:
:1,$s/There was[^.]*[.]//g
我不确定是什么
g
正在让您进入您的用例,除了自动应用到整个文件行范围(与 1,$
或 %
相同)。 g
在后一个示例中,与将替换应用于同一行上的所有模式有关,而不是与受替换命令影响的行范围有关。
关于Vim:删除所有包含模式的行的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460663/