我正在尝试在 bashrc 中创建一个依赖于文件类型的 gvim 别名:
if [[ $file == *.tex ]]; then
alias vi="/home/rudra/bin/vims.py"
else
alias vi="gvim"
fi
我期望运行~/bin/vims.py foo.tex
文件vi foo.tex
,gvim bar.txt
当我输入vi bar.txt
.但是,它不起作用,并且仅gvim foo.{tex/txt}
针对所有扩展运行。
它还显示:
which vi
alias vi='gvim'
/usr/bin/gvim
所以我想,如果 *.tex 的条件根本不起作用。知道为什么吗?
我在用:
bash --version
GNU bash, version 4.3.43(1)-release (x86_64-redhat-linux-gnu)
\vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jan 26 2017 07:53:42)
还:
vi --version
bash: syntax error near unexpected token `--version'
答案1
这是一个 shell 函数 ,edit
它将使用编辑器打开一个文件。它默认为gvim
,但如果文件有.tex
后缀,它会选择另一个编辑器:
function edit
{
typeset argc="$#"
typeset file="${!argc}"
typeset cmd="gvim"
case "$file" in
*.tex) cmd="/home/rudra/bin/vims.py" ;;
esac
command "$cmd" "$@"
}
这使得为特定文件名后缀添加其他编辑器变得容易。
该函数可能会放入您的~/.bashrc
文件中。
手册bash
包含以下声明
对于几乎所有用途,别名都被 shell 函数取代。