我已经尝试过MiniBufExplorer,但是通常最终会显示几个窗口或将其完全关闭。我想要的是带有增量搜索的LustyJuggler之类的东西,这是我在Emacs中的缓冲区之间切换的方式。当然有这样的脚本吗?
我已经尝试过MiniBufExplorer,但是通常最终会显示几个窗口或将其完全关闭。我想要的是带有增量搜索的LustyJuggler之类的东西,这是我在Emacs中的缓冲区之间切换的方式。当然有这样的脚本吗?
Answers:
我已经使用Wincent Colaiuta的Command-T vim插件几个月了。Wincent编写了需要在C中快速运行的部分,我必须说是!而且,我认为它的文件模式匹配逻辑甚至比Textmate的Command-T更好。查看截屏视频。
用于VIM的Command-T插件提供了一种非常快速,直观的机制,可以以最少的击键次数打开文件。之所以命名为“ Command-T”,是因为它受到TextMate中绑定到Command-T的“转到文件”窗口的启发。
通过键入出现在文件路径中的字符来选择文件,并通过一种算法对文件进行排序,该算法知道出现在某些位置(例如,紧接在路径分隔符之后)的字符应被赋予更大的权重。
更容易的缓冲区切换包含许多有用的技巧。我已经对.vimrc进行了以下修改,它执行缓冲区名称自动补全,将最有用的缓冲区切换命令映射到我的<Leader>和左侧的主行键,并在状态行中显示当前缓冲区号:
"" Tab triggers buffer-name auto-completion
set wildchar=<Tab> wildmenu wildmode=full
let mapleader = ","
map <Leader>t :CommandT<Return>
map <Leader>a :bprev<Return>
map <Leader>s :bnext<Return>
map <Leader>d :bd<Return>
map <Leader>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,它在其自己的水平拆分顶部中提供了每个列出的缓冲区的紧凑列表。
我曾经使用过选项卡和多个gvim实例的组合,在每个实例中将相关文件组作为选项卡。只要我在一个实例中没有出现太多标签,标签栏就一眼就能显示正在编辑的每个文件的名称。
然后,我阅读了Jamis Buck的帖子,内容涉及他如何从TextMate切换回vim,并学到了一些很棒的技巧:
现在,我只有一个最大化的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指出了这一点。
我喜欢“ ctrl-w s”和“ ctlr-w v”来分割窗口。然后,我按下ctrl来在分割窗口之间移动时映射移动键(h,j,k,l):
" Map ctrl-movement keys to window switching
map <C-k> <C-w><Up>
map <C-j> <C-w><Down>
map <C-l> <C-w><Right>
map <C-h> <C-w><Left>
不得不将我的手移到箭头键很烦人。
接下来,我设置ctlr-tab来在当前窗口的缓冲区之间切换(就像许多其他环境一样):
" Switch to alternate file
map <C-Tab> :bnext<cr>
map <C-S-Tab> :bprevious<cr>
尽管vim总是有比您知道的更多的秘密,但是在过去几年中,这些对我来说效果很好。
:bp
和<SK> 映射到:bn
nmap <Leader>bb :ls<CR>:buffer<Space>
没有人提到不错的插件ctrlp.vim。使用此插件,您可以按名称搜索缓冲区。
我用
CTRL- J用于下一个缓冲区
CTRL- K对于先前的缓冲区
CTRL- L对于下一个标签
CTRL- H对于上一个标签
下面是.vimrc
配置:
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
map <C-L> :tabn<CR>
map <C-H> :tabp<CR>
imap <A-1> <Esc>:tabn 1<CR>i
imap <A-2> <Esc>:tabn 2<CR>i
imap <A-3> <Esc>:tabn 3<CR>i
imap <A-4> <Esc>:tabn 4<CR>i
imap <A-5> <Esc>:tabn 5<CR>i
imap <A-6> <Esc>:tabn 6<CR>i
imap <A-7> <Esc>:tabn 7<CR>i
imap <A-8> <Esc>:tabn 8<CR>i
imap <A-9> <Esc>:tabn 9<CR>i
map <A-1> :tabn 1<CR>
map <A-2> :tabn 2<CR>
map <A-3> :tabn 3<CR>
map <A-4> :tabn 4<CR>
map <A-5> :tabn 5<CR>
map <A-6> :tabn 6<CR>
map <A-7> :tabn 7<CR>
map <A-8> :tabn 8<CR>
map <A-9> :tabn 9<CR>
:tab sball
首先使用,而不是使用:tabn
,应该使用:buffer
我最近变得更加简约。
要循环使用我使用的缓冲区]b和[b从未损坏的缓冲区:https : //github.com/tpope/vim-unimpaired
要直接跳转到打开的缓冲区,只需使用Vim的制表符补全:b。只需几个字母就可以使用一个或两个制表符到达任何打开的缓冲区。
与打开缓冲区类似,我使用:e相对路径和制表符完成。
我还:ls偶尔使用来查看我打开了哪些缓冲区(并检查它们的修改状态)。
为了摆脱缓冲区,我使用:bw了擦除缓冲区。我通常会临时拆分并更改缓冲区以保留我的布局,尽管这:bw也会关闭活动窗口。
我尝试过的所有minibuf东西最终都使我烦恼,并且我不希望有任何智能匹配的东西为我打开随机文件。如果确实需要浏览某些内容,请使用NERDtree(:e .)。
IDK,最近我也放弃了Yankring(因为它拧紧了xp)并开始使用寄存器,最近我决定f/ t动作是有史以来最伟大的事情...
<leader>ll
到:ls
。此外,它是非常有用的,以确保你有set wildmenu
你.vimrc
的,那么你得到的是与所有出现的替代一个小菜单:b
出色的Buffer Explorer,其强大的记忆力使我发现自己希望自己可以在其他应用程序中使用它。我发现在主动编辑两个以上文件时,它的速度非常快。
我使用tselectbuffer。这确实非常快,而且与bufexplorer不会在您的窗口中占用空间。它还有一个增量搜索。我尝试了minibufexplorer,但发现缓冲区中的导航有点困难。
,be
,,bs
,,bv
,所以我映射TSelectBuffer来,bb
。
当Vim会话中有多个缓冲区打开时,很难跟踪缓冲区及其各自的缓冲区编号。在这种情况下,使用简单的映射可以更轻松地切换到其他文件:
:nnoremap(F5):缓冲区(CR):缓冲区(空格)