Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 如何在vim中基于增量搜索切换选项卡?_Performance_Vim_Tabs_Switching - Fatal编程技术网

Performance 如何在vim中基于增量搜索切换选项卡?

Performance 如何在vim中基于增量搜索切换选项卡?,performance,vim,tabs,switching,Performance,Vim,Tabs,Switching,例如,假设我在vim中打开了三个选项卡: 1: nice_program.c 2: something_fun.h 3: super_script.sh 所以,如果我按了一些神奇的修改键,然后键入“n”并按enter键,我会将tab更改为tab 1。同样,键入“su”将引导我转到选项卡3 这种行为可能吗?有这么多的vim扩展,我真的不明白整个vim扩展的行话 顺便说一句,我在XP上使用gVim,在OSX上使用MacVim。解决方案最好能同时在这两个平台上工作 编辑: 请注意,我只希望增量搜索跨

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

1: nice_program.c
2: something_fun.h
3: super_script.sh
所以,如果我按了一些神奇的修改键,然后键入“n”并按enter键,我会将tab更改为tab 1。同样,键入“su”将引导我转到选项卡3

这种行为可能吗?有这么多的vim扩展,我真的不明白整个vim扩展的行话

顺便说一句,我在XP上使用gVim,在OSX上使用MacVim。解决方案最好能同时在这两个平台上工作

编辑:

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


另外,我从不使用缓冲区,我希望它可以用于选项卡。

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

“在编号的缓冲区之间切换
:nnoremap:buffers:buffer
(放入.vimrc文件或使用的任何点文件)

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


希望能有所帮助。

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

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

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

总之,按如下方式更改切换行为

:set switchbuf=usetab
并使用
:sb
命令通过键入缓冲区名称的几个字母来打开缓冲区
以及使用制表符完成。

ib提供的
:set switchbuf=usetab
解决方案无论出于何种原因(即使没有加载插件或my.vimrc)都对我不起作用,但
:文件的制表符放置名称
正是您想要的方式(我找到了它)

使用
nnoremap t:tab drop
将其设置为自定义映射,以保存一些击键


此外,我支持ib对Vim中使用标签的正确和错误方式的评论。

是的,我看到了很多关于这类内容的博客文章。我只对标签感兴趣,而且只对标签本身感兴趣,而不是在实际标签中。无论如何,谢谢,尽管switchbuf的usetab选项似乎无效。我至少不能在gVim中输入它@c00kiemonster:它确实有效(请参见Vim中的帮助切换BUF)。您说“无法输入”是什么意思"? 有任何错误消息吗?它似乎不起作用。或者至少不像我想象的那样。如果我这样做:b它只是将当前选项卡更改为另一个缓冲区,而不会切换到任何其他缓冲区tab@ib这实际上是一个很好的解决方案,如果你把它和我的建议放在一起,你会得到很好的标签导航+1(并更新了我的.vimrc)@c00kiemonster:哦,对不起。我从内存中引用切换命令时出错<代码>:b不尊重
开关BUF
:sb
尊重。查看更新。从未真正使其正常工作。因为Vim的buffer/tab实现很可能早于tab作为现代UI元素的出现(例如在web浏览器中)。但就个人而言,一个窗口内的多页(缓冲区)方法让我想起了太多的Emacs。颤抖。但改变这种方式可能会让很多久负盛名的Vim老兵感到不安。一个折衷的办法可能是用chrome的方式,即将每个选项卡划分开来,然后在它们之间快速切换。FWIW,我最后只是把它们放在我的.gvimrc
nnoremap:tabprevious
nnoremap:tabnext
中。这对我来说很好,但我当然更喜欢我最初的梦想。这不是一个普遍的解决办法。首先,只有使用GUI编译Vim时,
:drop
命令才可用。第二,也是更重要的一点,该命令不是用于切换缓冲区,而是用于打开文件。因此,此命令的自动完成提示的不是打开缓冲区的名称,而是文件名。唯一的一个事实就是它的用处大大降低了。@C00kiemonester:重要的是在缓冲区(即用于编辑的文件)之间切换,而不是在选项卡页面之间切换。它已经很快很容易了(如我的回答所示),只需告诉Vim您想看到什么缓冲区。毕竟,你想切换到一个文件,不是吗?@c00kiemonster:顺便说一句,有
gt
gt
快捷键分别用于切换到下一个和上一个选项卡页面。如果您在其中一个命令之前给出了一个数字,则可以切换到具有该给定数字的选项卡页面(例如,
4gt
打开第4个选项卡页面)。对于您“最初梦想”的解决方案,请参阅我的答案。
:set switchbuf=usetab