Sto usando il menu select
comportamento in zsh
, che richiama un menu sotto il cursore dove puoi vedere le varie possibilità. L'opzione .zshrc che ho impostato per questo è
zstyle ':completion:*' menu select=2
Per impostazione predefinita, premendo Return
per selezionare una possibilità in questo menu si completa solo la parola - in realtà non invia il comando. Ad esempio, potrei ottenere un menu come questo
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Premendo Return
qui si otterrà
~ % cd Desktop/
Devo quindi premere Return
una seconda volta per inviare effettivamente il comando.
Posso modificare questo comportamento per farlo in modo che premendo Return
entrambi selezioni il completamento e invii il comando in questo modo
bindkey -M menuselect '^M' .accept-line
Tuttavia, c'è un problema con questo: a volte ho bisogno di completare un file o una directory senza inviare il comando. Ad esempio, potrei aver bisogno di fare ln -s Desktop Desktop2
- con questo bindkey
comportamento, provare a completare Desktop comporterà ln -s Desktop/
l'invio come comando, e ovviamente non lo voglio.
Sono consapevole che solo premendo lo spazio mi permetterà di andare avanti con il comando, ma ora è un'abitudine.
Detto questo, c'è un modo per farlo in modo che solo alcuni comandi ti permettano di premere Return
una volta (come cd
), ma tutti gli altri comandi richiedono di premerlo due volte?
.zshrc
file non ti consente di farlo, la risposta sarà semplicemente no, a meno che tu non modifichi tu stesso il codice sorgente per supportare il comportamento basato sui comandi. Ma poi devi ancora definire per quali comandi eseguire questo, che da solo è molto più noioso che premere semplicemente un tasto aggiuntivo ...