Fasd: 在午夜指挥官下不起作用

创建于 2014-09-22  ·  6评论  ·  资料来源: clvv/fasd

我尝试从 mc 跳回 shell(使用 co)然后 fasd:

$ z 32
fasd:4: unknown file attribute: _

最有用的评论

我用 _fasd_preexec () 重新定义解决了这个问题。 问候@fcelda

在你的 .zshrc

if ps $PPID |grep -q mc; then
    _fasd_preexec () {
        fasd --proc "$(fasd --sanitize "$1")"
    }
endif

如果您使用fasd可执行文件的完整路径重新定义fasd_cd ,您也可以部分修复它。 所以你只会破坏 fasd 功能。 并且您的所有别名(例如zzz都可以使用。

PS 我们在 README.md 中需要这些信息吗?

所有6条评论

我遇到了同样的问题。 由于某种原因,在 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 功能。 并且您的所有别名(例如zzz都可以使用。

PS 我们在 README.md 中需要这些信息吗?

@ezh我认为在ReadMe中有这个会很好。

这个错误在每个可能的平台上都欢迎我,所以我开始避免完成。 它应该添加到自述文件中。 很高兴有修复。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mhlinder picture mhlinder  ·  3评论

sypl picture sypl  ·  12评论

ghost picture ghost  ·  12评论

sbglasius picture sbglasius  ·  5评论

josephholsten picture josephholsten  ·  15评论