J'utilise Cygwin bash Prompt et, pour les commandes longues, le texte sera enroulé autour de la même ligne au lieu de passer à la ligne suivante malgré le réglage de ma PS1 sur '$'.
Voici une capture d'écran,
J'utilisais déjà MinTTY, et supprimer la nouvelle ligne dans PS1 ne m'a pas aidé non plus. Un conseil sur cette page a été utile. J'ai exécuté cette commande bash:
kill -WINCH $$
Dans mon cas, le fait d'exécuter ceci une fois a résolu le problème, même après la déconnexion et le retour. Je ne suis pas sûr que ce soit toujours le cas.
Pour moi, la solution a été d’ajouter les lignes suivantes à .bashrc:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
Notez que les caractères non imprimables de l'invite doivent être entre \[
... \]
.
J'ai eu le même problème avec MinTTY. Le problème a probablement quelque chose à voir avec l'invite principale (PS1).
La solution pour moi était de supprimer le dernier caractère "nouvelle ligne" de PS1 (juste avant le signe "$"):
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 ~ $
voir http://cygwin.com/ml/cygwin/2001-07/msg00140.html pour référence.
Pour que cette modification soit persistante, ajoutez export PS1 = '[\ e] 0;\w\a]\n [\ e [32m]\u @\h [\ e [33m]\w [\ e [0m]\$ 'dans votre fichier ~/.bashrc.
La réponse de @ jtpereyda est certainement sur la marque. Mais pour une raison quelconque, je ne pouvais pas laisser passer ça et creuser un peu plus profondément.
En développant ce commentaire , si vous redimensionnez le terminal alors que vous êtes dans vim (ou toute autre application plein écran permettant de prendre le contrôle du tty loin du shell), La SIGWINCH
résultante est souvent et non envoyée au shell. Ainsi, lorsqu'il récupère le contrôle, il ne sait pas que le terminal a été redimensionné.
Lorsque vous redimensionnez votre terminal, il doit appeler une ioctl(..., TIOCSWINSZ, ...)
sur le serveur maître dans lequel vim est exécuté. Cela entraîne alors une killpg(SIGWINCH)
sur le groupe de processus de vim.
Le problème est que vim s'exécute dans son propre groupe de processus distinct du shell à partir duquel il a été exécuté. Le shell bash ne reçoit donc pas la variable SIGWINCH
et ne règle pas ses lignes/colonnes de manière appropriée.
Si vous souhaitez une solution de contournement permanente, ajoutez shopt -s checkwinsize
à votre .bashrc
. Cela permet à bash de vérifier la taille de la fenêtre (ioctl(..., TIOCGWINSZ, ..)
) après le retour de chaque commande et de mettre à jour ses lignes/colonnes.
Quelque chose est cassé dans les paramètres de votre terminal (probablement).
Je suppose que vous auriez déjà essayé de quitter cette session et d’en redémarrer une nouvelle.
Bien que vous n'ayez pas de solution pour le terminal Cygwin, essayez MinTTY (c'est mieux en réalité).
Comme commenté par akatakritos , vous avez probablement redimensionné votre terminal alors que vim était ouvert.
Lorsque cela se produit, il suffit de redimensionner le terminal une fois de plus et le problème disparaît.