我正在尝试打开使用以下命令找到的文件法西德在emacsclient
。我正在使用fasd -e emacsclient -c -a ''
设置为别名。当我调用别名时什么也没有发生,我只是得到一个新的提示。我尝试过直接使用 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/ in 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
不理解-c
为一个选项,我认为您的意思是 call 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
尽管根据文档,别名应该有效,但我通过创建 shell 函数并将 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