Использование fasd для открытия файла или каталога в emacsclient

Я пытаюсь открыть файлы, найденные с помощью fasd в emacsclient . Я использую fasd -e emacsclient -c -a '' для псевдонима. Ничего не происходит, когда я вызываю псевдоним, я просто получаю новое приглашение. Я пробовал использовать Emacs напрямую с fasd -e emacs который отлично работает. Пожалуйста, дайте мне знать, если вы знаете, в чем проблема.

EDIT : (По просьбе.


псевдоним
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 ~ » 

  • Как прыгать на позицию, указанную строкой и столбцом?
  • Где заданы предпочтения шрифтов по умолчанию в современном рабочем столе Unix (которые влияют на выбор шрифта нестандартным Emacs 24)?
  • Как связать «Ctrl-Alt-b» как префикс tmux?
  • Автоматическое шифрование Emacs и gpg
  • Ctrl-s эмулятор терминального терминала?
  • Как привязать правый и левый клавиши Ctrl отдельно в Emacs
  • Shift-стрелка не работает в emacs в tmux
  • Используется ли интерпретатор командной строки bash на emacs?
  • 3 Solutions collect form web for “Использование fasd для открытия файла или каталога в emacsclient”

    Я не понимаю, как работает fasd, но ваш псевдоним не имеет смысла.

     alias fed="fasd -e emacsclient -c -a " 

    Вы передаете emacsclient в качестве аргумента опции -e , затем -c и -a – больше параметров, переданных в fasd . Конечное пространство означает, что слово после псевдонима будет подвергаться расширению псевдонима, например, fasd -e emacsclient -c -a fasd -a foo расширяет fed a foo до fasd -e emacsclient -c -a fasd -a foo .

    Учитывая, что fasd не понимает -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' 

    Хотя в соответствии с документацией должен был работать псевдоним, я решил проблему, создав функцию оболочки и передав фразную фразу в качестве аргумента.

     fed() { emacsclient -c -a '' `fasd -f -a $1`; } 

    Вместо того, чтобы сообщать fasd об открытии файла в emacsclient , я просто вернул путь к emacsclient .

    Как я его работаю, это просто наложение следующих
    Этот файл передает файл emacsclient -n -c с файлом fasd.

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

    Поэтому я могу набрать e exam чтобы открыть example.txt в клиенте emacs.

    Linux и Unix - лучшая ОС в мире.