当前位置:  开发笔记 > 编程语言 > 正文

你更喜欢在Vim中的缓冲区之间切换?

如何解决《你更喜欢在Vim中的缓冲区之间切换?》经验,为你挑选了8个好方法。

我已经尝试过MiniBufExplorer,但我通常会在几个窗口显示它或完全关闭它.我喜欢的是像LustyJuggler这样的增量搜索,我在Emacs中的缓冲区之间切换的方式.肯定有这样的剧本?



1> Sam Stokes..:

我过去常常使用制表符和多个gvim实例的组合,在每个实例中将相关文件组保留为制表符.只要我在一个实例中没有结束太多选项卡,标签栏就会一目了然地显示您正在编辑的每个文件的名称.

然后我读了Jamis Buck关于他如何从TextMate切换回vim的帖子,并学到了一些很棒的技巧:

Ctrl-w s和Ctrl-w v分割当前窗口

Ctrl-6在同一窗口中的两个缓冲区之间来回切换.

令人敬畏的fuzzyfinder.vim,它可以自动完成当前目录中文件的搜索或当前打开的缓冲区的搜索

Jamis拥有自己的fuzzy_file_finder和fuzzyfinder_textmate,它稍微修改了fuzzyfinder的工作方式,使其更像TextMate中的类似功能(据我所知,不同之处在于它匹配文件名中的任何位置而不是仅从头开始).观看此视频,了解相关信息.

现在我只有一个gvim实例,最大化,并将其拆分为多个窗口,这样我就可以同时看到几个文件.我将Ctrl-F绑定到fuzzyfinder_textmate,所以现在如果我输入(比方说)Ctrl-F,mod/usob它会打开app/models/user_observer.rb.我几乎从不打扰任何标签.

更新2010/08/07

虽然如同Casey在评论中指出的那样,fuzzyfinder_textmate仍然很棒,但它已不再保留.此外,它(和/或fuzzyfinder.vim)在处理大型项目(大量目录或文件)时变得有点慢和不稳定,所以我一直在寻找替代方案.

幸运的是,Wincent Colaiuta的Command-T插件似乎有一个非常好的选择.这与fuzzyfinder_textmate的行为非常相似(如果不是稍微好一些),但明显更快; 它还具有很好的功能,如能够在拆分或垂直拆分中打开找到的文件.谢谢(并赞成!)David Rivers指出它.


尝试ctrlp vim插件(http://kien.github.com/ctrlp.vim/)它实现了fuzzyfinder,但有更多有用的功能:)

2> orip..:

我用基础知识 - ' :ls'+' :bn'/' :bp'+' :b '


Pax,我仍然没有看到它.:-)
:-)我从没想过我会在同一个句子中看到"简单"和"':ls'+':bn'/':bp'+':b '".

3> Dave Ray..:

我喜欢"ctrl-w s"和"ctlr-w v"来拆分窗口.然后我按住ctrl来映射移动键(h,j,k,l)以在分割窗口之间移动:

" Map ctrl-movement keys to window switching
map  
map  
map  
map  

不得不把手移到箭头键上很烦人.

接下来,我设置了ctlr-tab以在当前窗口中的缓冲区之间切换(像许多其他环境一样):

" Switch to alternate file
map  :bnext
map  :bprevious

在过去的几年里,这些对我来说效果很好,尽管vim总是比你知道的更多秘密.


此外,带有hjkl的将切换窗口 - 不需要箭头键.
要求RSI.我已将映射到`:bp`并将映射到`:bn`
您的评论"切换到备用文件"具有误导性,因为Vim已经有一个备用文件,它是您以前的文件,您可以使用ctrl-6轻松切换当前(%)和备用(#)文件.
在正常模式下重新映射似乎是一个糟糕的选择,因为这是常用的(用于连接线).

4> David Rivers..:

我几个月来一直在使用Wincent Colaiuta的Command-T vim插件.Wincent在C中编写了需要快速的部分,我必须说它是!而且,我认为它的文件模式匹配逻辑甚至比Textmate的Command-T更好.看看截屏视频.

VIM的Command-T插件提供了一种非常快速,直观的机制,可以用最少的击键次数打开文件.它被命名为"Command-T",因为它的灵感来自绑定到TextMate中Command-T的"Go to File"窗口.

通过键入出现在其路径中的字符来选择文件,并通过算法排序,该算法知道在某些位置出现的字符(例如,紧跟在路径分隔符之后)应该被赋予更多权重.

更容易的缓冲切换包含许多有用的提示.我已经将以下内容改编为我的.vimrc,它执行缓冲区名称自动完成,将最有用的缓冲区切换命令映射到我的和左侧主行键,并在状态行中显示当前缓冲区编号:

"" Tab triggers buffer-name auto-completion
set wildchar= wildmenu wildmode=full

let mapleader = ","

map t :CommandT
map a :bprev
map s :bnext
map d :bd
map f :b 

"" Show the buffer number in the status line.
set laststatus=2 statusline=%02n:%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

我还使用MiniBufExplorer,它在自己的水平分割顶部提供了每个列出的缓冲区的紧凑列表.



5> KOlegA..:
nmap bb :ls:buffer

没人提到好的插件ctrlp.vim.使用此插件,您可以按名称搜索缓冲区.



6> Olivier Lalo..:

我用

CTRL- J用于下一个缓冲区

CTRL- K用于以前的缓冲区

CTRL- L下一个标签

CTRL- H用于上一个标签

这是.vimrc配置:

map  :bnext
map  :bprev
map  :tabn
map  :tabp

见http://syskall.com/my-biggest-vim-productivity-boost/



7> Terminus..:
imap  :tabn 1i
imap  :tabn 2i
imap  :tabn 3i
imap  :tabn 4i
imap  :tabn 5i
imap  :tabn 6i
imap  :tabn 7i
imap  :tabn 8i
imap  :tabn 9i

map  :tabn 1
map  :tabn 2
map  :tabn 3
map  :tabn 4
map  :tabn 5
map  :tabn 6
map  :tabn 7
map  :tabn 8
map  :tabn 9



8> kitsu.eb..:

我最近变得更加简约.

循环我使用]b[b未受损的缓冲区:https://github.com/tpope/vim-unimpaired

要直接跳到打开的缓冲区,只需使用Vim的选项卡完成:b.一些字母足以通过一个或两个选项卡到达任何打开的缓冲区.

与开放缓冲区类似,我使用:e相对路径和制表符完成.

:ls偶尔也会使用看看我打开的缓冲区(以及检查它们的修改状态).

为了摆脱我:bw用来擦除缓冲区的缓冲区.我通常会进行临时拆分并更改缓冲区以保留我的布局,因为它:bw也会关闭活动窗口.

我试过的所有迷你小东西最终都让我讨厌,而且我不想要一些智能匹配的东西为我打开随机文件.如果我真的需要浏览一些东西我使用NERDtree(:e .).

IDK,最近我也放弃了Yankring(因为它搞砸了xp)并开始使用寄存器,我最近决定f/ t动作是有史以来最伟大的事情......

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有