有没有办法在vim中列出所有打开的缓冲区?我想查看每个打开缓冲区的完整文件路径,并将列表保存到外部文件,或者将其粘贴到另一个文本文档中.
解
这是一场非常艰难的比赛!以下所有3条建议都运作良好.我去了,Luc Hermitte's并把它添加到我的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")')
Run Code Online (Sandbox Code Playgroud)
附:
range(0,bufnr('$'))有一个|列表| 所有可能的缓冲区编号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=等.