file - 如何列出 Vim 中打开的所有缓冲区的文件路径?

标签 file vim enumerate

有没有办法列出 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/

相关文章:

c++ - 你如何在 C++ 中获取文件?

c - 使用 fscanf 读取文件

vim "syntax on"不起作用

vim - 有没有类似vim的code-collapse-plugin?

python - 枚举列表中的列表

java - 为什么java中的文件操作不需要i++?

python - 在文件中打印不匹配(唯一)的行

excel - 如何枚举 Excel 中的重复行?

regex - 使用 vim 正则表达式对数字进行通信

java - Java中枚举类型的问题