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

Ale*_*nov 92 vim buffer editor

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

Sam*_*kes 73

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

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

  • Ctrl-w s和Ctrl-w v分割当前窗口
  • Ctrl-6在同一窗口中的两个缓冲区之间来回切换.
  • 令人敬畏的fuzzyfinder.vim,它可以自动完成当前目录中文件的搜索或当前打开的缓冲区的搜索
  • Jamis拥有自己的fuzzy_file_finderfuzzyfinder_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 ColaiutaCommand-T插件似乎有一个非常好的选择.这与fuzzyfinder_textmate的行为非常相似(如果不是稍微好一些),但明显更快; 它还具有很好的功能,如能够在拆分或垂直拆分中打开找到的文件.谢谢(并赞成!)David Rivers指出它.

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

ori*_*rip 33

我用基础知识 - ' :ls'+' :bn'/' :bp'+' :b <part-of-name>'

  • Pax,我仍然没有看到它.:-) (16认同)
  • :-)我从没想过我会在同一个句子中看到"简单"和"':ls'+':bn'/':bp'+':b <part-of-name>'". (8认同)

Dav*_*Ray 31

我喜欢"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>
Run Code Online (Sandbox Code Playgroud)

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

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

" Switch to alternate file
map <C-Tab> :bnext<cr>
map <C-S-Tab> :bprevious<cr>
Run Code Online (Sandbox Code Playgroud)

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

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

Dav*_*ers 23

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

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

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

更容易的缓冲切换包含许多有用的提示.我已经将以下内容改编为我的.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
Run Code Online (Sandbox Code Playgroud)

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


KOl*_*egA 18

nmap <Leader>bb :ls<CR>:buffer<Space>
Run Code Online (Sandbox Code Playgroud)

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


Oli*_*nde 14

我用

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>
Run Code Online (Sandbox Code Playgroud)

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


Ter*_*nus 5

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>
Run Code Online (Sandbox Code Playgroud)


kit*_*.eb 5

我最近变得更加简约.

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

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

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

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

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

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

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