gpt4 book ai didi

insert - 使用 Vim 将文件名写入文件

转载 作者:行者123 更新时间:2023-12-02 09:58:26 25 4
gpt4 key购买 nike

我有许多文本文件(700+),我需要将每个文件的名称放入文件中每一行的开头。

例如,文件名 myfile0072.txt:

mike   160
jane 174

myfile0072.txt mike 160
myfile0072.txt jane 174

我在工作中无法使用 Bash、C、Perl 或任何其他语言。我可以在 Vim 中做些什么来获得结果吗?

最佳答案

这有两个阶段,首先将要编辑的所有文件放入参数列表中,然后将文件名添加到行中。

1) 将文件添加到参数列表。

使用“gvim *.txt”启动 vim(如果你的 shell 可以处理命令行上列出的 700 个文件),或者在没有打开文件的情况下加载 gvim(因此参数列表为空),然后:

cd /path/to/files
" Get the list of files
let filelist = glob('*.txt')
" Add files to the argument list
for file in split(filelist, '\n')
exe 'argadd ' . file
endfor
<小时/>

编辑:

更简洁的方法是:

:cd /path/to/files
:exe 'args' glob('*.txt')

编辑结束

<小时/>

2) 对所有文件进行所需的过滤:

:argdo %s/^/\=expand('%:t') . ' '/ | w

说明:

argdo 对参数列表中的每个文件运行该命令。

%s/FROM/TO/ 将 FROM 替换为 TO

^ 是行的开头(因此替换将 TO 添加到行的开头)

\= 表示 TO 应该是表达式的结果

expand('%:t') 给出当前文件的名称 (%),仅包括尾部 (':t'),因此没有前导目录名称。

。 ' ' 附加一个空格。

| 是命令连接字符,所以替换后运行:

w,将文件写入磁盘。

关于insert - 使用 Vim 将文件名写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com