gvim打开实例,如果文件已经打开,否则创建新窗口

时间:2014-05-12 16:41:50

标签: bash vim

假设我打开了几个gvim窗口,可能会打开几个文件。

在命令行中我想要一个函数或别名,比如gvimUniq,如果在其中一个窗口中打开文件会将该窗口置于前面,否则创建一个打开该文件的新窗口

1 个答案:

答案 0 :(得分:0)

我已经习惯使用单个gvim窗口运行并使用标签打开文档:

gvim() { 
    local -u servername="${HOSTNAME}_${LOGNAME}"
    local -u currentservers=$(command gvim --serverlist)
    if (( $# == 0 )); then
        if [[ $currentservers == *${servername}* ]]; then
            command gvim --servername "$servername" --remote-send '<Esc>:tabe<CR>' || command gvim
        else
            command gvim --servername "$servername" || command gvim
        fi
    else
        # http://stackoverflow.com/questions/936501/let-gvim-always-run-a-single-instance 
        local vi_options=()
        while [[ $1 == -* ]]; do
            [[ $1 != -- ]] && vi_options+=("$1")
            shift
        done
        if [[ $currentservers == *${servername}* ]]; then
            command gvim "${vi_options[@]}" --servername "$servername" --remote-tab-silent "$@" || command gvim "$@"
        else
            command gvim "${vi_options[@]}" --servername "$servername" "$@" || command gvim "$@"
        fi
    fi
}