alias dependente de filetype no bash

0

Estou tentando fazer um alias gvim dependente de tipo de arquivo no bashrc como:

if [[ $file == *.tex ]]; then
  alias vi="/home/rudra/bin/vims.py"
else
  alias vi="gvim"
fi

Estou esperando executar ~/bin/vims.py foo.tex para vi foo.tex file e gvim bar.txt quando digito vi bar.txt . Mas, não está funcionando, e só está executando gvim foo.{tex/txt} para todas as extensões.

Ele também está mostrando:

which vi
alias vi='gvim'
    /usr/bin/gvim

Então, eu acho, se a condição para * .tex não estiver funcionando. Alguma ideia do porquê?

Estou usando:

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)

também:

vi --version
bash: syntax error near unexpected token '--version'
    
por BaRud 02.02.2017 / 16:59

1 resposta

2

Aqui está uma função do shell, edit , que abrirá um arquivo com um editor. O padrão é gvim , mas se o arquivo tiver um sufixo .tex , ele escolhe outro editor:

function edit
{
    typeset argc="$#"
    typeset file="${!argc}"

    typeset cmd="gvim"

    case "$file" in
        *.tex)  cmd="/home/rudra/bin/vims.py" ;;
    esac

    command "$cmd" "$@"
}

Isso facilita a adição de outros editores para sufixos de nome de arquivo específicos.

Esta função pode ser colocada no seu arquivo ~/.bashrc .

O manual bash contém a declaração

For almost every purpose, aliases are superseded by shell functions.

    
por 02.02.2017 / 17:23

Tags