fasdを使用してemacsclientでファイルまたはディレクトリを開く

fasdを使用してemacsclientでファイルまたはディレクトリを開く

以下を使用して見つかったファイルを開こうとします。ファシスト党員存在するemacsclientfasd -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渡します。末尾のスペースは、エイリアスの後の単語がに拡張されることを示します。-afasdfed a foofasd -e emacsclient -c -a fasd -a foo

これがオプションとしてfasd理解されないことを考えると、call、つまり3つの引数と空の文字列を使用して呼び出すことを意味すると仮定します。-cemacsclient -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パスを返しました。emacsclientfasdemacsclient

答え3

動作させる方法は、次のエイリアスを指定することです。
これにより、fasdを使用して見つけた「emacsclient -n -c」にファイルが転送されます。

alias e='f -e "emacsclient -n -c"'

これにより、emacsクライアントでそれを入力して開くことができますe examexample.txt

関連情報