问题描述
我在.bashrc中放置了一些别名,以在gvim中打开一组项目文件,每个文件都位于各自的选项卡中:
gvim -p <list of file names using absolute paths>
一切都很好,除了我可能希望在任何给定的时间之间移动几组文件(我当前的项目使用Ruby on Rails,因此对此进行了解释)。如果我可以将新选项卡附加到gvim的现有实例上,那将是真的很棒。在上一个职位上,我从事Vista的工作。我通过在gvim中打开一堆空选项卡解决了这个问题,这使我可以使用文件名right-click并选择“在现有的No-Name gvim中打开”。现在,我使用Ubuntu,并且上下文菜单中没有这样的东西。有什么办法可以从命令行执行此操作吗?
最佳解决办法
如果vim是使用clientserver选项编译的,则可以执行此操作。使用以下标志启动您的vim实例:
$ gvim --servername GVIM # GVIM is the server name. It can be anything.
要在此实例中打开更多选项卡,可以运行以下命令:
$ gvim --servername GVIM --remote-tab file1 file2 file3 ...
vim中的clientserver功能非常方便。不限于打开文件;它可以用来通过命令行向vim发送任何命令。例如,要远程关闭vim实例,可以使用:
$ gvim --servername GVIM --remote-send '<Esc>:wqa<CR>'
次佳解决办法
在Gvim内部,键入:tabe {file_name}
。这将在新选项卡中打开命名文件。如果您不喜欢输入长文件名,请尝试以下操作:
:tabnew
:e .
这将打开一个新的空白标签页并打开文件浏览器。您可以用鼠标单击或使用键盘。在要打开的文件上单击或单击Enter键。尝试使用键盘将光标置于要打开的文件上,然后按’t’。这将在新选项卡中打开所选文件,并在第一个选项卡中保持文件浏览器处于打开状态。这可能是打开一堆文件的快速方法。
标签页可以做很多事情,可能会使生活更轻松。要进入Vim在线帮助手册中的相关部分,请输入:h tabpage
。
第三种解决办法
是否希望Windows上下文菜单允许您在当前打开的gvim窗口的新选项卡中打开文件?
将其另存为名为temp.reg和double-click的文件,以将设置添加到注册表中。如果您不同,请确保修改vim的路径。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim]
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim\command]
@="\"C:\\Program Files (x86)\\Vim\\vim73\\gvim.exe\" -p --remote-tab-silent \"%1\" \"%*\""
现在,您将有一个上下文菜单,如下所示:
第四种办法
Linux用户可以使用以下脚本:
#!/bin/bash
ANS=`pgrep -fx "gvim --servername GVIM"`
echo $@
if [[ ! $ANS ]]; then
gvim --servername GVIM
fi
if [[ $1 ]]; then
gvim --servername GVIM --remote-tab "${@}"
fi
然后编辑gvim.desktop文件以使用此脚本:
Exec=/home/user/bin/my_gvim_script.sh %F