Korzystam z menu select
zachowania 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, Return
aby 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 Return
tutaj spowoduje
~ % cd Desktop/
I wtedy trzeba nacisnąć Return
na drugi czasu, aby rzeczywiście wysłać polecenie.
Mogę zmodyfikować to zachowanie, tak aby naciśnięcie Return
obu 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 bindkey
zachowaniu 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ć Return
raz (jak cd
), ale wszystkie inne polecenia wymagają dwukrotnego naciśnięcia?
źródło
.zshrc
plik 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 ...Odpowiedzi:
Jeśli naprawdę tego potrzebujesz, teoretycznie możesz ustawić funkcję sprawdzającą wykonywane polecenie i uzupełnić lub wysłać linię.
Wypróbuj coś takiego (niesprawdzone):
Źródło: za pomocą niestandardowego polecenia ze starego .inputrc w Zsh?
źródło
Technicznie nie jest to możliwe w sposób, w jaki pytasz. Nie wiem, czy jest jakieś inne wyjście
źródło