我希望 gVim 能够在新标签页中打开拖入的文件,而不是替换当前文件。这个问题已经有了正确的方向,但我想能够运行多个 gVim 实例,并将文件拖到我想要的窗口中。
我正在运行 Windows 7。
我正在运行 Windows 7。
您可以先输入:tabe
,然后拖放文件进行操作。我无法完全确认(因为我只有一台Mac),但我认为这将显示:tabe filename
。然后您只需要按下回车键即可开始使用...
不,你不能这样做。拖放操作的默认行为是由Windows应用程序的实现指定的(OLE DoDragDrop)。它没有被实现为在新标签页中打开已拖放的文件,因此不会这样做。但是gVim是开源的......所以如果你真的想要这个功能,你可以提交一个补丁 :)
.vimrc
中添加以下内容:autocmd BufReadPost * tab ball
这将为所有缓冲区打开标签,包括新拖放的文件。请注意,它会为所有缓冲区打开标签,因此也包括已在gvim
中打开的缓冲区。
在gvim中打开一个新文件并不会替换当前已经打开的文件。新文件将会在一个新的缓冲区中打开,并显示出来。您可以使用:b
命令在不同的缓冲区之间切换。在您的情况下,您可以简单地放弃当前文件,然后使用:tabedit
创建一个新的标签页,并使用:b <filename>
命令将该标签页的缓冲区切换到您想要的文件。当然这可能不完全符合您的需求,但对我来说已足够。
您可以在vimrc文件中加入以下选项。VIM将以新选项卡打开文件。您也可以将文件拖放到gVim中,它将在新选项卡中打开。这对我很有效,在Windows 7上也适用。
:au BufAdd,BufNewFile * nested tab sball
这些与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>
由于文件无法正确地拖放到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
:tabnew
),然后将文件拖放到新标签页中进行准备更好。 - James Haigh