您希望如何在Vim中的缓冲区之间切换?

您希望如何在Vim中的缓冲区之间切换?,vim,editor,buffer,Vim,Editor,Buffer,我试过了,但我通常会在几个窗口中显示它,或者干脆关闭它。我想要的是增量搜索,在Emacs中在缓冲区之间切换的方式。当然有这样的脚本吗?我使用简单的:vsplit和^W+W/^W+r,以及:tabnew和Ctrl+Alt+PgUp/PgDown组合键。我使用基本的-“:ls”+”:bn“/”:bp“+”:b“”imap:tabn 1i imap:tabn2i imap:tabn3i imap:tabn4i imap:tabn 5i imap:tabn 6i imap:tabn 7i imap:ta

我试过了,但我通常会在几个窗口中显示它,或者干脆关闭它。我想要的是增量搜索,在Emacs中在缓冲区之间切换的方式。当然有这样的脚本吗?

我使用简单的:vsplit和^W+W/^W+r,以及:tabnew和Ctrl+Alt+PgUp/PgDown组合键。

我使用基本的-“
:ls
”+”
:bn
“/”
:bp
“+”
:b
“”

imap:tabn 1i
imap:tabn2i
imap:tabn3i
imap:tabn4i
imap:tabn 5i
imap:tabn 6i
imap:tabn 7i
imap:tabn 8i
imap:tabn 9i
地图:表1
地图:表2
地图:表3
地图:表4
地图:表5
地图:表6
地图:表7
地图:表8
地图:表9

我曾经使用选项卡和多个gvim实例的组合,将相关文件组作为选项卡保存在每个实例中。只要我在一个实例中没有出现过多的选项卡,选项卡栏就会一目了然地显示正在编辑的每个文件的名称

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

  • Ctrl-w s和Ctrl-w v可拆分当前窗口
  • Ctrl-6可在同一窗口中的两个缓冲区之间来回切换
  • 这是一个很棒的工具,它可以让您自动完成对当前目录中的文件或当前打开的缓冲区的搜索
  • Jamis自己的和,它稍微修改了fuzzyfinder的工作方式,使其行为更像TextMate中的一个类似功能(据我所知,区别在于它匹配文件名中的任何位置,而不是仅从一开始)。观察它的运行情况
现在我只有一个gvim实例,最大化了,并将其拆分为多个窗口,以便一次可以看到多个文件。我将Ctrl-F绑定到fuzzyfinder_textmate,因此现在如果我键入(比如)Ctrl-F
mod/usob
,它将打开app/models/user_observer.rb。我几乎再也不用担心标签了

更新2010/08/07

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

幸运的是,似乎有一个非常好的替代方案,即“的”。这与fuzzyfinder_textmate的行为非常相似(如果不是稍微好一点的话),但速度明显更快;它还有一些很好的特性,比如能够以拆分或垂直拆分的方式打开找到的文件。感谢大卫·里弗斯(David Rivers)的指点。

最棒的是,be拥有如此强大的肌肉记忆,我发现自己希望能在其他应用中使用它。我发现在主动编辑两个以上的文件时速度非常快。

我喜欢用“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>
“将ctrl移动键映射到窗口切换
地图
地图
地图
地图
不得不把手移到箭头键上很烦人

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

“切换到备用文件
地图:bnext
地图:b前

在过去的几年里,这些方法对我来说非常有效,尽管vim总是有比你所知道的更多的秘密。

我花了相当长的时间来构建我的.vimrc,以便与我已经参与了四年的HTML::Mason项目一起工作,所以我有一个奇怪的选项卡和拆分窗口的组合。供您观赏:

map ;o :Sex <CR>
map <C-J> <C-W>j
map <C-K> <C-W>k
map <C-l> <C-W>l
map <C-h> <C-W>h
map ;] :tabnext<CR>
map ;[ :tabprev<CR>
map <C-t> :tabe +"browse ."<CR>
map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>
map;o:性
地图j
地图k
地图l
地图h
地图;]:塔布奈特
地图;[:tabprev
地图:tabe+“浏览”
地图:nerdtreetokle~/curr/trunk/

我使用它。它速度非常快,不像bufexplorer那样占用你的窗口空间。它还有一个增量搜索功能。我尝试了minibufexplorer,发现在缓冲区中导航有点困难。

我已经使用Wincent Colaiuta几个月了。Wincent用C编写了需要快速的部分,我必须使用它是啊!而且,我认为它的文件模式匹配逻辑甚至比Textmate的Command-T更好

VIM的Command-T插件提供 一种非常快速、直观的机制 用于以最小的速度打开文件 击键次数。它被命名为 “Command-T”,因为它的灵感来自 “转到文件”窗口绑定到 TextMate中的Command-T

通过键入来选择文件 出现在其路径中的字符, 并通过一个算法进行排序,该算法 知道出现在 某些位置(例如, 紧接在路径分隔符之后) 应该给它更多的重量

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

"" 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
“”选项卡触发缓冲区名称自动完成
设置wildchar=wildmenu wildmode=full
让mapleader=“,”
地图t:突击队
地图a:bprev
地图s:bnext
地图d:bd
地图f:b
“”在状态行中显示缓冲区编号。

将laststatus=2 statusline=%02n:%%设置为列出并在我使用的缓冲区之间切换:

nnoremap <Leader>l :ls<CR>:b<space>
nnoremap l:ls:b
要在缓冲区之间切换,请执行以下操作:

map <Leader>n :bn<CR>
map <Leader>p :bp<CR>
地图n:bn 地图p:bp
nmap bb:ls:buffer
而且没有人提到好的插件。使用这个插件,你可以按名称搜索缓冲区。

我已经将
映射到
:bp
:bn
,尽管我承认我没有使用它,因为文件数大于10。然后我将
映射到Gnome终端的上一个和下一个选项卡,并且我通常为我所从事的4个不同项目中的每一个运行4个vim实例。我仍然真的希望下一个和上一个缓冲区能够转到我所使用的缓冲区的历史记录
nnoremap <Leader>l :ls<CR>:b<space>
map <Leader>n :bn<CR>
map <Leader>p :bp<CR>
nmap <Leader>bb :ls<CR>:buffer<Space>
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
map <C-L> :tabn<CR>
map <C-H> :tabp<CR>