ex 相当于 d/^Mark,用于 gvim -c 和 argdo

ex 相当于 d/^Mark,用于 gvim -c 和 argdo

我大部分时间都在使用 Windows 8,并将其用作gvim -csed 的替代品。我认为我可以使用 Cygwin 来获取 sed,但我希望我可以使用 来做到这一点gvim -c

我有一个制表符分隔的 .txt 文件目录,其中一些文件具有我想删除的标题(如下所示)。

Definition of the Ultimate Owner :                                                                                                                                                  
- minimum percentage that must characterize the path from a subject company up to its Ultimate owner : 25.01%                                                                                                                                                   
- At least one of its shareholders must be known and it cannot own more than 25.01%                                                                                                                                                 

Mark     Company name ... 

要在 gvim 会话中删除标题,我会使用d/^Mark,然后:wq。但我有数百个这样的标题,所以我想使用gvim -cargdo。我经常用 来做这件事s//,比如gvim -c "argdo %s/foo/bar/ge | wq" *.tex

我的第一个想法是gvim -c "d/^Mark | wq" *.txt,但这不起作用,因为/它不是一个 ex 命令。

d/^Mark是否有可以与gvim -cand一起使用的ex 等效项argdo

答案1

您需要:d[elete]一个带有范围的命令:

:[fromline],[toline]d

范围不限于绝对行号:也可以使用搜索:

:1,/bar/d

删除第 1 行和包含 的第一行之间的所有行bar

以下命令删除从第 1 行到第一行上面一行之间的每一行,以 开头bar

:1,/^bar/-1d

假设您之前没有传递其他可以移动光标的命令,我们可以删掉几个字符:

  • 如果范围的第一部分缺失,则假定当前行,因为我们打开了一个新缓冲区,并且我们没有移动光标,我们可以删除1

  • 的默认偏移量-1,因为这是我们使用的偏移量,所以我们1也可以省略最后一个。命令变为:

    :,/^bar/-d

根据上面的积木构建,以下命令应该可以工作:

$ gvim -c "argdo ,/^Mark/-d | wq" *.txt

相关内容