Recientemente cambié de Bash a Zsh en Ubuntu y estoy bastante feliz por ello. Sin embargo, hay algo que realmente extraño y no encontré cómo lograr lo mismo.
En Bash, cada vez que estaba escribiendo un comando largo y noté que tenía que ejecutar algo más antes, solo tenía que comentarlo como en el siguiente:
me@home> #mysuperlongcommand with some arguments
me@home> thecommandIhavetorunfirst #and then: then up up
me@home> #mysuperlongcommand with some arguments #I just need to uncomment it!
Sin embargo, esta situación bastante recurrente no es tan fácil como con la dirección zsh
, dada #mysuperlongcommand
será ejecutar como tal (y lo que resulta en: zsh: command not found: #mysuperlongcommand
.
command-line
zsh
Rolf
fuente
fuente
set -k
si es solo una vez. Pero usaría lasetopt
línea de esta respuesta en mi zshrcyo suelo
Desde el manual de zsh:
Entonces se ve así:
Además, si configura la
INTERACTIVE_COMMENTS
opción (setopt INTERACTIVE_COMMENTS
), podrá usar comentarios en shells interactivos como está acostumbrado.fuente
read -z
yprint -z
, por lo que con algunas secuencias de comandos y archivos temporales podría hacerlo. Pero luego, un widget zle personalizado para guardar la línea de comando en un archivo temporal podría ser más simple, y el historial compartido será aún más simple.También me encuentro haciendo esto a menudo. Lo que hago es cortar el comando largo, ejecutar el comando que necesita ir primero y luego pegar el comando largo nuevamente. Esto es fácil: CTRL + U corta el comando actual en un búfer, CTRL + Y lo pega. Funciona en zsh y bash.
fuente
Además de lo
setopt interactivecomments
sugerido por @Lajnold, es posible que también desee agregar algo como lo siguiente para evitar que ciertos comentarios se escriban en el historial (de /superuser/352788/how-to-prevent-a- comando-en-el-zshell-de-ser-guardado-en-historial ):Esto anula la función incorporada de ZSH zshaddhistory ():
Como referencia, este es el zshaddhistory () predeterminado http://zsh.sourceforge.net/Doc/Release/Functions.html
fuente