有没有办法列出 Vim 中所有打开的缓冲区?我想查看每个打开的缓冲区的完整文件路径并将列表保存到外部文件,或者将其粘贴到另一个文本文档中。
解决方案
这是一场非常艰苦的比赛!下面的所有三个建议都效果很好。我选择了 Luc Hermitte,并将其添加到我的 .vimrc
文件中:
noremap <silent> <leader>so :call writefile( map(filter(range(0,bufnr('$')), 'buflisted(v:val)'), 'fnamemodify(bufname(v:val), ":p")'), 'open_buffers.txt' )<CR>
现在输入 ,so
会将所有打开的缓冲区的完整路径保存到 open_buffers.txt
文件中的当前目录。
最佳答案
我会使用“简单”:
echo map(filter(range(0,bufnr('$')), 'buflisted(v:val)'), 'fnamemodify(bufname(v:val), ":p")')
与:
range(0,bufnr('$'))
拥有一个 |List|所有可能的缓冲区数量filter(possible_buffers, 'buflisted(v:val)')
将列表限制为实际列出的缓冲区 - 您可能更喜欢bufexist()
还将显示帮助缓冲区等。map(listed_buffer, 'nr_to_fullpath(v:val)')
将所有缓冲区编号转换为完整路径名bufname()
将单个缓冲区编号转换为(简化的)路径名fnamemodify(pathname, ':p')
从相对路径名获得完整的绝对路径名。
将 :echo
更改为 call writefile(pathname_list, 'filename')
,仅此而已,或者更改为 :put=
等。
关于file - 如何列出 Vim 中打开的所有缓冲区的文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236315/