如何在不离开当前文件或没有切换编辑模式的情况下在新选项卡中打开文件或缓冲区?

时间:2013-03-25 11:07:07

标签: vim

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

场景:用户Bob在文件上工作:foo.txt。外部程序定期更新文件bar.txt。然后,它会在Bob的vim会话的后台中打开一个新选项卡,而不会强制Bob在其前景选项卡中切换出他当前编辑的foo.txt。< / p>

所有tab*命令似乎都没有完成任务。我错过了什么?

你可以说我正在寻找相当于:tabnew_in_background_leave_edit_mode_as_is()

3 个答案:

答案 0 :(得分:4)

您可以使用

$ 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"

基本上,我们退出插入模式,执行我们的“标签”业务并回到原来的位置。而且我们还有另一个缺点:这个方法与插入模式有关,所以即使我们之前没有插入模式,我们也会以插入模式结束。

不幸的是,我没有找到一种干净利落的方法,不涉及编写函数。

答案 1 :(得分: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

foo.txt将在SVR vim实例

的标签中打开

答案 2 :(得分:0)

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