使用像缓冲区这样的Vim标签

99封情书 提交于 2020-02-27 13:49:13

我已经看过在Vim中使用制表符的能力(使用:tabe:tabnew等)作为我当前在隐藏缓冲区中在同一窗口中打开许多文件的做法的替代。

我希望我打开的每个不同文件始终位于其自己的选项卡中。 但是,有些事情会妨碍这一点。 我该如何解决这些问题:

  1. gf^]等命令跳转到另一个文件中的某个位置时,该文件将在当前选项卡的新缓冲区中打开。 有没有办法让所有这些命令在新选项卡中打开文件,或者如果文件已经打开则切换到现有选项卡?

  2. 切换缓冲区时,我可以使用:b <part of filename><tab>它将完成现有缓冲区中文件的名称。 <part of filename>甚至可以是文件名的中间而不是开头。 是否有相应的切换标签?


#1楼

看看:帮助标签看起来不像vim想要像你那样工作......

缓冲区在选项卡之间共享,因此似乎无法锁定给定缓冲区以仅显示在某个选项卡上。

不过,这是一个好主意。

您可以通过使用支持选项卡的终端(如multi-gnome-terminal,然后在每个终端选项卡中运行vim实例)来获得所需的效果。 不完美,但......


#2楼

  • 您可以映射通常操作缓冲区的命令来操作选项卡,就像我在.vimrc中使用gf一样:

    map gf :tabe <cfile><CR>

    我相信你可以用[^

  • 我不认为vim支持这个标签(尚未)。 我使用gt和gT分别移动到下一个和上一个选项卡。 您也可以使用Ngt,其中N是标签号。 我有一个问题是,默认情况下,标签行中没有显示标签号。 为了解决这个问题,我在.vimrc文件的末尾添加了几个函数(我没有在这里粘贴,因为它很长并且格式不正确)。


#3楼

我遇到了同样的问题。 我希望标签像缓冲区一样工作,我从来没有设法让它们到达。 我最终解决的解决方案是使缓冲区表现得像制表符!

查看名为Mini Buffer Explorer的插件,安装和配置后,您将能够以与标签相同的方式使用缓冲区,而不会丢失任何功能。


#4楼

停止,停止,停止。

这不是Vim的标签设计使用的方式。 事实上,他们的名字不好。 一个更好的名称是“视口”或“布局”,因为这是一个标签 - 它是所有现有缓冲区的不同窗口布局。

试图将Vim击败到1个标签== 1缓冲区是徒劳的。 Vim不知道或不关心并且它不会在所有命令上尊重它 - 特别是,使用quickfix缓冲区的任何东西( :make:grep:helpgrep是那些让人想到的东西)会很高兴忽略标签,并且没有什么可以阻止的。

代替:

  • :set hidden
    如果您还没有此设置,请执行此操作。 它使vim像地球上的其他多文件编辑器一样工作。 您可以拥有在某个窗口中看不到的已编辑缓冲区。
  • 使用:bn:bp:b # ctrl-6 :b namectrl-6在缓冲区之间切换。 我喜欢ctrl-6自己(单独它切换到以前使用的缓冲区,或#ctrl-6开关到缓冲区编号# )。
  • 使用:ls列出缓冲区,或者像MiniBufExplBufExplorer这样的插件。

#5楼

我使用像Tab这样的缓冲区,使用BufExplorer插件和一些宏:

" CTRL+b opens the buffer list
map <C-b> <esc>:BufExplorer<cr>

" gz in command mode closes the current buffer
map gz :bdelete<cr>

" g[bB] in command mode switch to the next/prev. buffer
map gb :bnext<cr>
map gB :bprev<cr>

使用BufExplorer,顶部没有标签栏,但另一方面它可以节省屏幕空间,而且可以打开无限数量的文件/缓冲区,缓冲区列表可搜索...

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!