Gnats错误跟踪程序有一个命令(edit-pr),可在$ EDITOR中打开故障单。我的$ EDITOR是VIM,当此命令在$ EDITOR中打开故障单时,我想自动执行一些脚本编辑,而不必进行任何其他的击键。
有没有办法编写可以像这样非交互式运行的VIM脚本?
Gnats错误跟踪程序有一个命令(edit-pr),可在$ EDITOR中打开故障单。我的$ EDITOR是VIM,当此命令在$ EDITOR中打开故障单时,我想自动执行一些脚本编辑,而不必进行任何其他的击键。
有没有办法编写可以像这样非交互式运行的VIM脚本?
Answers:
要以非交互方式执行vim,可以使用+{command}
/ -c {command}
或-s
参数,该参数将允许您在读取第一个文件后执行vim命令。
检查以下几个示例。
使用管道可以通过以下命令实现简单的标准输入和输出:
$ echo Example | vim -es '+:wq! /dev/stdout' /dev/stdin | cat
要编辑一个文件并将更改保存到另一个文件:
$ vim -es '+:0,$s/127/128/g' '+:wq! new_file' /etc/hosts
$ cat file1 file2 | vim - -es '+:0,$s/foo/test/g' '+:wq! file3'
要就地编辑文件,可以使用-s {scriptin}
来读取脚本文件,例如:
$ echo ':0,$s/foo/test/ge' > cmds.txt
$ echo ':wq' >> cmds.txt
$ vim -s cmds.txt -es file
要解析文件并将其发送到管道的输出,您可以尝试以下操作:
$ cat /etc/hosts | vim -es '+:0,$s/127/128/g' '+%print' '+:q!' /dev/stdin | cat
要么:
$ cat /etc/hosts | vim -es '+:0,$s/127/128/g' '+:wq! /dev/stdout' /dev/stdin | cat
查看更多:如何非交互地编辑文件(例如,在管道中)?在Vim SE
:hi
可滚动显示的位置-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
吗?它不会出现在缓冲区列表中,用:w
w写入将写入一个空文件(并且“ enter”键会导致分页器滚动或退出。)我可以使用:redir! >file | :hi | :redir END
,它捕获的内容与滚动一样多。我认为它可能像2向机械地工作more
。我想知道为什么:help
而且:hi
都没有页面缓冲或都没有RO缓冲...