为了在现有的Vim实例(我的情况是MacVim)中打开文件,我采用了Derek Wyatt的建议,并将以下内容添加到我的bash_profile中:
alias mvim='mvim --remote-silent'
只要我传递一个参数给mvim(
mvim myFile
,mvim .
等),这个命令就可以工作。但是如果我只运行mvim
,就会出现错误:Argument missing after: "--remote-silent"
。因此,我用以下函数替换了上面的别名:
function mvim() {
if [ $# > 0 ] ; then
command mvim --remote-silent "$@"
else
command mvim
fi
}
现在,如果我不带参数运行
mvim
命令,我会得到同样的错误信息和 一个名为0
的文件被写入了当前目录。如果我传递参数给mvim,则一切正常。我错过了什么?如何处理这个问题?
感谢Ingo Karkat澄清。如果有人感兴趣,这是我现在的处理方式:
function ivim {
if [ -n "$1" ] ; then
command mvim --remote-silent "$@"
elif [ -n "$( mvim --serverlist )" ] ; then
command mvim --remote-send ":call foreground()<CR>:enew<CR>:<BS>"
else
command mvim
fi
}
elif
分支末尾的:<BS>
只是为了清除命令行。这感觉有点hacky,但我不知道还有什么其他方法可以实现这一点。
[[ $# > 0 ]]
不是算术运算符“大于”。你可能想要使用(( $# > 0 ))
。 - Dmitry Alexandrov