Fasd: Свежая установка, но не работает

Созданный на 1 дек. 2017  ·  14Комментарии  ·  Источник: clvv/fasd

Я установил Ubuntu 14.04 с помощью этой команды
$ sudo add-apt-repository ppa:aacebedo/fasd
$ sudo apt-получить обновление
$ sudo apt-get установить fasd

Затем я попытался выполнить пример, но он не показывает результата
$ сенсорный пример.txt
пример $fasd
$

Я неправильно его установил? Или команда, которую я выполняю, неверна?

Самый полезный комментарий

Не уверен, что это связано. Но я считаю, что https://github.com/jimhester/per-directory-history конфликтует с fasd. У меня та же проблема, что fasd не отслеживает файлы или каталоги. После отключения плагина истории каталогов fasd работает нормально.

Все 14 Комментарий

у меня такая же проблема, только не работает какое-то время.

Вы включили код инициализации ( eval "$(fasd --init auto)" ) в rc вашей оболочки (например, .bashrc или .zshrc ) и запустили новый экземпляр вашей оболочки?

Да, я смог переместить выходной журнал, но попробовал общий код инициализации eval "$(fasd --init auto)", после запуска другого сеанса zsh или перезапуска iterm и ввода fasd/fasd -a/, это просто ничего не показывает.

Вот фрагмент лога:

(eval):2: команда не найдена: fasd
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
fasd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1, -e] , s[-] n[1,e]' -c - 'c[-1,-A][-1,-D ]'-фfasd_cd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1, -e] , s[-] n[1,e]' -c - 'c[-1,-A][-1,-D ]'-ф
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ

Я даже пробовал "/usr/local/bin/fasd -a", и ничего не появляется, я просто понятия не имею, почему он не может найти команду, поскольку в моей переменной $PATH есть /usr/local/bin.

18 декабря 2017 г. в 08:15 Юан Кемп < notifications @github.comnotifications@ github.com > написал:

Включили ли вы код инициализации (eval "$(fasd --init auto)") в rc вашей оболочки (например, ваш .bashrc или .zshrc) и запустили новый экземпляр вашей оболочки?


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://github.com/clvv/fasd/issues/117#issuecomment-352297827 или отключите ветку https://github.com/notifications/unsubscribe-auth/ADKNgnXANOaoBoWsmKj82G3Cfuiln8yrks5tBa6jgaJpZM4QxsoO .

Кстати, единственное, что работает, это «fasd -h», что подтверждает, что по крайней мере zsh может узнать, где находится команда, поэтому я понятия не имею, почему лока не может найти команду.

18 декабря 2017 г. в 09:18 Сяо-Мэн Ван < [email protected] [email protected] > написал:

Да, я смог переместить выходной журнал, но попробовал общий код инициализации eval "$(fasd --init auto)", после запуска другого сеанса zsh или перезапуска iterm и ввода fasd/fasd -a/, это просто ничего не показывает.

Вот фрагмент лога:

(eval):2: команда не найдена: fasd
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
fasd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1, -e] , s[-] n[1,e]' -c - 'c[-1,-A][-1,-D ]'-фfasd_cd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1, -e] , s[-] n[1,e]' -c - 'c[-1,-A][-1,-D ]'-ф
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ

Я даже пробовал "/usr/local/bin/fasd -a", и ничего не появляется, я просто понятия не имею, почему он не может найти команду, поскольку в моей переменной $PATH есть /usr/local/bin.

18 декабря 2017 г. в 08:15 Юан Кемп < notifications @github.comnotifications@ github.com > написал:

Включили ли вы код инициализации (eval "$(fasd --init auto)") в rc вашей оболочки (например, ваш .bashrc или .zshrc) и запустили новый экземпляр вашей оболочки?


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://github.com/clvv/fasd/issues/117#issuecomment-352297827 или отключите ветку https://github.com/notifications/unsubscribe-auth/ADKNgnXANOaoBoWsmKj82G3Cfuiln8yrks5tBa6jgaJpZM4QxsoO .

Та же проблема, мой env - это подсистема Ubuntu в Windows 10.

Пожалуйста, предоставьте минимальную репродукцию.

В целях отладки может помочь изменить код инициализации fasd на следующий:

set -x
eval "$(fasd --init auto)"
set +x

Или включить set -x перед командой, которая выдает ошибку.

Я не могу воспроизвести эти проблемы. Вот шаги, которые я могу выполнить, чтобы иметь работающую установку fasd под bash (которая, если вы хотите проверить работу в вашей системе, может сузить вопрос, связана ли проблема с вашей конфигурацией bashrc или где-то еще):

$ testhome=$(mktemp -d)
$ mkdir -p ${testhome}/bin
$ curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd
$ chmod +x ${testhome}/bin/fasd

$ cat > "${testhome}/.bashrc" <<EOF
export PATH=$PATH:${testhome}/bin                                    
# Ensure history is not blank; fasd grabs commands to process from history
# (https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130)
# and, if history is empty, will error out
echo "echo hello world" >> ~/.bash_history
eval "\$(fasd --init auto)" 
EOF

$ env -i HOME=${testhome} bash
$ cd ~/bin
$ cd ~/bin
$ cd ~

$ z bin && pwd

$ touch example.txt
$ fasd example

Примечание . Для работы fasd вышеописанное должно быть запущено в интерактивной оболочке, а не в сценарии bash. С небольшими изменениями (заменой «bash» на «zsh») вышеизложенное должно работать и для zsh.

Вышеприведенное для меня работает так, как я и ожидал (распечатывая /tmp/tmp.zKxt6nvlxj/bin и 6 /tmp/tmp.zKxt6nvlxj/bin/example.txt ).

Пожалуйста, предоставьте что-либо из следующего, если можете:

  1. более подробная информация о том, что ломается (например, вывод fasd example или fasd --init после применения set -x к оболочке)
  2. Можете ли вы воспроизвести его в минимальной среде, как указано выше.
  3. Настоящая минимальная копия, а не просто «на моей машине это не работает».

Привет, Юан, за инструкцию, вот некоторые результаты, которые у меня есть.

Первая часть, я понятия не имею, что происходит:
это в зш

~ ➤ установить -x git:мастер *
eval "$(fasd --init авто)"
установить +х

+zsh:2> fasd --init авто
+zsh:2> eval $'{ if [ "$ZSH_VERSION" ] && compctl; then # zsh\n eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install \n zsh-wcomp zsh-wcomp-install)"\n elif [ "$BASH_VERSION" ] && завершить ; then # bash\n eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)"\n else # оболочка posix\n eval "$(fasd --init posix-alias posix- ловушка)"\n fi\n} >> "/Пользователи/Администратор/.config/fasd/fasd.log" 2>&1'
+(оценка):1> [ 5.3 ']'
+(eval):1> compctl
+(eval):2> fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install
+(eval):2> eval $'alias a=\'fasd -a\'\nalias s=\'fasd -si\'\nalias sd=\'fasd -sid\'\nalias sf=\'fasd - sif\'\nalias d=\'fasd -d\'\nalias f=\'fasd -f\'\n# функция для выполнения встроенной функции cd\nfasd_cd() {\n if [ $# -le 1 ] ; then\n fasd "$@"\n else\n local _fasd_ret="$(fasd -e \'printf %s\' "$@")"\n [ -z "$_fasd_ret" ] && return\n [ -d "$_fasd_ret" ] && cd "$_fasd_ret" || printf %s\n "$_fasd_ret"\n fi\n}\nalias z=\'fasd_cd -d\'\nalias zz=\'fasd_cd -d -i\'\n\n# add zsh hook\n_fasd_preexec( ) {\n { eval "fasd --proc $(fasd --sanitize $1)"; } >> "/Users/Administrator/.config/fasd/fasd.log" 2>&1\n}\nautoload -Uz add-zsh-hook\nadd-zsh-hook preexec _fasd_preexec\n\n# завершение командного режима zsh \n_fasd_zsh_cmd_complete() {\n local compl\n read -c compl\n (( $+compstate )) && compstate[insert]=menu # не расширять, если загружен compsys\n answer=(${(f)"$( fasd --complete "$compl")"})\n}\n\n# завершение командного режима enbale\ncompctl -U -K _fasd_zsh_cmd_complete -V fasd -x \'C[-1,- e],s[- ]n[1,e]\' -c - \n \'c[-1,-A][-1,-D]\' -f -- fasd fasd_cd\n\n(( $+functions[compdef ] )) && {\n # zsh завершение режима слова\n _fasd_zsh_word_complete() {\n [ "$2" ] && local _fasd_cur="$2"\n [ -z "$_fasd_cur" ] && local _fasd_cur="${words [ТЕКУЩИЙ]}"\n local fnd="${_fasd_cur//,/ }"\n local type=${1:-e}\n fasd --query $typ "$fnd" 2>> "/Users /Администратор/.config/fasd/fasd.log" | sed \'s/^[^ ] [ ] //\' | do\n compadd -U -V fasd "$line"\n done\n compstate[insert]=menu # не расширять\n }\n _fasd_zsh_word_complete_f() { _fasd_zsh_word_complete f ; }\n _fasd_zsh_word_complete_trigger() {\n local _fasd_cur="${words[CURRENT]}"\n eval $(fasd --word-complete-trigger _fasd_zsh_word_complete $_fasd_cur)\n }\n # определить виджеты zle\n zle -C fasd-complete complete-word _generic\n zstyle \':completion:fasd-complete: \' Completer _fasd_zsh_word_complete\n zstyle \':completion:fasd-complete: \' menu-select\n\n zle -C fasd -complete-f complete-word _generic\n zstyle \':completion:fasd-complete-f: \' Completer _fasd_zsh_word_complete_f\n zstyle \':completion:fasd-complete-f: \' menu-select\n\n zle -C fasd-complete-d complete-word _generic\n zstyle \':completion:fasd-complete-d: \' Completer _fasd_zsh_word_complete_d\n zstyle \':completion:fasd-complete-d: \' menu-select\n }\n\n(( $+functions[compdef] )) && {\n # включить завершение в словесном режиме\n orig_comp="$(zstyle -L \':completion:*\' completer 2>> "/Users/ Administrator/.config/fasd/fasd.log")"\n if [ "$orig_comp" ]; ) eval "$orig_comp _fasd_zsh_word_complete_trigger";;\n esac\n else\n zstyle \':completion: \' completer _complete _fasd_zsh_word_complete_trigger\n fi\n unset orig_comp\n}'
+(eval):1> псевдоним 'a=fasd -a'
+(eval):2> псевдоним 's=fasd -si'
+(eval):3> псевдоним 'sd=fasd -sid'
+(eval):4> псевдоним 'sf=fasd -sif'
+(eval):5> псевдоним 'd=fasd -d'
+(eval):6> псевдоним 'f=fasd -f'
+(eval):17> псевдоним 'z=fasd_cd -d'
+(eval):18> псевдоним 'zz=fasd_cd -d -i'
+(eval):24> autoload -Uz add-zsh-hook
+(eval):25> add-zsh-hook preexec _fasd_preexec
+zsh:3> установить +x

вторая часть, я не могу написать файл примера, поэтому я перешел на root, и в этом минимальном env работает fasd. Я еще не создал файл .bashrc.

bash-3.2$ sudo su
Пароль:
sh-3.2# testhome=$(mktemp -d)
sh-3.2# mkdir -p ${testhome}/bin
sh-3.2# cd ${testhome}/bin
ш-3.2# лс
ш-3.2# pwd
/var/папки/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/bin
sh-3.2# curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd;chmod https://raw.githubusercontent.com/clvv/ fasd/master/fasd;chmod +x ${testhome}/bin/fasd;
ш-3.2# лс -ал
всего 40
drwxr-xr-x 3 корневое колесо 96 28 декабря 16:51 .
drwx------ 3 корневое колесо 96 дек 28 16:50 ..
-rwxr-xr-x 1 корневое колесо 20195 28 декабря 16:51 fasd
bash-3.2# eval "$(./bin/fasd --init auto)"
bash-3.2# фасд
bash-3.2# лс
.viminfo bin пример.txt
bash-3.2# эхо "эхо привет мир" >> ~/.bash_history
bash-3.2# лс
.bash_history .viminfo bin пример.txt
bash-3.2# экспорт PATH=$PATH:${testhome}/bin
bash-3.2# лс
.bash_history .fasd .viminfo bin пример.txt
bash-3.2# в .fasd
bash: v: команда не найдена
bash-3.2# кошка .fasd
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd|1|1514451952
bash-3.2# ./bin/fasd
12 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd
пример bash-3.2# ./bin/fasd
bash-3.2# rm пример.txt
bash-3.2# сенсорный пример.txt
пример bash-3.2# ./bin/fasd
6 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/example.txt

28 декабря 2017 г. в 02:37 Юан Кемп < notifications @github.comnotifications@ github.com > написал:

Пожалуйста, предоставьте минимальную репродукцию.

В целях отладки может помочь изменить код инициализации fasd на следующий:

установить -х
eval "$(fasd --init авто)"
установить +х
Или включить set -x перед командой, которая выдает ошибку.

Я не могу воспроизвести эти проблемы. Вот шаги, которые я могу выполнить, чтобы иметь работающую установку fasd под bash (которая, если вы хотите проверить работу в вашей системе, может сузить вопрос, связана ли проблема с вашей конфигурацией bashrc или где-то еще):

$ testhome=$(mktemp -d)
$ mkdir -p ${testhome}/bin
$ curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd
$ chmod +x ${testhome}/bin/fasd

$ cat > "${testhome}/.bashrc" < экспорт PATH=$PATH:${testhome}/bin

Убедитесь, что история не пуста; fasd берет команды для обработки из истории

(https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130 https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b307-cbdb1fas#54cbdb1fas# )

и, если история пуста, выдаст ошибку

эхо "эхо привет мир" >> ~/.bash_history
eval "$(fasd --init авто)"
EOF

$ env -i HOME=${testhome} bash
$ cd ~/bin
$ cd ~/bin
$ компакт-диск ~

$ z bin && pwd

$ сенсорный пример.txt
пример $fasd
Примечание: для работы fasd вышеописанное должно быть запущено в интерактивной оболочке, а не в bash-скрипте. С небольшими изменениями вышеизложенное должно работать и для zsh.

Вышеприведенное для меня работает так, как я и ожидал (распечатывая /tmp/tmp.zKxt6nvlxj/bin и 6 /tmp/tmp.zKxt6nvlxj/bin/example.txt).

Пожалуйста, предоставьте что-либо из следующего, если можете:

более подробная информация о том, что ломается (например, вывод примера fasd или fasd --init после применения set -x к оболочке)
Можете ли вы воспроизвести его в минимальной среде, как указано выше.
Настоящая минимальная копия, а не просто «на моей машине это не работает».

Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://github.com/clvv/fasd/issues/117#issuecomment-354156542 или отключите звук в ветке https://github.com/notifications/unsubscribe-auth/ADKNgl5x1H3BscF4Pa3- фIjkOr9WFjjWks5tEo53gaJpZM4QxsoO .

https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed -b52498112777.png https://github.com/clvv/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd/r/n$ https://github.com/clvv/fasd/blob /90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130 https://github.com/clvv/fasd/issues/117#issuecomment-354156542

Мой код инициализации zsh выглядит следующим образом:

fasd_cache = "$ HOME/.config/fasd/fasd-init-zsh"
если ["$ (команда -v fasd)" -nt "$ fasd_cache" -o! -s "$fasd_cache"]; тогда
fasd --init псевдоним posix posix-hook zsh-hook zsh-ccomp zsh-ccomp-install zsh-ccomp zsh-ccomp-install> | "$fasd_cache"
фи
источник "$fasd_cache"
сбросить fasd_cache

Где находится fasd-init-zsh:

fasd ➤ cat fasd-init-zsh git: master *
псевдоним a = 'fasd -a'
псевдоним s = 'fasd -si'
псевдоним sd = 'fasd -sid'
псевдоним sf = 'fasd -sif'
псевдоним d = 'fasd -d'
псевдоним f = 'fasd -f'

функция для выполнения встроенного компакт-диска

fasd_cd () {
если [$# -ле 1]; тогда
fasd "$ @"
еще
местный _fasd_ret = "$ (fasd -e 'printf%s'" $ @ ")"
[-z "$_fasd_ret"] && возврат
[-d "$_fasd_ret"] && cd "$_fasd_ret" || printf%s\n"$_fasd_ret"
фи
}
псевдоним z = 'fasd_cd -d'
псевдоним zz = 'fasd_cd -d -i'

_fasd_prompt_func () {
eval "fasd --proc $ (fasd --sanitize $ (история 1 | \
sed "s / ^ [] [0-9] [] * //")) "" >> "/Пользователи/Администратор/.config/fasd/fasd.log" 2> & 1
}

добавить крючок bash

случай $ PROMPT_COMMAND в
_fasd_prompt_func ) ;;
*) PROMPT_COMMAND = "_ fasd_prompt_func; $ PROMPT_COMMAND" ;;
эсак

завершение командного режима bash

_fasd_bash_cmd_complete () {
# завершить команду после "-e"
местный курс = $ {COMP_WORDS [COMP_CWORD]}
[[$ {COMP_WORDS [COMP_CWORD-1]} == - e]] && \COMPREPLY = ($ (compgen -A command $ cur)) && return# завершить, используя строку чтения по умолчанию, завершенную после "-A" или "-D"случай $ {COMP_WORDS [COMP_CWORD-1]} в-A | -D) COMPREPLY = ($ (compgen -o по умолчанию $ cur)) && return ;;эсак# получить результаты завершения, используя расширенные псевдонимыместный РЕЗУЛЬТАТ = $ (fasd --complete "$ (псевдоним -p $ COMP_WORDS \2 >> "/Пользователи/Администратор/.config/fasd/fasd.log" | \)'/\1/p")$ {COMP_LINE # } "| пока читаем строку -r; делаем
quote_readline "$ строка" 2> /dev/null || \
printf%q "$line" 2> /dev/null && \
printf\n
Готово)
локальная ИФС = $'\n'; ПОЛНОСТЬЮ = ($ РЕЗУЛЬТАТ)
}
_fasd_bash_hook_cmd_complete () {
для cmd в $*; делать
завершить -F _fasd_bash_cmd_complete $ cmd
Готово
}

включить завершение командного режима bash

_fasd_bash_hook_cmd_complete fasd asdf sd sf z zz

В fasd.log в основном говорится о:

(eval):2: команда не найдена: fasd
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
(eval):2: команда не найдена: fasd
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
(eval):2: команда не найдена: fasd
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
(eval):2: команда не найдена: fasd
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn
ПО УМОЛЧАНИЮ -f -tn
ПЕРВЫЙ
КОМАНДА -c -tn

Но когда я набираю fasd -h, он работает:

~ ➤ fasd -h git:мастер*
fasd [опции] [запрос ...]
[f|a|s|d|z] [варианты] [запрос ...]
опции:
-s список путей с оценками
-l список путей без оценок
-i интерактивный режим
установить команду для выполнения в файле результатов
использовать толькосерверная часть
добавить дополнительный бэкенд
-a сопоставление файлов и каталогов
-d совпадать только с каталогами
-f совпадать только с файлами
-r соответствует только по рангу
-t соответствует только недавнему доступу
-R обратный порядок перечисления
-h показать краткое справочное сообщение
-[0-9] выбрать n-ю запись

fasd [-A|-D] [пути ...]
-A добавить пути
-D удалить пути
~ ➤ git:мастер*

28 декабря 2017 г., 17:15, Сяо-Мэн Ван[email protected]> написал:

Привет, Юан, за инструкцию, вот некоторые результаты, которые у меня есть.

Первая часть, я понятия не имею, что происходит:
это в зш

~ ➤ set -x git:мастер*
eval "$(fasd --init авто)"
установить +х

+zsh:2> fasd --init авто
+zsh:2> eval $'{ if [ "$ZSH_VERSION" ] && compctl; then # zsh\n eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install \n zsh-wcomp zsh-wcomp-install)"\n elif [ "$BASH_VERSION" ] && завершить ; then # bash\n eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)"\n else # оболочка posix\n eval "$(fasd --init posix-alias posix- ловушка)"\n fi\n} >> "/Пользователи/Администратор/.config/fasd/fasd.log" 2>&1'
+(оценка):1> [ 5.3 ']'
+(eval):1> compctl
+(eval):2> fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install
+(eval):2> eval $'alias a=\'fasd -a\'\nalias s=\'fasd -si\'\nalias sd=\'fasd -sid\'\nalias sf=\'fasd - sif\'\nalias d=\'fasd -d\'\nalias f=\'fasd -f\'\n# функция для выполнения встроенной функции cd\nfasd_cd() {\n if [ $# -le 1 ] ; then\n fasd "$@"\n else\n local _fasd_ret="$(fasd -e \'printf %s\' "$@")"\n [ -z "$_fasd_ret" ] && return\n [ -d "$_fasd_ret" ] && cd "$_fasd_ret" || printf %s\n "$_fasd_ret"\n fi\n}\nalias z=\'fasd_cd -d\'\nalias zz=\'fasd_cd -d -i\'\n\n# add zsh hook\n_fasd_preexec( ) {\n { eval "fasd --proc $(fasd --sanitize $1)"; } >> "/Users/Administrator/.config/fasd/fasd.log" 2>&1\n}\nautoload -Uz add-zsh-hook\nadd-zsh-hook preexec _fasd_preexec\n\n# завершение командного режима zsh \n_fasd_zsh_cmd_complete() {\n local compl\n read -c compl\n (( $+compstate )) && compstate[insert]=menu # не расширять, если загружен compsys\n answer=(${(f)"$( fasd --complete "$compl")"})\n}\n\n# завершение командного режима enbale\ncompctl -U -K _fasd_zsh_cmd_complete -V fasd -x \'C[-1,- e],s[- ]n[1,e]\' -c - \n \'c[-1,-A][-1,-D]\' -f -- fasd fasd_cd\n\n(( $+functions[compdef ] )) && {\n # zsh завершение режима слова\n _fasd_zsh_word_complete() {\n [ "$2" ] && local _fasd_cur="$2"\n [ -z "$_fasd_cur" ] && local _fasd_cur="${words [ТЕКУЩИЙ]}"\n local fnd="${_fasd_cur//,/ }"\n local type=${1:-e}\n fasd --query $typ "$fnd" 2>> "/Users /Администратор/.config/fasd/fasd.log" | sed \'s/^[^ ] [ ] //\' | do\n compadd -U -V fasd "$line"\n done\n compstate[insert]=menu # не расширять\n }\n _fasd_zsh_word_complete_f() { _fasd_zsh_word_complete f ; }\n _fasd_zsh_word_complete_trigger() {\n local _fasd_cur="${words[CURRENT]}"\n eval $(fasd --word-complete-trigger _fasd_zsh_word_complete $_fasd_cur)\n }\n # определить виджеты zle\n zle -C fasd-complete complete-word _generic\n zstyle \':completion:fasd-complete: \' Completer _fasd_zsh_word_complete\n zstyle \':completion:fasd-complete: \' menu-select\n\n zle -C fasd -complete-f complete-word _generic\n zstyle \':completion:fasd-complete-f: \' Completer _fasd_zsh_word_complete_f\n zstyle \':completion:fasd-complete-f: \' menu-select\n\n zle -C fasd-complete-d complete-word _generic\n zstyle \':completion:fasd-complete-d: \' Completer _fasd_zsh_word_complete_d\n zstyle \':completion:fasd-complete-d: \' menu-select\n }\n\n(( $+functions[compdef] )) && {\n # включить завершение в словесном режиме\n orig_comp="$(zstyle -L \':completion:*\' completer 2>> "/Users/ Administrator/.config/fasd/fasd.log")"\n if [ "$orig_comp" ]; ) eval "$orig_comp _fasd_zsh_word_complete_trigger";;\n esac\n else\n zstyle \':completion: \' completer _complete _fasd_zsh_word_complete_trigger\n fi\n unset orig_comp\n}'
+(eval):1> псевдоним 'a=fasd -a'
+(eval):2> псевдоним 's=fasd -si'
+(eval):3> псевдоним 'sd=fasd -sid'
+(eval):4> псевдоним 'sf=fasd -sif'
+(eval):5> псевдоним 'd=fasd -d'
+(eval):6> псевдоним 'f=fasd -f'
+(eval):17> псевдоним 'z=fasd_cd -d'
+(eval):18> псевдоним 'zz=fasd_cd -d -i'
+(eval):24> autoload -Uz add-zsh-hook
+(eval):25> add-zsh-hook preexec _fasd_preexec
+zsh:3> установить +x

вторая часть, я не могу написать файл примера, поэтому я перешел на root, и в этом минимальном env работает fasd. Я еще не создал файл .bashrc.

bash-3.2$ sudo su
Пароль:
sh-3.2# testhome=$(mktemp -d)
sh-3.2# mkdir -p ${testhome}/bin
sh-3.2# cd ${testhome}/bin
ш-3.2# лс
ш-3.2# pwd
/var/папки/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/bin
sh-3.2# curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd;chmod https://raw.githubusercontent.com/clvv/ fasd/master/fasd;chmod +x ${testhome}/bin/fasd;
ш-3.2# лс -ал
всего 40
drwxr-xr-x 3 корневое колесо 96 28 декабря 16:51 .
drwx------ 3 корневое колесо 96 дек 28 16:50 ..
-rwxr-xr-x 1 корневое колесо 20195 28 декабря 16:51 fasd
bash-3.2# eval "$(./bin/fasd --init auto)"
bash-3.2# фасд
bash-3.2# лс
.viminfo bin пример.txt
bash-3.2# эхо "эхо привет мир" >> ~/.bash_history
bash-3.2# лс
.bash_history .viminfo bin пример.txt
bash-3.2# экспорт PATH=$PATH:${testhome}/bin
bash-3.2# лс
.bash_history .fasd .viminfo bin пример.txt
bash-3.2# в .fasd
bash: v: команда не найдена
bash-3.2# кошка .fasd
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd|1|1514451952
bash-3.2# ./bin/fasd
12 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd
пример bash-3.2# ./bin/fasd
bash-3.2# rm пример.txt
bash-3.2# сенсорный пример.txt
пример bash-3.2# ./bin/fasd
6 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/example.txt

28 декабря 2017 г., 02:37, Юан Кемпуведомления@github.com> написал:

Пожалуйста, предоставьте минимальную репродукцию.

В целях отладки может помочь изменить код инициализации fasd на следующий:

установить -х
eval "$(fasd --init авто)"
установить +х
Или включить set -x перед командой, которая выдает ошибку.

Я не могу воспроизвести эти проблемы. Вот шаги, которые я могу выполнить, чтобы иметь работающую установку fasd под bash (которая, если вы хотите проверить работу в вашей системе, может сузить вопрос, связана ли проблема с вашей конфигурацией bashrc или где-то еще):

$ testhome=$(mktemp -d)
$ mkdir -p ${testhome}/bin
$ curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd
$ chmod +x ${testhome}/bin/fasd

$ cat > "${testhome}/.bashrc" < экспорт PATH=$PATH:${testhome}/bin

Убедитесь, что история не пуста; fasd берет команды для обработки из истории

(https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130 https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b307-cbdb1fas#54cbdb1fas# )

и, если история пуста, выдаст ошибку

эхо "эхо привет мир" >> ~/.bash_history
eval "\$(fasd --init auto)"
EOF

$ env -i HOME=${testhome} bash
$ cd ~/bin
$ cd ~/bin
$ компакт-диск ~

$ z bin && pwd

$ сенсорный пример.txt
пример $fasd
Примечание: для работы fasd вышеописанное должно быть запущено в интерактивной оболочке, а не в bash-скрипте. С небольшими изменениями вышеизложенное должно работать и для zsh.

Вышеприведенное для меня работает так, как я и ожидал (распечатывая /tmp/tmp.zKxt6nvlxj/bin и 6 /tmp/tmp.zKxt6nvlxj/bin/example.txt).

Пожалуйста, предоставьте что-либо из следующего, если можете:

более подробная информация о том, что ломается (например, вывод примера fasd или fasd --init после применения set -x к оболочке)
Можете ли вы воспроизвести его в минимальной среде, как указано выше.
Настоящая минимальная копия, а не просто «на моей машине это не работает».

Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://github.com/clvv/fasd/issues/117#issuecomment-354156542 или отключите звук в ветке https://github.com/notifications/unsubscribe-auth/ADKNgl5x1H3BscF4Pa3- фIjkOr9WFjjWks5tEo53gaJpZM4QxsoO .

https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc -7290892c7bb5.png https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0db -11e6-9aed-b52498112777.png https://github.com/clvv/fasd https://github.com/clvv/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd/r/ n$ https://raw.githubusercontent.com/clvv/fasd/master/fasd/r/n$ https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130 https://github .com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130 https://github.com/clvv/fasd/issues/117#issuecomment-354156542 https://github.com/clvv/fasd/issues/117 #issuecomment-354156542

Не уверен, что это связано. Но я считаю, что https://github.com/jimhester/per-directory-history конфликтует с fasd. У меня та же проблема, что fasd не отслеживает файлы или каталоги. После отключения плагина истории каталогов fasd работает нормально.

Также получил это в подсистеме для окон (может быть, здесь проблема), как с bash , так и с zsh .
даже пытался отключить все остальное в файлах rc , но списки fasd всегда пусты.

Я также пытался использовать как fasd из репозитория, так и установить его с помощью менеджера пакетов, результаты не изменились.

set -x
eval "$(fasd --init auto)"
set +x
+-zsh:2> fasd --init auto
+-zsh:2> eval $'{ if [ "$ZSH_VERSION" ] && compctl; then # zsh\n    eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install \\\n      zsh-wcomp zsh-wcomp-install)"\n  elif [ "$BASH_VERSION" ] && complete; then # bash\n    eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)"\n  else # posix shell\n    eval "$(fasd --init posix-alias posix-hook)"\n  fi\n} >> "/dev/null" 2>&1'
+(eval):1> [ 5.5.1 ']'
+(eval):1> compctl
+(eval):2> fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install
+(eval):2> eval $'alias a=\'fasd -a\'\nalias s=\'fasd -si\'\nalias sd=\'fasd -sid\'\nalias sf=\'fasd -sif\'\nalias d=\'fasd -d\'\nalias f=\'fasd -f\'\n# function to execute built-in cd\nfasd_cd() {\n  if [ $# -le 1 ]; then\n    fasd "$@"\n  else\n    local _fasd_ret="$(fasd -e \'printf %s\' "$@")"\n    [ -z "$_fasd_ret" ] && return\n    [ -d "$_fasd_ret" ] && cd "$_fasd_ret" || printf %s\\n "$_fasd_ret"\n  fi\n}\nalias z=\'fasd_cd -d\'\nalias zz=\'fasd_cd -d -i\'\n\n# add zsh hook\n_fasd_preexec() {\n  { eval "fasd --proc $(fasd --sanitize $1)"; } >> "/dev/null" 2>&1\n}\nautoload -Uz add-zsh-hook\nadd-zsh-hook preexec _fasd_preexec\n\n# zsh command mode completion\n_fasd_zsh_cmd_complete() {\n  local compl\n  read -c compl\n  (( $+compstate )) && compstate[insert]=menu # no expand if compsys loaded\n  reply=(${(f)"$(fasd --complete "$compl")"})\n}\n\n# enbale command mode completion\ncompctl -U -K _fasd_zsh_cmd_complete -V fasd -x \'C[-1,-*e],s[-]n[1,e]\' -c - \\\n  \'c[-1,-A][-1,-D]\' -f -- fasd fasd_cd\n\n(( $+functions[compdef] )) && {\n  # zsh word mode completion\n  _fasd_zsh_word_complete() {\n    [ "$2" ] && local _fasd_cur="$2"\n    [ -z "$_fasd_cur" ] && local _fasd_cur="${words[CURRENT]}"\n    local fnd="${_fasd_cur//,/ }"\n    local typ=${1:-e}\n    fasd --query $typ "$fnd" 2>> "/dev/null" | \\\n      sort -nr | sed \'s/^[^ ]*[ ]*//\' | while read -r line; do\n        compadd -U -V fasd "$line"\n      done\n    compstate[insert]=menu # no expand\n  }\n  _fasd_zsh_word_complete_f() { _fasd_zsh_word_complete f ; }\n  _fasd_zsh_word_complete_d() { _fasd_zsh_word_complete d ; }\n  _fasd_zsh_word_complete_trigger() {\n    local _fasd_cur="${words[CURRENT]}"\n    eval $(fasd --word-complete-trigger _fasd_zsh_word_complete $_fasd_cur)\n  }\n  # define zle widgets\n  zle -C fasd-complete complete-word _generic\n  zstyle \':completion:fasd-complete:*\' completer _fasd_zsh_word_complete\n  zstyle \':completion:fasd-complete:*\' menu-select\n\n  zle -C fasd-complete-f complete-word _generic\n  zstyle \':completion:fasd-complete-f:*\' completer _fasd_zsh_word_complete_f\n  zstyle \':completion:fasd-complete-f:*\' menu-select\n\n  zle -C fasd-complete-d complete-word _generic\n  zstyle \':completion:fasd-complete-d:*\' completer _fasd_zsh_word_complete_d\n  zstyle \':completion:fasd-complete-d:*\' menu-select\n}\n\n(( $+functions[compdef] )) && {\n  # enable word mode completion\n  orig_comp="$(zstyle -L \':completion:\\*\' completer 2>> "/dev/null")"\n  if [ "$orig_comp" ]; then\n    case $orig_comp in\n      *_fasd_zsh_word_complete_trigger*);;\n      *) eval "$orig_comp _fasd_zsh_word_complete_trigger";;\n    esac\n  else\n    zstyle \':completion:*\' completer _complete _fasd_zsh_word_complete_trigger\n  fi\n  unset orig_comp\n}'
+(eval):1> alias 'a=fasd -a'
+(eval):2> alias 's=fasd -si'
+(eval):3> alias 'sd=fasd -sid'
+(eval):4> alias 'sf=fasd -sif'
+(eval):5> alias 'd=fasd -d'
+(eval):6> alias 'f=fasd -f'
+(eval):17> alias 'z=fasd_cd -d'
+(eval):18> alias 'zz=fasd_cd -d -i'
+(eval):24> autoload -Uz add-zsh-hook
+(eval):25> add-zsh-hook preexec _fasd_preexec
+-zsh:3> set +x

Не уверен, что рейтинг должен быть в ~/.fasd , но файл кажется всегда пустым.

Для меня это помогло исправить это, чтобы запустить его от имени пользователя root, извлекая часть fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install из
fasd --init auto и окружите ее eval, eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)" и примените к корневому каталогу /root/.bashrc , возможно, извлекая команда init была не нужна, и все, что было достаточно, это запустить ее как root, но у меня не было больше времени, чтобы подтвердить это, но я думаю, что помню, что это не сработало для меня так же, как и только с помощью root - мне пришлось извлеките часть команды инициализации bash, я думаю.

Для будущих читателей: у меня была аналогичная проблема, потому что права моей папки ~/.fasd были 600 (только для root). Удаление этой папки и поиск моего файла ~/.zshrc решили проблему.

Для будущих читателей: у меня была аналогичная проблема, потому что права моей папки ~/.fasd были 600 (только для root). Удаление этой папки и поиск моего файла ~/.zshrc решили проблему.

Это было проблемой и для меня

Для меня это было 100% https://github.com/clvv/fasd/issues/117#issuecomment -357458043.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

mhlinder picture mhlinder  ·  3Комментарии

ghost picture ghost  ·  12Комментарии

simendsjo picture simendsjo  ·  6Комментарии

ixil picture ixil  ·  5Комментарии

pearofducks picture pearofducks  ·  7Комментарии