我尝试从 mc 跳回 shell(使用 co)然后 fasd:
$ z 32
fasd:4: unknown file attribute: _
我遇到了同样的问题。 由于某种原因,在 MC 终端中定义了一个 fasd() 函数。 我不知道它是怎么到那里的。
% which fasd
fasd () {
pwd 7 kill -STOP precmd_functions+=(_mc_precmd)
}
删除该功能可解决问题:
% unset -f fasd
% which fasd
/usr/bin/fasd
% z tmp <tab>
/tmp /home/fcelda/tmp
似乎_fasd_preexec
钩子与_mc_precmd
$ 钩子冲突。 我能够找到解决方法。
这是当前的 fasd 钩子:
% which _fasd_preexec
_fasd_preexec () {
{
eval "fasd --proc $(fasd --sanitize $1)"
} >> "/dev/null" 2>&1
}
这是 MC 钩子:
% which _mc_precmd
_mc_precmd () {
pwd >&7
kill -STOP $$
}
我通过消除_fasd_preexec
中的调试使其工作:
% which _fasd_preexec
_fasd_preexec () {
fasd --proc "$(fasd --sanitize "$1")"
}
我不确定如何正确解决此问题。 用括号替换大括号也可以,但我不确定是否需要运行子 shell。
刚遇到同样的问题。 试图重新定义_fasd_preexec
没有成功。
我用 _fasd_preexec () 重新定义解决了这个问题。 问候@fcelda
在你的 .zshrc
if ps $PPID |grep -q mc; then
_fasd_preexec () {
fasd --proc "$(fasd --sanitize "$1")"
}
endif
如果您使用fasd
可执行文件的完整路径重新定义fasd_cd
,您也可以部分修复它。 所以你只会破坏 fasd 功能。 并且您的所有别名(例如z
、 zz
都可以使用。
PS 我们在 README.md 中需要这些信息吗?
@ezh我认为在ReadMe中有这个会很好。
这个错误在每个可能的平台上都欢迎我,所以我开始避免完成。 它应该添加到自述文件中。 很高兴有修复。
最有用的评论
我用 _fasd_preexec () 重新定义解决了这个问题。 问候@fcelda
在你的 .zshrc
如果您使用
fasd
可执行文件的完整路径重新定义fasd_cd
,您也可以部分修复它。 所以你只会破坏 fasd 功能。 并且您的所有别名(例如z
、zz
都可以使用。PS 我们在 README.md 中需要这些信息吗?