我能否强制gVim在新标签页中打开拖入的文件?

8
我希望 gVim 能够在新标签页中打开拖入的文件,而不是替换当前文件。这个问题已经有了正确的方向,但我想能够运行多个 gVim 实例,并将文件拖到我想要的窗口中。
我正在运行 Windows 7。
8个回答

4

您可以先输入:tabe,然后拖放文件进行操作。我无法完全确认(因为我只有一台Mac),但我认为这将显示:tabe filename。然后您只需要按下回车键即可开始使用...


可以这样做,但我不想每次都要“准备”编辑器来获取一个新文件。有没有办法将其设置为“拖放”的默认操作? - wes
这并不比通过打开一个新标签页(:tabnew),然后将文件拖放到新标签页中进行准备更好。 - James Haigh

4

不,你不能这样做。拖放操作的默认行为是由Windows应用程序的实现指定的(OLE DoDragDrop)。它没有被实现为在新标签页中打开已拖放的文件,因此不会这样做。但是gVim是开源的......所以如果你真的想要这个功能,你可以提交一个补丁 :)


3
  1. 按住CTRL键并将文件拖到Vim中,将在Vim中打开新文件的新窗口分割。
  2. 然后只需使用 <C-W>T 将该分割转换为新标签页,如此处所述。

3
你可以在你的.vimrc中添加以下内容:
autocmd BufReadPost * tab ball

这将为所有缓冲区打开标签,包括新拖放的文件。请注意,它会为所有缓冲区打开标签,因此也包括已在gvim中打开的缓冲区。


适用于Windows 10。 - Jonathan Koren
它解决了所提出的问题,但也将:vs行为从分屏更改为新标签页。 - Jonathan Koren

2

在gvim中打开一个新文件并不会替换当前已经打开的文件。新文件将会在一个新的缓冲区中打开,并显示出来。您可以使用:b命令在不同的缓冲区之间切换。在您的情况下,您可以简单地放弃当前文件,然后使用:tabedit创建一个新的标签页,并使用:b <filename>命令将该标签页的缓冲区切换到您想要的文件。当然这可能不完全符合您的需求,但对我来说已足够。


2

您可以在vimrc文件中加入以下选项。VIM将以新选项卡打开文件。您也可以将文件拖放到gVim中,它将在新选项卡中打开。这对我很有效,在Windows 7上也适用。

:au BufAdd,BufNewFile * nested tab sball


1
更多信息请点击这里,但不幸的是,它会影响其他事情。例如,如果我加载了一个已保存的会话,它会将文件加载两次。或者如果一个缓冲区被加载但当前不在选项卡中,在拖动新文件后,该缓冲区也会获得一个选项卡。 - user58777
它解决了所提出的问题,但也将:vs行为从分屏更改为新标签页。 - Jonathan Koren

1

这些与Windows兼容的映射可以使这个问题更容易处理。不过在拖动文件之前仍然需要记得按Ctrl-T键...

" CTRL-T opens a new tab, CTRL-W closes tab, CTRL-Left/Right switches tabs
noremap   <C-T> :tabnew<return>
noremap   <C-W> :tabclose<return>
noremap   <C-Left> :tabprevious<return>
noremap   <C-Right> :tabNext<return>

0

由于文件无法正确地拖放到gvim中,我使用了一个批处理文件来完成这个任务。 拖动的文件可以拖至批处理文件或其快捷方式上。 它也可以在Windows资源管理器的“发送到”菜单中使用。

以下是批处理文件的内容(更改gvim服务器的路径和名称):

@ECHO OFF
:TOP
IF (%1) == () GOTO END
    I:\apps\vim\vim73\gvim.exe --servername GVIM --remote-tab "%1"
SHIFT
GOTO TOP

:END
ECHO End

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接