我在 .bashrc 中添加了一些别名,以便在 gvim 中打开一组项目文件,每个文件都在自己的选项卡中:

gvim -p <list of file names using absolute paths>

这一切都很好,除了我可能想在任何给定时间在几组文件之间移动(我当前的项目使用 Ruby on Rails,所以这解释了这一点)。如果我可以将新选项卡附加到现有的 gvim 实例中,那就太棒了。在我的上一份工作中,我负责 Vista;我通过在GVIM中打开一堆空标签来解决这个问题,这使我可以右键单击文件名,然后选择“在现有的无名GVIM中打开”。现在,我使用Ubuntu,上下文菜单上没有这样的东西。有什么方法可以从命令行执行此操作吗?

有帮助吗?

解决方案

如果VIM与客户 - 服务器选项编译,你可以做到这一点。用下列标志启动您的vim实例:

$ gvim --servername GVIM  # GVIM is the server name. It can be anything.

要在此实例中打开多个标签,则可以运行该命令:

$ gvim --servername GVIM --remote-tab file1 file2 file3 ...

中,使用VIM客户端 - 服务器特性是非常方便的。它不限于打开文件;它可以被用于发送任何命令,使用命令行Vim的。例如,远程关闭VIM实例,可以使用:

$ gvim --servername GVIM --remote-send '<Esc>:wqa<CR>'

其他提示

从gvim,输入:tabe {file_name}的内部。这将打开一个新标签命名的文件。如果你不喜欢打字长文件名的,试试这个:

:tabnew
:e .

这将打开一个新的空白标签页,打开文件浏览器。你可以鼠标点击您的方式左右或使用键盘。点击或点击您要打开该文件的回车键。尝试使用键盘将光标定位在要打开的文件,然后点击“T”。这将打开一个新标签所选择的文件,保存文件浏览器第一个选项卡打开。这可能是开了一堆文件的快捷方式。

有一大堆的东西,你可以用标签页,可能使生活更轻松做到。要获得相关章节Vim的在线帮助手册,类型:h tabpage

希望您的Windows右键菜单,让您可以在当前打开窗口的gvim的新标签中打开文件?

保存为一个名为temp.reg文件并双击它来设置添加到您的注册表。可以肯定,如果你是不同修改的路径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\" \"%*\""

您现在有一个这样的上下文菜单:

“VIM上下文菜单”

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

有一种方法:

n*.cpp|tab ba

或者如果你喜欢分裂:

n*.cpp|sba

如果你想知道更多:

:help ba

我不知道什么是n,但它不会没有它的工作。

这是我的 gvim 启动脚本。这是之前答案的延伸。它确保只有一个 gvim 实例将在以下时间运行 gvim 在所有情况下都会被调用:

  • gvim 当 no 时,调用时不带文件名 gvim 实例正在运行; gvim 已启动。
  • gvim 在存在 a 的情况下调用时不带文件名 gvim 实例;将打开一个空的新选项卡。
  • gvim 使用带或不带文件名来调用 gvim 实例;将打开一个选项卡,显示该文件。

这将模仿其他编辑器的标准行为。

#!/bin/bash
exec=/usr/bin/gvim  #the path to gvim
if [ $# -eq 0 ]
  then  # no filename given
    if [ -z $($exec --serverlist) ]
      then  # no filename given and no gvim instance
        $exec -f --servername GVIM > /dev/null 2>&1
      else  # no filename given, but a gvim instance exists
        $exec -f --servername GVIM --remote-send ':tabnew<CR>' > /dev/null 2>&1
    fi
  else  # filenames given
    $exec -f --servername GVIM --remote-tab "$@" > /dev/null 2>&1
fi
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top