Cygwin bash istemi aynı satırdaki satırları kaydırıyor


56

Cygwin bash komutunu kullanıyorum ve uzun komutlar için metin PS1'imi '$' olarak ayarlamasına rağmen bir sonraki satıra gitmenin tersine aynı satırda kayıyor.

İşte bir ekran görüntüsü,
ekran görüntüsü


11
TERMOrtam değişkeni neye ayarlandı? Cygwin konsolu için olması gerektiği gibi cygwin.
ak2

1
@ ak2 bu sorunu benim için düzeltti, teşekkür ederim. Mintty'den Cygwin.
JoshuaD

Yanıtlar:


58

MinTTY'yi zaten kullanıyordum ve yeni çizgiyi PS1'de kaldırmak da yardımcı olmadı. Bu sayfadaki tavsiyelerden biri yardımcı oldu. Bu bash komutunu çalıştırdım:

kill -WINCH $$

Benim durumumda, bunu bir kez çalıştırmak, oturumu kapatıp tekrar açtıktan sonra bile sorunu çözdü. Bunun her zaman böyle olup olmadığından emin değilim.


1
Buna göre -WINCH, bu terminal penceresinin yeniden boyutlandırıldığı bash işlemine işaret eder. Sanırım bu, her terminal penceresi yeniden boyutlandırıldıktan sonra yapılmalı.
ivan_pozdeev

7
@ivan_pozdeev, sadece şunu yapmak zorundayım, bunu yapmak için vim açıkken yeniden boyutlandırmanız yeterlidir: vim sinyali alır ve yeni boyutta yeniden çizer, ancak ana işlemine geçilmez ve bu nedenle bash hala boyutunun boyutunu düşünür. Ekran vim açıldığında her neydi.
akatakritos

bu da benim için çalıştı
konqui 16:15 16:15

Bu benim için de işe yaradı, teşekkürler @jtpereyda!
Jason R. Mick,

Teşekkürler, bu kesinlikle benim için sorun oldu - vim iken terminali yeniden boyutlandırmak. Bu hatayı düzeltmek için yeterince kolay olması gerektiğini hissediyorum ama bilmiyorum.
Iguananaut

22

Benim için çözüm, .bashrc dosyasına şu satırları eklemek oldu:

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

Bilgi isteminde yazdırılamayan karakterlerin \[... içine dahil edilmesi gerektiğini unutmayın \].


6
Orijinal soru altındaki bir yorumda @ ak2 tarafından belirtildiği gibi, ihracat TERM = cygwin sorunu çözmek için yeterlidir.
dregad

1
benim durumumda yeterli değildi. PS1 \ [... \] içine alınmamış kaçış dizileri içeriyorsa, sarma sorunu devam eder. TERM env değişkenini ayarlamak sizin için yeterli olabilir, ama şüpheliyim.
digory doo

Benim için bu, ikinci satırın ilk satırın üzerine yazması problemini düzeltir, ancak tam 80 genişlik terminali kullanmazsam, imleç konumu ve metin ofseti hala risklidir (cygwin64, mintty 2.3.7 ile)
MM

\ [... \] eklemek benim için sorun çözdü.
Trismegistos

8

MinTTY ile de aynı sorunu yaşadım. Problemin birincil istemi (PS1) ile ilgisi olabilir.

Benim için özüm, son 'yeni satır' karakterini PS1'den kaldırmaktı ('$' işaretinden hemen önce):

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

referans için http://cygwin.com/ml/cygwin/2001-07/msg00140.html adresine bakın .

Bu değişikliği kalıcı hale getirmek için dışa aktarma PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ ekleyin. $ '~ / .bashrc dosyasına.


1
Benim için işe yaramadı ...
HDave

Bu benim için işe yaradı, ancak son yeni çizgiyi kaldırmanın yanı sıra Cygwin terminalini de yeniden başlatmak zorunda kaldım.
christosc


5

@ jtpereyda'nın cevabı kesinlikle işaretinde. Ama nedense bunun gitmesine izin veremedim ve biraz daha derine indik.

Ayrıntılı şekilde Bu yoruma vim terminal süre (veya kabuk uzak tty'nin kontrolünü ele alır başka tam ekran uygulaması) yeniden boyutlandırmak eğer, sonuçta elde, SIGWINCHgenellikle edilir değil geri alır o doesn kontrol böylece zaman, kabuğun gönderilen terminalin yeniden boyutlandırıldığını bilmiyorum.

Terminalinizi yeniden boyutlandırdığınızda ioctl(..., TIOCSWINSZ, ...)vimin çalıştığı ana pty'yi çağırması gerekir . Bu da bir killpg(SIGWINCH)vim'in işlem grubuna yol açar .

Sorun vim'in kendi işlem grubunda, çalıştırıldığı kabuktan farklı olarak çalışmasıdır, bu yüzden bash kabuğu almaz SIGWINCHve satırlarını / sütunlarını uygun şekilde ayarlamaz.

Kalıcı bir geçici çözüm istiyorsanız, shopt -s checkwinsizekendinize ekleyin .bashrc. Bu bash ioctl(..., TIOCGWINSZ, ..)her komuttan döndükten sonra pencere boyutunu ( ) kontrol eder ve satırlarını / sütunlarını günceller.


Vim'in soruyla ne ilgisi var? OP vim kullanmıyor.
DavidPostill

1
Bağlantıyı daha açık hale getirdiğini düşündüğüm farklı bir soruya atıfta bulunmak istedim, ancak kısaca OP'nin sorununun olası bir nedeni vim gibi tam bir terminal uygulamasını açmak, terminali yeniden boyutlandırmak ve sonra çıkmak. Açıkladığım gibi, SIGWINCH kabuk tarafından görülmez, bu nedenle vimden çıktığınızda hala terminalin önceki boyut olduğunu düşünür ve çeşitli hat sarma sorunlarına neden olur.
Iguananaut


2

Terminal ayarlarınızda bir şeyler bozuk (muhtemelen).
Sanırım o oturumdan çıkmayı ve yeni bir oturum başlatmayı çoktan denediniz.

Cygwin terminali için bir çözüm bulamazsanız, MinTTY'yi deneyin (aslında daha iyi).


1
Bu sorunu Cygwin'de birden fazla makinede görüyorum, ancak MinTTY daha iyi görünüyor ve sarma problemini çözüyor. Bir taşla iki kuş!
saat

MinTTY'nin 2011 sonundan beri Cygwin için varsayılan terminal olduğunu unutmayın .
Hugh W

1

Akatakritos tarafından yorumlandığı gibi vim açıkken muhtemelen terminalinizi yeniden boyutlandırdınız.

Bu olduğunda, sadece bir kez daha terminali yeniden boyutlandırmak ve sorun gider.


Teşekkür! Her ne kadar cygwin kullanmıyor olsam da, bu bash için benim için "aynı hatta sarma" problemini çözdü - sadece terminal penceresini açmak, sonra tekrar en üst düzeye çıkarmak ve sorun yok oldu :)
Nick Humphrey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.