【问题标题】:Obtain all filenames in a directory using vim使用 vim 获取目录中的所有文件名
【发布时间】:2017-11-14 01:02:49
【问题描述】:

这是代码的算法:

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

所以问题是,我不知道如何编写“目录中的每个文件”。

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

【问题讨论】:

  • 你到底想做什么?这是没有意义的。你的最终目标是什么?

标签: file vim directory filenames


【解决方案1】:

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

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

【讨论】:

  • 虽然我认为这确实是他应得的答案,但我认为这不是他需要的答案。老实说,我不明白 glob 应该如何帮助他,重新映射每个文件的 C-o?写文件名???好吧我放弃我想你明白我的意思
【解决方案2】:

除了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 中没有变量,因此无法指定它们。交互式输入命令时,您可能会使用&lt;C-R&gt;= 插入变量内容:

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

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

execute 'sleep' timetowait . 'm'

【讨论】:

    猜你喜欢
    • 2012-01-10
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2014-05-20
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多