fasd를 사용하여 emacsclient에서 파일이나 디렉터리 열기

fasd를 사용하여 emacsclient에서 파일이나 디렉터리 열기

다음을 사용하여 찾은 파일을 열려고 합니다.파시스트 당원존재하다 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전달합니다 . 끝에 있는 공백은 별칭 뒤의 단어가 로 확장 됨을 나타냅니다 .-afasdfed a foofasd -e emacsclient -c -a fasd -a foo

이것이 옵션으로 fasd이해되지 않는다는 점을 감안할 때 call , 즉 세 개의 인수 와 빈 문자열을 사용하여 호출하는 것을 의미한다고 가정합니다.-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 exam.example.txt

관련 정보