vi/vim命令行选项使用-c

3

目标:

/^Mar 查找模式(行以Mar开头) GN 找到此模式的最后出现 dgg 从当前位置删除到文件顶部 :wq 写入并退出

我已经尝试了:

vi -c /^Mar -c GN -c dgg -c wq testfile.log

它会报错,提示GN不是编辑器命令 dgg不是编辑器命令

但当我在vi内输入相同命令时,它们可以正常工作。我希望我只是缺少一些简单的东西,但我已经在Google上搜索了很长时间,显然没有问对问题。

谢谢!

2个回答

3
使用-c开关后提供的命令被解释为Ex命令,这意味着例如-c GN将表现得像在vim内运行:GN一样。在命令前加上“normal”以在正常模式下解释它: vi -c "/^Mar" -c "normal GN" -c "normal dgg" -c wq testfile.log

1

在命令行中写的命令是 ex 命令。当使用 vim 时,它们是以 ":" 前缀的命令。您可以重写命令行以使用 ex 命令:

vi -c '/^Mar' -c '$' -c '?' -c '1,.d' -c 'wq' testfile.log

这应该基本上与所需的相同 - 找到模式,转到最后一行,向后找到模式,删除从开头到当前行的所有内容,写入并退出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接