Ich verwende die PHP-Tools Ссылка und n98-magerun.phar - beide basieren auf Symfony's CLI-Komponenten.
Wenn ich ein solches Autocomplete-Skript verwende:
%Vor% Er unterbricht die automatische Vervollständigung des Befehls scp
(der normalerweise Dateien auf einem Remote-Server abschließt - aber mit dieser - nicht verwandten - Robo-Vervollständigung an Ort und Stelle entfernt scp den Hostnamen aus dem Befehl)
Warum ist das? Wie zu beheben?
BEARBEITEN
basierend auf der Antwort, die feste Version ist hier:
Das hat wahrscheinlich nichts mit deinem robo
compspec zu tun. Auch nicht mit der Funktion _scp
completion, die mit scp
verknüpft ist.
Wahrscheinlich liegt das an deinem COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
.
Sie haben :
aus der Liste der Trennzeichen entfernt. Offenbar ist _scp
robust genug, um sich mit oder ohne :
als Worttrennzeichen zu verhalten. Es gibt die gleiche Liste der Kandidatenabschlüsse zurück. Aber das Token, das ersetzt wird, wenn _scp
nur einen Kandidaten für die Vervollständigung von z. scp host:public_ht
, ist host:public_ht
, anstatt nur public_ht
. Beweis:
Wenn Sie versuchen, foobar host:public_ht
zu vervollständigen, erhalten Sie foobar host:bazcux
, weil das ersetzte Token nur public_ht
ist. Während mit:
Wenn Sie versuchen, foobar host:public_ht
zu vervollständigen, erhalten Sie foobar bazcux
, weil es die vollständige host:public_ht
ist, die durch bazcux
ersetzt wird.
Die Lösung für Ihr Problem besteht wahrscheinlich darin, Ihre Funktion _robo
completion so anzupassen, dass :
kein Worttrennzeichen ist. Etwas wie:
Eine (scheinbar) einfachere Lösung besteht darin, die obige Funktion _stem
durch die vorhandene Funktion __reassemble_comp_words_by_ref
der Bibliothek bash_completion
zu ersetzen:
All das ist wahrscheinlich nicht genau das, was Sie wollen. Ich weiß nicht robo.il
und es gibt wahrscheinlich viele Verbesserungen, die mehr Kontext in Betracht ziehen würden, um spezifische Vervollständigungen vorzuschlagen. Aber es kann ein Ausgangspunkt sein.
Tags und Links bash symfony autocomplete