Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vim缓冲区浏览器_Vim - Fatal编程技术网

vim缓冲区浏览器

vim缓冲区浏览器,vim,Vim,人们建议如何更容易地操纵vim中的缓冲区 使用ls和b1、bn和bp命令很好,但可能有更好的方法 lusty explorer是最佳选择吗 我使用的是vim 7.3。我使用的是。我想它的主要优点是占用的空间很小。我以前使用过很多插件,包括minibufexpl和Bufexplorer,但它们中都有一些东西曾经让我恼火 现在我使用young插件,我会推荐它,因为它似乎真的是最适合我的:它真的很快,很容易使用 就我个人而言,我想通过Ctrl+Tab和Shift+Ctrl+Tab切换我的缓冲区,缓冲区

人们建议如何更容易地操纵vim中的缓冲区

使用ls和b1、bn和bp命令很好,但可能有更好的方法

lusty explorer是最佳选择吗


我使用的是vim 7.3。

我使用的是。我想它的主要优点是占用的空间很小。

我以前使用过很多插件,包括minibufexpl和Bufexplorer,但它们中都有一些东西曾经让我恼火

现在我使用young插件,我会推荐它,因为它似乎真的是最适合我的:它真的很快,很容易使用

就我个人而言,我想通过Ctrl+Tab和Shift+Ctrl+Tab切换我的缓冲区,缓冲区应该按照最近使用的顺序排序

以下是我的自助餐配置,以实现和切换:

noremap <silent> <C-Tab> :Bufferlistsw<CR>
noremap <silent> <C-S-Tab> :Bufferlistsw<CR>kk
if !has('gui')
   map <S-q> :Bufferlistsw<CR>
endif

augroup BuffetAdd
   if !exists("g:BuffetAdded")
      let g:BuffetAdded = 1
      au BufWinEnter buflisttempbuffer* map <buffer> <Tab> <CR>
      au BufWinEnter buflisttempbuffer* map <buffer> <C-Tab>   j
      au BufWinEnter buflisttempbuffer* map <buffer> <C-S-Tab> k

      " in console Vim we can't use <C-Tab> mappings (almost always),
      " so this is temporary solution: <S-q>
      if !has('gui')
         au BufWinEnter buflisttempbuffer* map <buffer> <S-q> j
         au BufWinEnter buflisttempbuffer* map <buffer> q <CR>
      endif

      " workaround Surround plugin issue in Buffet's window:
      " disable "ds" mapping in the Buffet window (to make "d" work fast)
      au BufEnter buflisttempbuffer* nunmap ds
      au BufLeave buflisttempbuffer* nmap   ds <Plug>Dsurround

   endif
augroup END
noremap:Bufferlistsw
noremap:Bufferlistswkk
如果!has('gui')
地图:Bufferlistsw
恩迪夫
A组自助餐添加
如果!存在(“g:已添加”)
设g:1=1
au BufWanter buflisttempbuffer*地图
au BufWanter buflisttempbuffer*地图j
au BufWanter buflisttempbuffer*地图k
“在console Vim中,我们不能使用映射(几乎总是),
“所以这是暂时的解决办法:
如果!has('gui')
au BufWanter buflisttempbuffer*地图j
au BufWanter buflisttempbuffer*地图q
恩迪夫
“解决Buffet窗口中的环绕插件问题:
在自助餐窗口中禁用“ds”映射(使“d”快速工作)
au BufEnter buflisttempbuffer*nunmap ds
au BUFLIVE buflisttempbuffer*nmap ds DSURRUND
恩迪夫
螺旋端
只有一个问题:Vim不允许您映射某些键的释放,所以,您需要再次按Tab键以真正切换到缓冲区


不管怎样,如果你不需要切换,Buffet插件在没有它的情况下工作得很好。

你应该测试所有的插件,根据你的口味和要求看看哪一个是最好的

我已经用了一段时间,直到我尝试了它,我发现它更快更直观。我已经将
:CtrlPBuffer
映射到
,b
,并且没有理由抱怨:它既优雅、快速又直观


您不必依赖插件,但是:
:b
允许您通过选项卡查看所有可用缓冲区的列表。您可以使用
:b模式来获得较小的列表。

FuzzyFinder是另一个用于缓冲区/文件导航的优秀插件:


无论您为此选择哪个插件,都值得花一些时间来找出它可以帮助您的所有方法。

如果您对使用ruby支持编译vim感到满意,并且在系统上安装了开发工具链(make、gcc,可能还有其他东西-像我这样的Gentoo用户已经拥有了所有这些),那么这是一个不错的选择。要使用它切换缓冲区,您应该将某些内容映射到
:CommandTBuffer
,我有

nnoremap         ,b   :CommandTBuffer<CR>
nnoremap,b:CommandTBuffer
是一个新插件,是我从CtrlP切换到的插件


如果您想探索它的功能,这是一个很好的起点。

2019年6月更新

是我明确的缓冲区管理首选

" Buffer explorer
" ,be to open, q to close, d to delete buffer
Plug 'jlanzarotta/bufexplorer'
高度评价上述插件。它简单有效。详情请参阅

如果您正在寻找除上述(可选)之外的一些“附加功能”,我也会使用:

" Close buffers but keep splits
Plug 'moll/vim-bbye'
以及:

Plug'/usr/local/opt/fzf'
插头“junegunn/fzf.vim”
“此设置用于跨缓冲区快速搜索
nmap b:缓冲区

这里有一个错误:
has('gui')
检查vim是否使用gui支持编译,而不是您是否使用vim的gui版本。应该是
has('gui_running')
@ZyX,谢谢,你是对的。但是如果我运行vim的控制台版本(即
vim
,而不是
gvim
),那么
has('gui'))
也返回
0
。这取决于vim的编译方式。对于gui和控制台版本,我可以使用一个可执行文件来编译vim,其中
有('gui')
将返回1,事实上我使用它进行测试(编译一次比较简单).我完全同意第一种说法;有很多,而且非常主观,所以这取决于你的口味。找出一个好的系统来轻松切换插件(Vundle/Pathogen/VAM)然后尝试插件,直到找到适合您的设置。我想使用
:CtrlPBuffer
,因为我已经安装了CtrlP,但CtrlP没有列出所有缓冲区…只是一个子集。知道为什么吗?反之,我想映射
:buffer
(到Ctrl-a)插入.vimrc:
nnoremap:buffer
但我错了,因为我没有实现预期的行为..我将:CtrlPBuffer映射到C-a,现在在两个缓冲区之间切换(这是一个高频动作)是简单的C-a。
:b
非常简单,当您继续导航源代码时,通常需要在上一个文件和当前文件之间切换,然后打开另一个文件等。您需要记住上一个缓冲区并让您轻松切换。要在两个缓冲区之间切换,已经有内置的键绑定
(可能这实际上是
)我很惊讶,触发快乐10k+将其标记为有争议/固执己见…等等。fuzzy find还具有一个功能,即当您安装核心fzf库时,它(可选)挂接到shell中以生成ctrl-r(搜索历史记录)在终端上的一种模糊的互动体验。没有它我无法生活。
Plug '/usr/local/opt/fzf'
Plug 'junegunn/fzf.vim'
" this setting for quick search across buffers
nmap <silent> <leader>b :Buffers<cr>