vim - 如何在 Vim 映射/过滤器中使用扩展修饰符?
问题描述
我正在尝试获取缓冲区的绝对路径列表,但无法弄清楚如何将其添加: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
。
推荐阅读
- excel - 如何在文本框中包含“单元格值”和文本
- javascript - 为什么灯箱不禁用滚动?
- javascript - 如何使用 jQuery/Javascript 更改 gridview 中的属性
- html - Intellisense 关闭了新文档
- html - 文本上的混合模式错误
- python - 从 Python 脚本中杀死由 Windows 上的批处理文件启动的外部进程
- javascript - 查找具有最匹配属性的项目
- ml.net - 选择 ml.net 功能以按单列对字符串进行分组
- image - 如何隐藏目录中的文件?
- multithreading - RAM 中的多线程布局是什么样的