我现在使用标准命令,例如
:ls
或:bnext
。实际上,我在.vimrc中设置了以下内容: MRU插件实现。是否有一个像MRU一样简单但可以作用于缓冲区的插件?我不是Ctrlp的忠实拥护者,因为有时我不完全了解奇怪的行为(模糊模式选择...);
,所以我正在寻找一些像MRU插件一样简单的东西。无知编程vimscripts)
有什么建议吗?
#1 楼
您可以使用以下每个缓冲区填充快速修复列表,如下所示:行号,位置等)。在这种情况下,我们指定了一组最少的信息:缓冲区编号
setqflist()
接受一个List和一个表达式(一个字符串),并返回一个新的表达式列表,该表达式应用于输入的每个项目清单。在这里,我们获取列出的缓冲区编号的列表,并将其格式化以用于map()
(setqflist()
,其中'{"bufnr": v:val}'
是列表中项目的值)。不满足给定的表达式。这里的表达式是v:val
,表示存在并列出了缓冲区编号,即出现在filter()
输出中。buflisted(v:val)
生成从:ls
到range(a, b)
的数字列表。a
返回给定缓冲区名称的编号。如果参数是b
,则返回最大的缓冲区号。要键入很多,而且不太容易记住,因此可以将其包装在vimrc中的命令中:
:call setqflist(map(filter(range(1, bufnr('$')), 'buflisted(v:val)'), '{"bufnr": v:val}'))
现在,您只需使用
bufnr()
来填充快速修复列表。做这样的事情:command! Qbuffers call setqflist(map(filter(range(1, bufnr('$')), 'buflisted(v:val)'), '{"bufnr":v:val}'))
但是,我不建议这样做,因为它会使Quickfix列表对于
'$'
或:Qbuffers
之类的东西几乎无法使用。 >评论
感谢您的解释,Tommcdo。 Qbuffers很漂亮!也许我会在通话的最后添加一个:copen来立即打开quickfix窗口,也许报告光标位置可能很有用。我必须学习一点vimscript :-)
– Giorgio Robino
2015年2月23日在11:46
#2 楼
您应该尝试以下映射:nnoremap gb :ls<CR>:b<Space>
在提示符下,键入所需的缓冲区编号,然后按Enter。
评论
关于在quickfind窗口中列出缓冲区的问题。
–VeXii
16年1月7日,11:38
是的,我的答案提供了一个轻量级的选择。
– romainl
16年1月7日在13:15
OP表示他知道缓冲区列表,但希望将其放在quickfix窗口中。而您的解决方案就是只使用bufferlist?
–VeXii
16年1月7日在20:21
#3 楼
看看bufexplorer插件。它会在边栏中打开所有缓冲区的可浏览列表,类似于提到的MRU插件。另外,在vim.org上还有更多这样的插件。请不要将相同的问题同时提交给多个站点!评论
tks Ingo,我测试了一下bufexplorer,我喜欢它。我也在这里发布,因为建议使用stackoverflow
– Giorgio Robino
2015年2月23日在11:33
是的,我看到了。我希望您先删除原始的SO帖子,或者至少将其链接到交叉发布。
– Ingo Karkat
2015年2月23日在12:48
评论
您是说:bnext而不是:cnext吗?您是否特别需要将其作为quickfix窗口?还是只希望能够在窗口中看到打开的缓冲区? (因为有多个插件可以完成后者)。
我希望能够在窗口中浏览打开的缓冲区。确实,quickfix并不适用
@tommcdo:是的,抱歉,我通常的错别字。我的意思是:bnext,我更新了问题
相关:stackoverflow.com/questions/28669101/…