Enter tuşuna basmak yeni satır yerine ^ M


94

Örneğin, tail -fbir dosya veya readkullanıcı girişi yapıyorsam , sonlandırmak veya stdout'a yeni bir satır eklemek yerine terminalde <Enter>üretilecektir . iyi çalışıyor.^Mread^J

sshEğer önemliyse ubuntu sistemine giriyorum . Bu bana hem zsh hem de bash olur. Oynadığım çözümlerden biri, zsh'ye yeniden ^Mgönderme ^Jyapmak, ancak bu kök problemini çözmeyecek gibi görünüyor. Buna neyin neden olduğunu bilen var mı?

Düzenleme: Bazı soruları yanıtlamak için sshOSX’ten Ubuntu’ya giriyorum . İTerm ve zsh kullanıyorum. Ayrıca Ubuntu makinesinde tmux kullandığımı söylemeyi unuttum.

Düzenleme 2: Bir soruyu cevaplamadı. Ben yazarken Ctrl-V Enterben almak ^M(OSX ve Ubuntu üzerine ikisi).

Düzenleme 3: OSX ve Ubuntu'da echo $TERMüretiyor screen-256color.


Ubuntu'ya ssh yapmak için ne kullanıyorsunuz?
Tasos

Evet --- ve hangi işletim sisteminden? Bir TERM problemi gibi görünüyor.
Rmano

Ctrl + V yazıp Enter tuşuna basarsanız ne alırsınız ? Çok iyi komutları çalıştırabildiğiniz için, bu kesinlikle kabuğun sorunu değildir.
Adaephon

2
OSX kutumun (istemsiz) yeniden başlatılması sorunu çözmüş gibi görünüyor ... Sanırım onlardan biri. Umarım iyiye gitmiştir.
benekastah

Ayrıca benim için çalışan tek şey, NVRAM'ın izni de dahil olmak üzere yeniden başlatmaktı. Basın ve ayrıca OSX NVRAM'i sıfırlamak için açılış sesini duymak hemen sonra Komut Opsiyon-PR tuşlarını tutun
jonbros

Yanıtlar:


192

Başka birinin bu problemi olması durumunda, büyük olasılıkla TERM probleminden ziyade stty terminal hattı ayarında bir problemdir. Bu tekrar başınıza gelirse, koşmayı deneyin stty saneve düzeltip düzeltmeyeceğini bize bildirin.


22
Bu, OS X üzerinde de çalışır.
Patrick Berkeley

1
Benim için çalıştı (nane 17.1).
Deleet,

1
Ubuntu Biyonik Çalışması
protoEvangelion

Mojave üzerinde iTerm2'de iyi çalışıyor
Rakib


31

stty -aTerminal ayarlarınızı görüntülemek için koşmayı deneyin . Şüphem, icrnlayarınızın ayarlanmadığı ve -icrnlnormal ayar ayarının açık olması yerine (eksi işareti kapalı olduğu anlamına gelir) olarak gösterileceğidir. Giriş yaptığımda terminalim normal olarak nasıl kuruluyor:

$ stty -a
speed 38400 baud; rows 45; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Ve satır sonlarında bir sorunum yok: ya return (^ M) ya da enter (^ J) giriş satırlarını sonlandıracak. Ancak kapatırsam icrnl, o zaman bir programla konuştuğumda ve aniden enter tuşuna bastığımda ^ M kodları aniden beliriyor:

$ stty -icrnl
$ read line
Line of text^M^M^M^M
$ stty -a
speed 38400 baud; rows 45; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Kod icrnl, “satır başlarını yeni satırlara çevir” anlamına gelir ve Unix gerçekten ^ J istediğinde, çalışan programdan ^ M yazabileceğinizi gizler. Eski klavyeler, ayrı bir Dönüş ve Giriş tuşuna sahipti (Geri Dönüş genellikle bir formla size gönderilen ve Enter'u gönderdi), ancak bugün genellikle yalnızca bir satır sonlandırma anahtarına sahibiz ve bu nedenle bu terminal ayarı iki anlamın birleştirilmesine yardımcı olur.

Ekle stty icrnladresinden Müşteri komutu .profileveya .bashrcbunun gerçekten sorun ayarı bulmak eğer.

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.