首页 > 解决方案 > 如何在 Vim 映射/过滤器中使用扩展修饰符?

问题描述

我正在尝试获取缓冲区的绝对路径列表,但无法弄清楚如何将其添加:p到地图中expandexpand("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']

在地图或过滤器表达式中传递扩展修饰符的正确方法是什么?

标签: vimvi

解决方案


正确的方法是:h getbufinfo()

let l:files = map(getbufinfo({'buflisted': 1}), 'v:val.name')

关于任意文件名扩展,它是:h fnamemodify()用来做什么的。

echo fnamemodify('filename.ext', ':p')

另一方面,:h expand()执行 的扩展:h cmdline-special


推荐阅读