Mac OS X terminal.app bazen yeni çizgileri farklı şekilde yorumlamaya başlar! Bu düzeltilebilir mi?


1

Birkaç kez şimdi, Mac OS X Terminal'in tuhaf bir durumda kalmasına neden oldum, böylece yeni satırlar normalde olduğu gibi yorumlanmıyor. Sanki satır besleme kısmını yapıyorlar, ancak taşıma dönüşü değil. Örneğin, normalde böyle bir şey görebilirim:

% git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#

Ancak Terminal bu garip modda sona erdiğinde, bunun yerine şunu alıyorum:

% git status
# On branch master
                  # Untracked files:
                                    #   (use "git add <file>..." to include in what will be committed)
                                                                                                      #

Bunu düzeltmek için yeni bir Terminal penceresi oluşturabilirim, ancak bu biraz can sıkıcı. Scrollback buffer'da bir şeye ihtiyacım olursa, mümkünse aynı pencereyi aktif tutmak istiyorum. Böyle yanlış gittiğinde işleri düzeltmek için yapabileceğim bir şey var mı?

(Alakalı mı bilmiyorum ama normalde emacs'ı bırakırken bunu alıyorum. Her zaman ve tekrar, yanlış bir şey yapıyorum ve kaza yerine başka bir komut seçiyorum. C-x C-c. Neler olup bittiğini anlamadan önce parmaklarım iptal eder, bu yüzden hangi komutun olabileceğini bilmiyorum, ama bir kez emacs gittiğinde, terminal bu komik yeni moddadır.)

Yanıtlar:


3

Bu sorun tekrar ortaya çıktığında, terminalde aşağıdaki komutu verin:

reset

Bu, terminalinizi varsayılanlara sıfırlamalı ve umarım sorununuzu çözmelidir.


2

Erken terminaller (ve yazıcılar) bir LF (ASCII 10) karakteri aldığında, imleci (yazdırma kafası) yatay olarak hareket ettirmeden bir sonraki satıra ilerletirlerdi. Dolayısıyla, sadece LF'lerle ayrılan bir karakter / kelime dizisi, bir merdiven durumuna benzeyen bir şekil oluşturur. Gördüğün budur.

Bir program bir sonraki satırın başına geçmek istediğinde, CR (ASCII 13) ve LF'yi terminale ayarlarlar. CR, imleci mevcut satırın başına taşır ve LF bir sonraki satıra ilerler.

Unix sistemlerdeki tty sürücüsü, genellikle bir LF çıkışını bir CR ve LF kombinasyonuna dönüştüren etkinleştirilmiş isteğe bağlı bir çıkış sonrası işleme sahiptir.

Görmekte olduğunuz sorun, terminal emülatörünüzün kullandığı tty'nin işlem sonrası çıktının devre dışı bırakılmış olmasıdır. Bu komutu kullanarak çıkış sonrası işleme ve LF → CR LF dönüşümünü yeniden yapılandırabilirsiniz:

stty opost onlcr

Bu tip çıktı işleme genellikle “tam ekran” terminal tabanlı programlarda imleç üzerinde daha iyi kontrol sahibi olmaları için devre dışı bırakılır. Bu nedenle, eğer böyle bir program tty ayarlarını geri yükleyemeyecek şekilde çökerse (veya öldürülürse), “merdiven basamağı modunda” sona erersiniz. Bu tür bir çarpışmadan sonra etkilenebilecek başka tty ayarları olduğundan, efektleri temizlemek için biraz daha kapsamlı bir şeye ihtiyacınız olabilir. Geçerli tty'nin ayarlarını aşağıdaki komutla makul varsayılanlara sıfırlayabilirsiniz:

stty sane

reset emir neyin çoğunu yapar stty sane terminal emülatörüne çeşitli sıfırlama / başlatma kontrol dizileri göndermenin yanı sıra bunu yapar.

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.