我已经尝试过MiniBufExplorer,但我通常会在几个窗口显示它或完全关闭它.我喜欢的是像LustyJuggler这样的增量搜索,我在Emacs中的缓冲区之间切换的方式.肯定有这样的剧本?
我过去常常使用制表符和多个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指出它.
我用基础知识 - ' :ls
'+' :bn
'/' :bp
'+' :b
'
我喜欢"ctrl-w s"和"ctlr-w v"来拆分窗口.然后我按住ctrl来映射移动键(h,j,k,l)以在分割窗口之间移动:
" Map ctrl-movement keys to window switching mapmap map map
不得不把手移到箭头键上很烦人.
接下来,我设置了ctlr-tab以在当前窗口中的缓冲区之间切换(像许多其他环境一样):
" Switch to alternate file map:bnext map :bprevious
在过去的几年里,这些对我来说效果很好,尽管vim总是比你知道的更多秘密.
我几个月来一直在使用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,它在自己的水平分割顶部提供了每个列出的缓冲区的紧凑列表.
nmapbb :ls :buffer
没人提到好的插件ctrlp.vim.使用此插件,您可以按名称搜索缓冲区.
我用
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/
imap:tabn 1 i imap :tabn 2 i imap :tabn 3 i imap :tabn 4 i imap :tabn 5 i imap :tabn 6 i imap :tabn 7 i imap :tabn 8 i imap :tabn 9 i 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
我最近变得更加简约.
循环我使用]b和[b未受损的缓冲区:https://github.com/tpope/vim-unimpaired
要直接跳到打开的缓冲区,只需使用Vim的选项卡完成:b.一些字母足以通过一个或两个选项卡到达任何打开的缓冲区.
与开放缓冲区类似,我使用:e相对路径和制表符完成.
我:ls偶尔也会使用看看我打开的缓冲区(以及检查它们的修改状态).
为了摆脱我:bw用来擦除缓冲区的缓冲区.我通常会进行临时拆分并更改缓冲区以保留我的布局,因为它:bw也会关闭活动窗口.
我试过的所有迷你小东西最终都让我讨厌,而且我不想要一些智能匹配的东西为我打开随机文件.如果我真的需要浏览一些东西我使用NERDtree(:e .).
IDK,最近我也放弃了Yankring(因为它搞砸了xp)并开始使用寄存器,我最近决定f/ t动作是有史以来最伟大的事情......