如何使用 Vim map/filter 的扩展修饰符?
How to use expand modifiers with Vim map/filter?
我正在尝试获取我的缓冲区的绝对路径列表,但不知道如何将 :p
添加到 expand
,就像在 expand("v:val:p")
中一样。
let l:buffers = filter(range(1, bufnr('$')), 'buflisted(v:val)')
let l:buffiles = map(copy(l:buffers), 'expand(bufname(v:val).":p")')
上面的方法不起作用,将 :p
附加到作为缓冲区加载的每个文件名的末尾。 .例如
['.vim/vimrc:p']
在映射或过滤器表达式中传递扩展修饰符的正确方法是什么?
正确的方法是:h getbufinfo()
。
let l:files = map(getbufinfo({'buflisted': 1}), 'v:val.name')
关于任意文件名扩展,就是:h fnamemodify()
用的
echo fnamemodify('filename.ext', ':p')
另一方面,:h expand()
执行 :h cmdline-special
的扩展。
我正在尝试获取我的缓冲区的绝对路径列表,但不知道如何将 :p
添加到 expand
,就像在 expand("v:val:p")
中一样。
let l:buffers = filter(range(1, bufnr('$')), 'buflisted(v:val)')
let l:buffiles = map(copy(l:buffers), 'expand(bufname(v:val).":p")')
上面的方法不起作用,将 :p
附加到作为缓冲区加载的每个文件名的末尾。 .例如
['.vim/vimrc:p']
在映射或过滤器表达式中传递扩展修饰符的正确方法是什么?
正确的方法是:h getbufinfo()
。
let l:files = map(getbufinfo({'buflisted': 1}), 'v:val.name')
关于任意文件名扩展,就是:h fnamemodify()
用的
echo fnamemodify('filename.ext', ':p')
另一方面,:h expand()
执行 :h cmdline-special
的扩展。