Fasd: 真夜中の司令官の下では機能しません

作成日 2014年09月22日  ·  6コメント  ·  ソース: clvv/fasd

私はmcから(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")"
}

この問題を適切に修正する方法がわかりません。 中括弧を括弧に置き換えることも同様に機能しましたが、サブシェルを実行する必要があるかどうかはわかりません。

同じ問題が発生しました。 _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にあるといいと思います。

このエラーは可能なすべてのプラットフォームで私を歓迎するので、私は完了を避け始めました。 Readmeに追加する必要があります。 修正してよかったです。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

josephholsten picture josephholsten  ·  15コメント

rosshadden picture rosshadden  ·  6コメント

mhlinder picture mhlinder  ·  3コメント

sbglasius picture sbglasius  ·  5コメント

ghost picture ghost  ·  12コメント