O prompt bash do Cygwin está envolvendo linhas na mesma linha

45

Estou usando o prompt bash do Cygwin e, para comandos longos, o texto ficará na mesma linha, em vez de ir para a próxima linha, apesar de definir meu PS1 como simplesmente '$'.

Aqui está uma captura de tela,

    
por wting 14.05.2011 / 02:17

7 respostas

48

Eu já estava usando o MinTTY, e a remoção da nova linha no PS1 também não ajudou. Um conselho nesta página ajudou. Eu executei este comando bash:

kill -WINCH $$

No meu caso, a execução desta correção corrigiu o problema, mesmo depois de sair e voltar. Não sei se esse é sempre o caso.

    
por 12.03.2013 / 06:25
14

Para mim, a solução foi adicionar as seguintes linhas ao .bashrc:

PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM

Observe que os caracteres não imprimíveis no prompt devem estar entre \[ ... \] .

    
por 12.06.2014 / 07:46
8

Eu também tive o mesmo problema com o MinTTY. O problema provavelmente tem algo a ver com o prompt primário (PS1).

A solução para mim foi remover o último caractere de 'nova linha' do PS1 (logo antes do sinal '$'):

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 ~ $

veja link para referência.

Para tornar essa alteração persistente, adicione     exportar PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32 m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ $' para o seu arquivo ~ / .bashrc.

    
por 24.05.2011 / 16:24
4

Como comentado por dregad e ak2 , definindo export TERM=cygwin no meu arquivo ~/.bashrc foi o suficiente para corrigir esse problema para mim.

    
por 07.05.2015 / 15:48
3
A resposta do @jtpereyda está certamente na marca. Mas, por algum motivo, não pude deixar passar e cavar um pouco mais fundo.

Expandindo este comentário , se você redimensionar o terminal enquanto estiver no vim (ou qualquer outro aplicativo de tela cheia que tire o controle do tty do shell), o SIGWINCH resultante é frequentemente não enviado para o shell, portanto quando volta o controle, não sabe que o terminal foi redimensionado.

Quando você redimensiona seu terminal, ele deve chamar um ioctl(..., TIOCSWINSZ, ...) no master pty que o vim está executando. Isso, por sua vez, resulta em um killpg(SIGWINCH) no grupo de processos do vim.

O problema é que o vim é executado em seu próprio grupo de processos distinto do shell do qual ele foi executado, portanto, o shell bash não recebe o SIGWINCH e não ajusta suas linhas / colunas apropriadamente.

Se você quiser uma solução permanente, adicione shopt -s checkwinsize ao seu .bashrc . Isso faz com que o bash verifique o tamanho da janela ( ioctl(..., TIOCGWINSZ, ..) ) após retornar de cada comando e atualize suas linhas / colunas.

    
por 11.01.2017 / 17:03
2

Algo está quebrado nas configurações do seu terminal (provavelmente).
Eu acho que você já teria tentado sair dessa sessão e reiniciar um novo.

Enquanto você não obtiver uma solução para o terminal Cygwin, forneça MinTTY tentar (é realmente melhor).

    
por 14.05.2011 / 06:17
0

Como comentado por akatakritos , você provavelmente redimensionou seu terminal enquanto o vim estava aberto.

Quando isso acontece, basta redimensionar o terminal mais uma vez e o problema desaparece.

    
por 05.10.2016 / 15:18

Tags