使用 vim 获取目录中的所有文件名

Obtain all filenames in a directory using vim

这是代码的算法:

for every *file* in a directory
  nnoremap ,*file* <C-o>:read $HOME/*file*
end

所以问题是,我不知道如何编码 "for every file in a directory"。

PS: 我是vim新手,不知道可不可以

您正在寻找 glob() 函数。 -> glob($HOME.'/*')

我不确定这是个好主意,但是嘿,我能评判谁? :)

除了glob()(见@LucHermitte的回答),你还需要:execute:

execute 'nnoremap ,' . file . ' <C-o>:read $HOME/' . file

(或者更优雅地使用 printf():)

execute printf('nnoremap ,%s <C-o>:read $HOME/%s', file, file)

描述

Vimscript 的计算方式与在 : 命令行中键入的 Ex 命令完全相同。 ex 中没有变量,因此无法指定它们。交互式输入命令时,您可能会使用 <C-R>= 来插入变量内容:

:sleep <C-R>=timetowait<CR>m<CR>

... 但在脚本中,必须使用 :execute。 Ex 命令的所有文字部分都必须用引号(单引号或双引号)括起来,然后与变量连接起来:

execute 'sleep' timetowait . 'm'