2

必须有一种方法可以在后台打开一个新标签,而无需离开当前标签,但我只是在文档中找不到它。

场景:用户 Bob 处理文件:foo.txt. 外部程序定期更新文件bar.txt然后它会在 Bob 的 vim 会话的背景中打开一个新选项卡,而不会强制 Bob 从他当前foo.txt前台选项卡中的编辑切换。

所有tab*命令似乎都没有完成这项工作。我错过了什么?

您可以说我正在寻找与 : 等价的东西tabnew_in_background_leave_edit_mode_as_is()

4

3 回答 3

5

您可以使用

$ vim --servername BOB --remote-tab +":tabprevious" filename

编辑

Vim 没有在后台打开选项卡的命令。这就是为什么我们需要:tabprevious技巧来打开新标签并立即返回上一个标签。缺点是我们不再处于插入模式。

幸运的是,我们有gi正常模式映射,用于返回上次退出的插入模式。该命令有效,在这里:

$ vim --servername BOB --remote-tab +":tabprevious" filename && vim --servername BOB --remote-send "gi"

在 shell 脚本中包含和概括它听起来并不复杂。

这是第二种方法,使用相同的成分,但组合方式不同:

$ vim --servername BOB --remote-send "<Esc>:tabe filename | tabprevious<CR>gi"

基本上,我们退出插入模式,做我们的“标签”业务,然后回到我们原来的位置。而且我们还有另一个缺点:这种方法与插入模式相关联,因此即使我们之前不存在,我们最终也会进入插入模式。

不幸的是,我没有看到不涉及编写函数的干净方法。

于 2013-03-25T11:58:51.513 回答
0

当光标位于目录列表中的文件名上时按 SHIFT + t 会在后台选项卡中打开文件。

于 2013-07-21T03:03:01.383 回答
0

你检查了--remote-tab吗?还是我误解了你的问题?

在 vim 中,输入:h remote-tab

   --remote-tab         Like --remote but open each file in a new
                tabpage.

所以你可以尝试:(假设你已经有一个名为“SVR”的vim“服务器”):

vim --servername SVR --remote-tab foo.txt

将在vim 实例foo.txt的选项卡中打开SVR

于 2013-03-25T11:18:09.547 回答