【发布时间】:2014-06-30 03:17:36
【问题描述】:
假设我打开了几个 gvim 窗口,每个窗口中都可能打开了几个文件。
在命令行中,我想要一个函数或别名,比如gvimUniq,如果文件在其中一个窗口中打开,则会将该窗口置于最前面,否则创建一个打开该文件的新窗口。
【问题讨论】:
假设我打开了几个 gvim 窗口,每个窗口中都可能打开了几个文件。
在命令行中,我想要一个函数或别名,比如gvimUniq,如果文件在其中一个窗口中打开,则会将该窗口置于最前面,否则创建一个打开该文件的新窗口。
【问题讨论】:
我已经习惯了使用单个 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
}
【讨论】: