Eu não entendo como o fasd funciona, mas o seu alias não faz sentido.
alias fed="fasd -e emacsclient -c -a "
Você está passando emacsclient
como argumento para a opção -e
, em seguida, -c
e -a
são mais opções passadas para fasd
. O espaço final significa que a palavra após o alias sofrerá expansão de alias, por ex. fed a foo
se expande para fasd -e emacsclient -c -a fasd -a foo
.
Como fasd
não entende -c
como uma opção, presumo que você queira chamar emacsclient -c -a ''
, ou seja, chamar emacsclient
com os três argumentos -c
, -a
e um vazio string.
Dada a maneira como fasd
interpreta o argumento para -e
:
e*) o="${o#?}"; if [ "$o" ]; then # there are characters after "-e" local exec="$o" # anything after "-e" (…) $exec "$res"
não há como passar uma string vazia como uma das palavras no comando. Defina uma função auxiliar em vez disso (um alias também funcionaria aqui).
emacsclient_c () {
emacsclient -c -a '' "$@"
}
alias fed='fasd -e emacsclient_c'