使用 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'
这是代码的算法:
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'