Fasd: Funktioniert nicht unter Midnight Commander

Erstellt am 22. Sept. 2014  ·  6Kommentare  ·  Quelle: clvv/fasd

Ich habe versucht, von mc (mit co) und dann fasd zurück in die Shell zu springen:

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

Hilfreichster Kommentar

Ich löse das mit _fasd_preexec() Redefinition. Grüße @fcelda

in Ihrer .zshrc

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

Sie können es auch teilweise beheben, wenn Sie fasd_cd mit vollständigem Pfad zur ausführbaren Datei fasd neu definieren. Sie haben also nur die fasd-Funktion unterbrochen. Und alle Ihre Aliase wie z , zz funktionieren.

PS Brauchen wir diese Informationen in README.md?

Alle 6 Kommentare

Ich bin auf das gleiche Problem gestoßen. Aus irgendeinem Grund ist im MC-Terminal eine fasd()-Funktion definiert. Ich weiß nicht, wie es dahin gekommen ist.

% which fasd
fasd () {
    pwd 7 kill -STOP precmd_functions+=(_mc_precmd)
}

Das Entfernen der Funktion behebt das Problem:

% unset -f fasd
% which fasd
/usr/bin/fasd
% z tmp <tab>
/tmp  /home/fcelda/tmp

Es scheint, dass der Hook _fasd_preexec mit dem Hook _mc_precmd kollidiert. Ich konnte einen Workaround finden.

Dies ist der aktuelle Fasd-Hook:

% which _fasd_preexec 
_fasd_preexec () {
    {
        eval "fasd --proc $(fasd --sanitize $1)"
    } >> "/dev/null" 2>&1
}

Und das ist der MC-Hook:

% which _mc_precmd 
_mc_precmd () {
    pwd >&7
    kill -STOP $$
}

Ich habe es zum Laufen gebracht, indem ich das Debugging in _fasd_preexec eliminiert habe:

% which _fasd_preexec
_fasd_preexec () {
    fasd --proc "$(fasd --sanitize "$1")"
}

Ich bin mir nicht sicher, wie ich dieses Problem richtig beheben kann. Das Ersetzen von geschweiften Klammern durch Klammern funktionierte ebenfalls, aber ich bin mir nicht sicher, ob das Ausführen einer Sub-Shell erwünscht ist.

Habe gerade das gleiche Problem festgestellt. Versucht, _fasd_preexec ohne Erfolg neu zu definieren.

Ich löse das mit _fasd_preexec() Redefinition. Grüße @fcelda

in Ihrer .zshrc

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

Sie können es auch teilweise beheben, wenn Sie fasd_cd mit vollständigem Pfad zur ausführbaren Datei fasd neu definieren. Sie haben also nur die fasd-Funktion unterbrochen. Und alle Ihre Aliase wie z , zz funktionieren.

PS Brauchen wir diese Informationen in README.md?

@ezh Ich denke, es wird schön sein, dies in ReadMe zu haben.

Dieser Fehler begrüßt mich auf jeder möglichen Plattform, also habe ich angefangen, die Vervollständigung zu vermeiden. es sollte in Readme hinzugefügt werden. Schön, die Lösung zu haben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

mhlinder picture mhlinder  ·  3Kommentare

rosshadden picture rosshadden  ·  6Kommentare

pearofducks picture pearofducks  ·  7Kommentare

ghost picture ghost  ·  12Kommentare

josephholsten picture josephholsten  ·  15Kommentare