Estou usando o comportamento menu select em zsh , que chama um menu abaixo do cursor, onde você pode ver as várias possibilidades. A opção .zshrc que eu defini para isso é
zstyle ':completion:*' menu select=2
Por padrão, pressionar Return para selecionar uma possibilidade neste menu só completa a palavra - ela não envia o comando. Por exemplo, eu posso ter um menu como este
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Pressionar Return resultará em
~ % cd Desktop/
Eu então tenho que pressionar Return a segunda hora para realmente enviar o comando.
Eu posso modificar esse comportamento para fazer com que pressionar Return selecione a conclusão e envie o comando fazendo isso
bindkey -M menuselect '^M' .accept-line
No entanto, há um problema com isso: às vezes eu preciso completar um arquivo ou diretório sem enviar o comando. Por exemplo, talvez eu precise fazer ln -s Desktop Desktop2 - com esse comportamento de bindkey , tentar concluir o Desktop resultará em ln -s Desktop/ sendo enviado como o comando e, obviamente, não quero isso.
Estou ciente de que apenas pressionando o espaço vai me deixar seguir com o comando, mas agora é um hábito.
Sendo assim, existe uma maneira de fazer com que apenas alguns comandos some permitam que você pressione Return uma vez (como cd ), mas todos os outros outros exigem pressioná-lo duas vezes?