我有一个看起来像这样的文件:
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"拉动当前行将其置于当前行之下并与ha"<esc>附加 a"并返回正常模式^iecho "<esc>放在echo "前面,file*然后又恢复正常j^icat<esc>在下一行添加 cat 和j最后转到下一行以准备重新应用宏您可以通过按下qq和 描述的按钮来录制宏,或者
write yypha"^[^iecho "^[j^icat ^[jwith^[被输入 as Ctrl-VthenEsc然后"qyy在第 q 个寄存器中抽出该行,这也是一个可执行宏。
宏本身可以运行@q一次或30@q三十次。