Estou usando o menu select
comportamento em zsh
, que invoca um menu abaixo do cursor onde você pode ver as várias possibilidades. A opção .zshrc que defini para isso é
zstyle ':completion:*' menu select=2
Por padrão, pressionar Return
para selecionar uma possibilidade neste menu completa apenas a palavra - na verdade, ele não envia o comando. Por exemplo, eu posso obter um menu como este
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Pressionar Return
aqui resultará em
~ % cd Desktop/
Preciso pressionar Return
uma segunda vez para realmente enviar o comando.
Posso modificar esse comportamento para que, ao pressionar Return
ambos, 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 concluir um arquivo ou diretório sem enviar o comando. Por exemplo, talvez eu precise fazer isso ln -s Desktop Desktop2
- com esse bindkey
comportamento, tentar concluir a área de trabalho resultará no ln -s Desktop/
envio como comando e, obviamente, não quero isso.
Estou ciente de que apenas pressionar o espaço permitirá que eu continue com o comando, mas agora é um hábito.
Diante disso, existe uma maneira de fazer com que apenas alguns comandos permitam que você pressione Return
uma vez (como cd
), mas todos os outros comandos exigem que seja pressionado duas vezes?
.zshrc
arquivo não permitir, a resposta será simplesmente não, a menos que você mesmo ajuste o código-fonte para dar suporte ao comportamento baseado em comandos. Mas, então, você ainda tem que definir para que comanda para fazer isso, o que por si só é muito mais tediosa do que apenas pressionando inserir um adicional ...