2012-07-26 17 views
89

Cambié hace poco de Bash a Zsh en Ubuntu y estoy bastante contento con eso. Sin embargo, hay algo que realmente extraño y no encontré cómo lograr lo mismo.Comentarios en la línea de comandos Zsh

En Bash, cada vez que yo estaba escribiendo un comando largo y se dio cuenta que tenía que ejecutar otra cosa antes, sólo tenía que comentar a cabo como en el siguiente:

[email protected]> #mysuperlongcommand with some arguments 
[email protected]> thecommandIhavetorunfirst #and then: then up up 
[email protected]> #mysuperlongcommand with some arguments #I just need to uncomment it! 

Sin embargo, esta situación bastante recurrente es no es tan fácil de tratar como con zsh, dado que #mysuperlongcommand se ejecutará como tal (y resulta en: zsh: command not found: #mysuperlongcommand.

Respuesta

132

Después de haber empezado a probar zsh, me encontré con este problema también. Puede hacer setopt interactivecomments para activar los comentarios estilo bash.

+0

¡Esta es la respuesta correcta! ¡Gracias! –

+1

También puede hacer 'set -k' si solo está apagado. Pero usaría la línea 'setopt' de esta respuesta en mi zshrc –

+9

¿Hay alguna razón por la cual este no sea el comportamiento predeterminado? – naught101

18

Me encuentro haciendo esto a menudo también. Lo que hago es cortar el comando largo, ejecutar el comando que necesita ir primero y luego volver a pegar el comando largo. Esto es fácil: CTRL + U corta el comando actual en un búfer, CTRL + Y lo pega. Funciona en zsh y bash.

+0

buena solución, thx :) – Rolf

+0

bien, en realidad, mi camino es una solución mientras que su solución es la mejor opción;) – Rolf

+4

Esta no debería ser la respuesta aceptada. La solución a continuación que dice que se debe usar "setopt interactivecomments" debería ser. La razón de esto es que si solo corta el comando actual, entonces no está en su historial zsh, y tampoco puede usar fácilmente cortar y pegar mientras escribe su nuevo comando sin sobreescribir el comando que estaba tratando de salvar. – Douglas

34

utilizo

bindkey "^Q" push-input 

Desde el manual zsh:

Empuje toda la multilínea actual constructo en la pila tampón y volver a la de nivel superior (PS1) del sistema. Si la construcción del analizador actual es solo una línea, esto es exactamente como una línea de inserción. La próxima vez que el editor se inicie o salte con get-line, el constructo saltará de la parte superior de la pila de búfer y se cargará en el búfer de edición.

para que se vea así:

> long command 
Ctrl+Q => long command disappears to the stack 
> forgotten command 
long command reappears from stack 
> long command 

Además, si se establece la opción INTERACTIVE_COMMENTS (setopt INTERACTIVE_COMMENTS), usted será capaz de utilizar los comentarios en shells interactivos como usted está acostumbrado.

+0

Me gusta su opción, pero no puedo hacer que funcione :(¿Hay alguna forma de que deba escribir el enlace en el archivo, o son solo dos caracteres,^y Q? Mi comando se borra, pero no lo hago Saber cómo hacer que aparezca nuevamente en la entrada –

+1

@Mihnea si el comando desaparece, parece que la entrada de inserción está funcionando. Debería aparecer cuando ejecutas el siguiente comando o simplemente presionar Enter. ¿No hace eso? –

+0

Tonto yo, esperaba tener que presionar la flecha hacia arriba. Gracias, gran consejo,! –

Cuestiones relacionadas