Sto usando il prompt di Basg di Cygwin e per lunghi comandi il testo andrà a capo sulla stessa riga invece di passare alla riga successiva nonostante abbia impostato la mia PS1 semplicemente su "$".
Ecco uno screenshot,
Sto usando il prompt di Basg di Cygwin e per lunghi comandi il testo andrà a capo sulla stessa riga invece di passare alla riga successiva nonostante abbia impostato la mia PS1 semplicemente su "$".
Ecco uno screenshot,
Risposte:
Stavo già usando MinTTY e nemmeno rimuovere la nuova riga in PS1. Un consiglio in questa pagina ha aiutato. Ho eseguito questo comando bash:
kill -WINCH $$
Nel mio caso, eseguirlo una volta risolto il problema, anche dopo aver effettuato il logout e il login. Non sono sicuro che sia sempre così.
-WINCH
, questo segnala al processo bash che la finestra del terminale è stata ridimensionata. Quindi, questo dovrebbe essere fatto dopo il ridimensionamento di ogni finestra del terminale, immagino.
Per me, la soluzione era aggiungere le seguenti righe a .bashrc:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
Nota che i caratteri non stampabili nel prompt devono essere racchiusi in
\[
... \]
.
Ho avuto lo stesso problema anche con MinTTY. Probabilmente il problema ha a che fare con il prompt primario (PS1).
La soluzione per me era rimuovere l'ultimo carattere "nuova riga" da PS1 (subito prima del segno "$"):
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 ~ $
vedi http://cygwin.com/ml/cygwin/2001-07/msg00140.html per riferimento.
Per rendere persistente questa modifica, aggiungi export PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ $ 'al tuo file ~ / .bashrc.
La risposta di @ jtpereyda è sicuramente nel segno. Ma per qualche motivo non potevo lasciarlo andare e ho scavato un po 'più a fondo.
Espandendo questo commento , se si ridimensiona il terminale mentre è in vim (o qualsiasi altra applicazione a schermo intero che prende il controllo del tty dalla shell), il risultato SIGWINCH
spesso non viene inviato alla shell, quindi quando torna indietro non lo fa sapere che il terminale è stato ridimensionato.
Quando ridimensionate il vostro terminale, dovrebbe chiamare un ioctl(..., TIOCSWINSZ, ...)
master pty in cui vim è in esecuzione. Questo a sua volta si traduce in un killpg(SIGWINCH)
gruppo di processi on vim.
Il problema è che vim viene eseguito nel proprio gruppo di processi distinto dalla shell da cui è stata eseguita, quindi la shell bash non riceve la SIGWINCH
e non regola le sue righe / colonne in modo appropriato.
Se desideri una soluzione temporanea permanente, aggiungi shopt -s checkwinsize
a .bashrc
. Ciò fa bash controllare la dimensione della finestra ( ioctl(..., TIOCGWINSZ, ..)
) dopo essere tornato da ciascun comando e aggiornarne le righe / colonne.
Qualcosa non funziona nelle impostazioni del tuo terminale (probabilmente).
Immagino che avresti già provato ad uscire da quella sessione e a riavviarne una nuova.
Anche se non ottieni una soluzione per il terminale Cygwin, prova MinTTY (in realtà è migliore).
Come commentato da Akatakritos , probabilmente hai ridimensionato il tuo terminale mentre vim era aperto.
Quando ciò accade, ridimensiona il terminale ancora una volta e il problema scompare.
TERM
variabile di ambiente impostata su? Per la console Cygwin, dovrebbe esserecygwin
.