Estoy usando el menu select
comportamiento en zsh
, que invoca un menú debajo del cursor donde puede ver las diversas posibilidades. La opción .zshrc que configuré para esto es
zstyle ':completion:*' menu select=2
De forma predeterminada, presionar Return
para seleccionar una posibilidad en este menú solo completa la palabra; en realidad, no envía el comando. Por ejemplo, podría obtener un menú como este
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Presionando Return
aquí resultará en
~ % cd Desktop/
Luego tengo que presionar Return
una segunda vez para enviar el comando.
Puedo modificar este comportamiento para que presionar Return
ambos seleccione la finalización y envíe el comando haciendo esto
bindkey -M menuselect '^M' .accept-line
Sin embargo, hay un problema con esto: a veces necesito completar un archivo o directorio sin enviar el comando. Por ejemplo, es posible que deba hacerlo ln -s Desktop Desktop2
: con este bindkey
comportamiento, intentar completar el Escritorio resultará en ln -s Desktop/
ser enviado como el comando, y obviamente no quiero eso.
Soy consciente de que solo presionar la barra espaciadora me permitirá seguir con el comando, pero ahora es un hábito.
Dado esto, ¿hay alguna manera de hacerlo de modo que solo algunos comandos le permitan presionar Return
una vez (como cd
), pero todos los demás comandos requieren presionarlo dos veces?
fuente
.zshrc
archivo no le permite hacerlo, entonces la respuesta simplemente será no, a menos que ajuste el código fuente usted mismo para admitir el comportamiento basado en comandos. Pero entonces todavía tienes que definir para qué comandos hacer esto, lo que por sí solo es mucho más tedioso que presionar una tecla adicional ...Respuestas:
Si realmente necesita esto, en teoría podría establecer una función que verifique el comando que está ejecutando y complete o envíe la línea.
Pruebe algo como esto (no probado):
Fuente: ¿ usando un comando personalizado del antiguo .inputrc en zsh?
fuente
Técnicamente no es posible en la forma en que está preguntando. No sé si hay otra salida
fuente