Bash 在所有打开的文件上使用VIM命令
我有一个使用以下命令在VIM中打开的文件列表:Bash 在所有打开的文件上使用VIM命令,bash,vim,vi,Bash,Vim,Vi,我有一个使用以下命令在VIM中打开的文件列表: vim `cat list.txt` 我希望在所有打开的文件上运行此命令: :99,104 norm i# (从第99行到第104行,插入一条注释“#”)如果您必须(允许bufdo在不保存的情况下更改缓冲区),则我想可以: 然后使用:bufdo!保存所有文件!w或:wa (注意:set hidden也可以替换为。)如果您可以使用它,我认为sed将是一个更好的选择。sed是一个命令行编辑器,而不是像vim那样的交互式编辑器 sed -i '99,
vim `cat list.txt`
我希望在所有打开的文件上运行此命令:
:99,104 norm i#
(从第99行到第104行,插入一条注释“#”)如果您必须(允许bufdo
在不保存的情况下更改缓冲区),则我想可以:
然后使用:bufdo!保存所有文件!w
或:wa
(注意:
set hidden
也可以替换为。)如果您可以使用它,我认为sed将是一个更好的选择。sed是一个命令行编辑器,而不是像vim那样的交互式编辑器
sed -i '99,104s/^/#/' list of files
由于您已将所有文件作为参数提供,
:argdo
是正确的命令。(除非打开其他文件,:bufdo
也可以工作。)如果不想:设置隐藏
(如另一个答案所示),则必须通过:update
立即保留缓冲区。由于您使用的是:normal
命令,因此必须将其包含在:execute
中,才能连接另一个Ex命令:
:argdo 99,104 execute 'norm i#' | update
谢谢,我错过了“设置隐藏”。干杯。sed
是一个流编辑器。如果您想要一个可以从脚本或命令行驱动的(正版)文本编辑器,有ed
和ex
。
:argdo 99,104 execute 'norm i#' | update