2

我希望 gvim 始终在单独的窗口中打开并立即返回命令提示符。换句话说我想要

gvim filename

gvim filename &

似乎我应该能够使用别名来做到这一点。别名是否有特殊的通配符?就像是:

alias gvim="gvim <wildcard> &"

其中“通配符”将被命令行上 gvim 之后的任何文本替换。

我也试过:

function gvim() 
{ 
    "/cygdrive/c/program files (x86)/vim/vim72/gvim.exe" "$@" "&" ;
}

但它只会打开 gvim 而不会像我想要的那样返回提示。

如果有人能指出我正确的方向,那将大大提高我对 .bashrc 工作原理的理解。

谢谢!

-德里克

更新:我通过去掉 & 和末尾的分号周围的引号来让它工作:

function gvim() 
{ 
    "/cygdrive/c/program files (x86)/vim/vim72/gvim.exe" "$@" &
}
4

4 回答 4

5

最后一个几乎是对的。问题是 plain&告诉shell在后台运行进程并向gvim"&"命令行添加参数(即指示 gvim 打开名为 的文件)。通过在这里使用引号,您只是指示 shell 不要特殊对待,而 gvim 没有理由做 shell 的工作。&&

于 2012-11-07T04:23:28.093 回答
0

不要使用别名,而是使用 shell 函数。一般情况下它的工作原理相同,并且您可以使用更多选项:

function gvim() {
 gvim.bat `cygpath -w $*` &
}

更新 此外,默认 .bashrc 中有一些钩子(无论如何在我的盒子上)可以自动从“.bash_functions”文件加载函数,您只需取消注释它(对我来说大约是第 117 行):

# Functions
#
# Some people use a different file for functions
if [ -f "${HOME}/.bash_functions" ]; then
  source "${HOME}/.bash_functions"
fi

然后将函数定义添加到 .bash_functions 以在您启动 bash shell 时自动加载它。

更新 2添加了对 cygpath 的调用以处理 unix 形式的完整路径

于 2012-11-07T01:53:30.370 回答
0

关于 .bashrc 的第一件事可能是它只在 shell 启动时被读取——在 cygwin 的情况下,当你打开命令窗口时。从您的帖子中不清楚您是重新启动命令窗口还是什么。

您可以在不将它们放入 .bashrc 的情况下尝试使用别名/函数,只是为了找出有效的方法。只需直接在命令行输入别名或函数定义,然后尝试运行它们。

我认为您提供的功能的问题是您将&双引号放在里面。去掉引号,它应该可以工作。

于 2012-11-07T03:06:01.373 回答
0

我所做的是有一个小 bash 脚本,我用它调用 gvim 并为其命名。

==> alias vi
alias vi='~/include/bin/dvim'

==> cat ~/include/bin/dvim
#!/bin/bash.exe

/cygdrive/c/Program\ Files/Vim/vim73/gvim.exe $1 &
于 2012-11-07T05:20:19.213 回答