Em zsh
, desde que seus arquivos de texto tenham uma extensão de nome de arquivo ( file.ext
), você pode trabalhar com aliases de sufixo . Eles são definidos por alias -s name=value
e são executados como value text.name
sempre que a primeira palavra na linha de comando corresponder a text.name
, em que text
é qualquer sequência não vazia.
Por exemplo:
Se você definir
alias -s txt=vim
em seguida, digite
$ foo.txt
na linha de comando será executado
vim foo.txt
Isso funciona para qualquer coisa que corresponda a ?*.txt
, mesmo palavras com curingas:
$ *.txt
será executado
vim *.txt
Ele também verifica apenas a primeira palavra do comando, mas passará a linha de comando inteira como argumento, mesmo que haja aliases de sufixo para as outras palavras:
$ foo.txt bar.c baz.vim
será executado
vim foo.txt bar.c baz.vim
Importante : isso também afeta qualquer comando com uma extensão correspondente, incluindo aqueles em PATH
. Você deve, por exemplo, definir
alias -s sh=vim
e você tem um comando chamado something.sh
e você quer rodar
something.sh -p1 -p2 arg1 arg2
ele seria executado
vim something.sh -p1 -p2 arg1 arg2
Para desativar esse recurso para um comando, basta adicionar o command
builtin:
command something.sh -p1 -p2 arg1 arg2
As desvantagens óbvias são:
- funciona apenas em arquivos com uma extensão de nome de arquivo
- você precisa definir o alias explicitamente para cada extensão
No lado positivo:
- funciona apenas em arquivos com uma extensão de nome de arquivo, portanto, a maioria dos executáveis em
/bin
e/usr/bin
não precisa ser substituída por um alias. - você pode definir um alias (diferente) para qualquer extensão, portanto,
*.jpg
ou*.o
arquivos não serão abertos de repente comvim