以下を使用して見つかったファイルを開こうとします。ファシスト党員存在するemacsclient
。fasd -e emacsclient -c -a ''
エイリアスとしてsetを使用しています。エイリアスを呼び出すと、何も起こらず、新しいプロンプトのみが表示されます。私はEmacsを直接使ってみましたが、fasd -e emacs
うまくいきます。問題が何であるかを知っている人は教えてください。
編集する:(要望通り。ところが見えません。)
ニックネーム
alias fed="fasd -e emacsclient -c -a ''"
fasd.zsh
#
# only init if installed.
fasd_cache="$HOME/.fasd-init-bash"
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wc\
omp-install)" >| "$fasd_cache"
fi
source "$fasd_cache"
unset fasd_cache
# jump to recently used items
alias a='fasd -a' # any
alias s='fasd -si' # show / search / select
alias d='fasd -d' # directory
alias f='fasd -f' # file
alias z='fasd_cd -d' # cd, same functionality as j in autojump
alias zz='fasd_cd -d -i' # interactive directory jump
結果
~/Downloads/ を開く必要がありemacsclient
ますが、何もしません。
~ » fed downlo
~ »
答え1
私はfasdがどのように機能するのか理解していませんが、あなたのエイリアスは意味がありません。
alias fed="fasd -e emacsclient -c -a "
emacsclient
その-e
オプションを引数として渡し、追加のオプションをに-c
渡します。末尾のスペースは、エイリアスの後の単語がに拡張されることを示します。-a
fasd
fed a foo
fasd -e emacsclient -c -a fasd -a foo
これがオプションとしてfasd
理解されないことを考えると、call、つまり3つの引数と空の文字列を使用して呼び出すことを意味すると仮定します。-c
emacsclient -c -a ''
emacsclient
-c
-a
このように、fasd
パラメータは次のように解釈されます-e
。
e*) o="${o#?}"; if [ "$o" ]; then # there are characters after "-e" local exec="$o" # anything after "-e" (…) $exec "$res"
空の文字列をコマンドの単語として渡すことはできません。代わりにヘルパー関数を定義してください(エイリアスはここでも機能します)。
emacsclient_c () {
emacsclient -c -a '' "$@"
}
alias fed='fasd -e emacsclient_c'
答え2
ドキュメントによると、エイリアスは機能するはずですが、シェル関数を作成し、fasd検索フレーズをパラメータとして渡すことで問題を解決しました。
fed() {
emacsclient -c -a '' `fasd -f -a $1`;
}
ファイルを開く場所を知らせる代わりにfasd
パスを返しました。emacsclient
fasd
emacsclient
答え3
動作させる方法は、次のエイリアスを指定することです。
これにより、fasdを使用して見つけた「emacsclient -n -c」にファイルが転送されます。
alias e='f -e "emacsclient -n -c"'
これにより、emacsクライアントでそれを入力して開くことができますe exam
。example.txt