当我从命令行打开新选项卡时将 gvim 带到前面

当我从命令行打开新选项卡时将 gvim 带到前面

我喜欢用 vi 命令在 Gvim 中打开文件,如果 Gvim 已在运行,则在新选项卡中打开它。

function vi {
    if [[ -z $@ ]]; then
        gvim 
    elif [[ ${1:0:1} = - ]]; then
        gvim "$@"
    else
        gvim --remote-tab-silent "$@"
    fi
}

这有效,但是当我指定一个文件名并且它在现有的 Gvim 实例中打开时,它不会像在 Mac 或 Windows 上那样将窗口带到最前面。

我怎样才能使当我在终端中输入“vi file.txt”命令时,Gvim 成为活动窗口?

答案1

嗯,有点脏,可以使用xdotool

将其添加到您的脚本中:

    xdotool windowfocus `xdotool search --name "/* - GVIM"` && xdotool windowraise `xdotool search --name "/* - GVIM"`

它搜索名为“[Something] - GVIM”的窗口并将其调出。也许,您可以使用文件名和正则表达式选择具有更具体标题的窗口。

    xdotool windowfocus `xdotool search --name "^$filename\s\+\s\(~\)\s-\sGVIM"` && xdotool windowraise `xdotool search --name "^$filename\s\+\s\(~\)\s-\sGVIM"`

xdotool必须先从 下载apt-getsudo apt-get install xdotool在终端上输入。

答案2

我也使用 xdotool。这样一个简单的脚本很有帮助:

#!/bin/bash
gvim -p --remote-tab $@ ; xdotool search --name "/* - GVIM" windowactivate

相关内容