我有一个看起来像这样的文件:
file1
file2
file3
.
.
.
filen
我想将其转换为:
echo "file1"
cat file1
echo "file2"
cat file2
.
.
.
.
echo "filen"
cat filen
一种方法是有一个 for 循环并读取原始文件的内容并将修改后的内容写入另一个文件,我这样做了,它奏效了。vim
在through:g
或任何其他命令中是否有任何命令可以执行相同的操作?
尝试这个:
:%s/.*/echo "\0"\rcat \0/g
解释:
:%s/a/b/g
表示搜索整个文件并替换a
为b
.
.*
表示匹配一行中的所有内容。
\0
表示匹配的东西。
\r
表示新行。
或者你可以应用一个宏
yypha"<esc>^iecho "<esc>j^icat <esc>j
yypha"
拉动当前行将其置于当前行之下并与h
a"<esc>
附加 a"
并返回正常模式^iecho "<esc>
放在echo "
前面,file*
然后又恢复正常j^icat<esc>
在下一行添加 cat 和j
最后转到下一行以准备重新应用宏您可以通过按下qq
和 描述的按钮来录制宏,或者
write yypha"^[^iecho "^[j^icat ^[j
with^[
被输入 as Ctrl-V
thenEsc
然后"qyy
在第 q 个寄存器中抽出该行,这也是一个可执行宏。
宏本身可以运行@q
一次或30@q
三十次。