我如何将'gvim filename'别名为'gvim filename&'

时间:2012-11-07 01:46:36

标签: bash vim cygwin alias

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

gvim filename

相同
gvim filename &
似乎我应该能够用别名来做这件事。别名是否有特殊的通配符?类似的东西:

alias gvim="gvim <wildcard> &"

其中“wildcard”将替换为命令行上gvim之后的任何文本。

我也尝试过:

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

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

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

谢谢!

-Derek

更新:我通过摆脱&amp;周围的引号让它发挥作用。和最后的分号:

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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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形式的完整路径

答案 2 :(得分:0)

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

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

我认为您提供的功能的问题是您将&置于双引号内。摘下引号,它应该可以工作。

答案 3 :(得分: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 &