J'utilise l'invite Cygwin bash 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 «PS» de ma PS1.
Voici une capture d'écran,
J'utilise l'invite Cygwin bash 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 «PS» de ma PS1.
Voici une capture d'écran,
Réponses:
J'utilisais déjà MinTTY, et la suppression de 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.
-WINCH
, cela indique au processus Bash que la fenêtre du terminal a été redimensionnée. Donc, cela devrait être fait après chaque redimensionnement de la fenêtre du terminal, je suppose.
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 dans l'invite doivent être enfermés dans
\[
... \]
.
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 intéressante . 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 prenant le contrôle du tty loin du shell), le résultat SIGWINCH
est souvent non envoyé au shell, donc quand il reprend le contrôle, sais pas que le terminal a été redimensionné.
Lorsque vous redimensionnez votre terminal, il doit appeler un ioctl(..., TIOCSWINSZ, ...)
pty principal sur lequel vim s'exécute. Cela aboutit à un killpg(SIGWINCH)
groupe de processus sur 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 pas le SIGWINCH
et ne modifie pas ses lignes / colonnes de manière appropriée.
Si vous souhaitez une solution de contournement permanente, ajoutez-la 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 (en réalité, c'est mieux).
Comme l'a commenté 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.
TERM
la variable d'environnement? Pour la console Cygwin, cela devrait êtrecygwin
.