Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在所有打开的文件上使用VIM命令_Bash_Vim_Vi - Fatal编程技术网

Bash 在所有打开的文件上使用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中打开的文件列表:

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