Estou usando o prompt do Cygwin bash e, para comandos longos, o texto será contornado na mesma linha, em vez de ir para a próxima linha, apesar de definir meu PS1 simplesmente como '$'.
Aqui está uma captura de tela,
Estou usando o prompt do Cygwin bash e, para comandos longos, o texto será contornado na mesma linha, em vez de ir para a próxima linha, apesar de definir meu PS1 simplesmente como '$'.
Aqui está uma captura de tela,
Respostas:
Eu já estava usando o MinTTY e remover a 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 desse problema corrigiu o problema, mesmo após o logoff e o logon novamente. Não tenho certeza se esse é sempre o caso.
-WINCH
, isso sinaliza ao processo do bash que a janela do terminal foi redimensionada. Portanto, isso deve ser feito após o redimensionamento de cada janela de terminal, eu acho.
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
Note que os caracteres não-imprimíveis no prompt de deve ser colocado em
\[
... \]
.
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 '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 ~ $
consulte http://cygwin.com/ml/cygwin/2001-07/msg00140.html para obter referência.
Para tornar essa alteração persistente, adicione a exportação PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ $ 'para o seu arquivo ~ / .bashrc.
A resposta de @ jtpereyda está certamente certa. Mas, por alguma razão, não pude deixar isso de lado e me aprofundou um pouco mais.
Expandindo esse comentário , se você redimensionar o terminal enquanto estiver no vim (ou qualquer outro aplicativo de tela cheia que controle o tty do shell), o resultado SIGWINCH
geralmente não será enviado ao shell, portanto, quando ele voltar ao controle, não sabe que o terminal foi redimensionado.
Quando você redimensiona seu terminal, ele deve chamar um ioctl(..., TIOCSWINSZ, ...)
pty no qual o vim está sendo executado. Isso resulta em um killpg(SIGWINCH)
grupo de processos no vim.
O problema é que o vim é executado em seu próprio grupo de processos distinto do shell do qual foi executado, portanto, o shell bash não recebe SIGWINCH
e não ajusta suas linhas / colunas adequadamente.
Se você deseja 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.
Algo está quebrado nas configurações do seu terminal (provavelmente).
Eu acho que você já teria tentado sair dessa sessão e reiniciar uma nova.
Enquanto você não obtém uma solução para o terminal Cygwin, experimente o MinTTY (é realmente melhor).
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.
TERM
variável de ambiente definida para? Para o console Cygwin, deveria sercygwin
.