Korzystam z menu selectzachowania w zsh, które wywołuje menu pod kursorem, w którym można zobaczyć różne możliwości. Ustawiłem dla tego opcję .zshrc
zstyle ':completion:*' menu select=2
Domyślnie naciśnięcie, Returnaby wybrać opcję w tym menu, uzupełnia tylko słowo - tak naprawdę nie wysyła polecenia. Na przykład mogę dostać takie menu
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Naciśnięcie Returntutaj spowoduje
~ % cd Desktop/
I wtedy trzeba nacisnąć Returnna drugi czasu, aby rzeczywiście wysłać polecenie.
Mogę zmodyfikować to zachowanie, tak aby naciśnięcie Returnobu wybrało zakończenie i wysłało polecenie w ten sposób
bindkey -M menuselect '^M' .accept-line
Jednak jest z tym problem: czasami muszę uzupełnić plik lub katalog bez wysyłania polecenia. Na przykład być może będę musiał to zrobić ln -s Desktop Desktop2- przy takim bindkeyzachowaniu próba ukończenia pulpitu spowoduje ln -s Desktop/wysłanie polecenia i oczywiście nie chcę tego.
Wiem, że naciśnięcie spacji pozwoli mi wykonać polecenie, ale teraz jest to nawyk.
Biorąc to pod uwagę, czy istnieje sposób, aby zrobić to tak, aby tylko niektóre polecenia pozwalały naciskać Returnraz (jak cd), ale wszystkie inne polecenia wymagają dwukrotnego naciśnięcia?
.zshrcplik na to nie pozwala, odpowiedź będzie brzmiała „nie”, chyba że sam dostosujesz kod źródłowy, aby obsługiwał zachowanie oparte na poleceniach. Ale nadal musisz określić, dla których poleceń to zrobić, co samo w sobie jest znacznie bardziej nużące niż naciśnięcie dodatkowego Enter ...