目标:
/ ^ Mar找到一个模式,(行以Mar开头) GN查找此模式的最后一次出现 dgg从当前位置删除到文件顶部 :wq写和退出
我试过了:
vi -c / ^ Mar -c GN -c dgg -c wq testfile.log
它抱怨GN不是编辑器命令 dgg不是编辑器命令
然而当我在vi中发出相同内容时,它们的工作正常。我希望我只是遗漏了一些简单的东西,但我已经在Google上搜索了很长时间,显然也无法提出正确的问题。
谢谢!
答案 0 :(得分:3)
在-c开关之后提供的命令被解释为Ex命令,这意味着例如
-c GN
的行为就像在vim中运行:GN
一样。在命令前加上“normal”以便在正常模式下解释它:
vi -c "/^Mar" -c "normal GN" -c "normal dgg" -c wq testfile.log
答案 1 :(得分:1)
命令行中写入的命令是ex命令。它们是在使用vim时以“:”为前缀的命令。您可以重写命令行以使用ex命令:
vi -c '/^Mar' -c '$' -c '?' -c '1,.d' -c 'wq' testfile.log
这应该基本上与需要的相同 - 找到模式,转到最后一行,向后找到模式,删除从开始到当前行的所有内容,写入和退出。