2

例如,假设我在 vim 中打开了三个选项卡:

1: nice_program.c
2: something_fun.h
3: super_script.sh

因此,如果我按下一些魔法修饰键,然后键入“n”并按 Enter,我会将选项卡更改为选项卡 1。同样,键入“su”会将我导航到选项卡 3。

这种行为可能吗?有这么多的 vim 扩展,我并没有真正了解整个 vim 扩展术语。

顺便说一句,我在 XP 上使用 gVim,在 OS X 上使用 MacVim。最好该解决方案适用于两者...

编辑:

请注意,我只希望增量搜索在打开的选项卡的名称中进行搜索。也就是说,它不应该在选项卡本身内部进行实际搜索。

另外,我从不使用缓冲区,这是我希望它工作的选项卡。

4

3 回答 3

7

从问题的措辞看来,您似乎采用了 Vim 中选项卡的概念,而不是设计此功能时应该采用的方式。Vim 标签页不是缓冲区或窗口的一种形式,而是一个窗口布局容器。难怪没有内置方法可以通过活动缓冲区的名称切换到选项卡(或在其选项卡页中的唯一一个,或以其他方式特殊)。从语义上讲,这是切换到缓冲区,而不是选项卡(但如果有必要,可以切换选项卡以显示缓冲区)。

要按名称切换到缓冲区,请使用:sbuffer命令(:sb简称 )。不必每次都输入整个缓冲区名称,因为该命令具有自动完成功能。通常,只需键入名称的几个字母即可唯一标识缓冲区(与您在问题中描述增量搜索的方式相同)。

默认情况下,Vim 打开请求的缓冲区,在当前窗口中替换一个。此行为由switchbuf选项控制。如果该窗口包含要编辑的缓冲区,则该选项提供的选项之一(称为usetab)允许切换到另一个选项卡页中的窗口。这正是适合您使用标签页的方式。

总而言之,改变切换行为如下

:set switchbuf=usetab

并使用:sb命令通过键入其名称的几个字母并使用Tab-completion 打开缓冲区。

于 2011-08-07T13:03:48.070 回答
1

我使用我在 vim wiki 中获取的这个片段在打开的缓冲区(映射到F5)之间切换:

" switch between numbered buffers
:nnoremap <F5> :buffers<CR>:buffer<Space>

(放入您的 .vimrc 文件或您使用的任何 dotfile)。

/[something]至于跨开放缓冲区的增量搜索,每当我在当前单词上使用或使用*/查找某些内容时#,它也会自动在其他缓冲区/选项卡中突出显示。然后我可以切换缓冲区并点击nN在当前查看的缓冲区中的匹配之间移动。这已经融入了 Vim。

希望有帮助。

于 2011-08-07T11:10:15.353 回答
1

ib 提供的:set switchbuf=usetab解决方案无论出于何种原因对我都没有用(即使没有加载插件或我的 .vimrc),但:tab drop name-of-file可以按照你想要的方式工作(我在 Vim wiki 上找到了它)。

使其成为自定义映射,以节省一些击键nnoremap <leader>t :tab drop

我也支持 ib 关于在 Vim 中使用选项卡的正确和错误方式的评论。

于 2011-08-07T16:58:43.327 回答