Estoy usando Cygwin bash prompt, y para comandos largos, el texto se ajustará a la misma línea en lugar de ir a la siguiente línea a pesar de configurar mi PS1 como simplemente '$'.
Aquí hay una captura de pantalla,
Estoy usando Cygwin bash prompt, y para comandos largos, el texto se ajustará a la misma línea en lugar de ir a la siguiente línea a pesar de configurar mi PS1 como simplemente '$'.
Aquí hay una captura de pantalla,
Respuestas:
Ya estaba usando MinTTY, y eliminar la nueva línea en PS1 tampoco ayudó. Un consejo en esta página ayudo Ejecuté este comando de bash:
kill -WINCH $$
En mi caso, ejecutar esto una vez solucionado el problema, incluso después de cerrar la sesión y volver a iniciarla. No estoy seguro de que siempre sea así.
-WINCH
, esto indica al proceso de bash que la ventana del terminal fue redimensionada. Así que esto debería hacerse después del tamaño de cada ventana de terminal, supongo.
Para mí, la solución fue agregar las siguientes líneas a .bashrc:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
Tenga en cuenta que los caracteres no imprimibles en la solicitud deben incluirse en \[
... \]
.
También tuve el mismo problema con MinTTY. El problema probablemente tenga algo que ver con el indicador primario (PS1).
La solución para mí fue eliminar el último carácter de 'nueva línea' de PS1 (justo antes del signo '$'):
user@host ~
$ echo $PS1
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
user@host ~
$ export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '
user@host ~ $
ver http://cygwin.com/ml/cygwin/2001-07/msg00140.html para referencia.
Para hacer este cambio persistente, agregue export PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ $' a su archivo ~ / .bashrc.
@ jtpereyda's responder Está ciertamente en la marca. Pero por alguna razón no pude dejar pasar esto, y cavé un poco más profundo.
Ampliando en este comentario , si cambia el tamaño del terminal mientras está en vim (o cualquier otra aplicación de pantalla completa que tome el control del tty fuera del shell), el SIGWINCH
es seguido no enviado al shell, por lo que cuando recupera el control, no sabe que el terminal ha sido redimensionado.
Cuando cambie el tamaño de su terminal debería llamar ioctl(..., TIOCSWINSZ, ...)
en la parte maestra en la que se está ejecutando vim. Esto a su vez da como resultado una killpg(SIGWINCH)
en el grupo de proceso de vim.
El problema es que vim se ejecuta en su propio grupo de procesos distinto del shell desde el que se ejecutó, por lo que el shell bash no recibe el SIGWINCH
y no ajusta sus líneas / columnas adecuadamente.
Si desea una solución permanente, agregue shopt -s checkwinsize
para usted .bashrc
. Eso hace que bash verifique el tamaño de la ventana ( ioctl(..., TIOCGWINSZ, ..)
) después de regresar de cada comando, y actualizar sus líneas / columnas.
Algo está roto en la configuración de su terminal (probablemente).
Supongo que ya habrías intentado salir de esa sesión y reiniciar una nueva.
Si bien no obtiene una solución para el terminal de Cygwin, dé MinTTY un intento (en realidad es mejor).
Según lo comentado por Akatakritos , probablemente redimensionaste tu terminal mientras vim estaba abierto.
Cuando esto sucede, simplemente redimensiona el terminal una vez más y el problema desaparece.
TERM
variable de entorno establecida en? Para la consola Cygwin, debe sercygwin
.