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?