如何让 vim 在多选项卡模式下仅打开一次特定文件?

如何让 vim 在多选项卡模式下仅打开一次特定文件?

我不知道它是功能还是错误,但它确实让我很烦。

当特定文件已打开时(tabnew),我只想切换到该选项卡。

有解决方法吗?

答案1

尝试:

:tab drop filename

来源:Edit a file or jump to it if already open

答案2

我知道使用标签实现此目的的唯一方法是编写一个函数来搜索另一个标签中打开的文件,如果是,则切换到该标签,否则执行 tab new 命令。然后,您将调用您的函数而不是调用 tabnew。不过,这些解决方案对我来说总是感觉很黑客。

我认为这里的主要问题是 vim 的选项卡与其他编辑器的选项卡不同。它们并非用于管理一个文件一个选项卡的一对一关系。vim 中的选项卡更像是“视口”,找不到更好的词来形容了。它允许您使用不同的窗口集来查看您打开的各种缓冲区。

如果您确实想要每个文件一个标签的想法,您可以尝试不使用 vim 的“标签”功能,而是尝试使用 :edit 以原始方式编辑文件,并使用缓冲区命令,例如 :bn :bp :ls :bfirst :blast。此外,插件 MiniBufExplorer 将为您提供缓冲区的标签表示。根据我的经验,这种模型往往能更好地代表用户对多文件编辑的期望。

如果您仍想使用标签,请告诉我,我可能会编写一个简短的示例函数,它可以做一些接近您想要的事情。

如果您尝试缓冲区方法,我建议将 Cn/Cp 或 C-/C- 绑定到 :bn/:bp 命令,因为它们经常使用。

相关内容