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'