Uzak sunucuda vim / nano'da SSH gargara karakterleri


18

... ve beni delirtiyor.

Temel olarak (bu son birkaç aydır gerçekleşiyor), 5.5, 5.7 ve 6'yı çalıştıran birkaç farklı CentOS sunucusuna (bir Linode, başka bir VPS ve kabuk erişimine sahip olduğum paylaşılan bir ana bilgisayar) giriş yapıyorum. Terminal kullanarak OS X Lion çalıştıran Mac.

Temelde:

$ ssh username@example.com

[remote-host] $ nano somefile.txt

Ben imleci hareket veya sonra, silme yeniden yazmaya başlamak için ok tuşlarını kullanın eğer, dosyayı düzenlemeye başlamak sonra, imleç biraz etrafında atlar ve ben dosyayı kaydetmektedir ve yeniden açın, eğer imleç aşikardır oldu aslında, görünürde hiçbir neden olmadan bir çizginin her yerine atlamak.

Sonunda "Bu bir neof metni" gibi şeyler alıyorum. Yazarken (imleç çılgın editörüne) "Bu bir metin satırıdır."

Konfigürasyon dosyalarını düzenlemek söz konusu olduğunda büyük bir sorun, çünkü genellikle bir satırı düzenlemem, kaydetmem ve kapatmam, sonra sadece hattın doğru olduğundan emin olmak için tekrar açmam gerekiyor ... sonra başka bir satırı düzenle ... ve oldukça can sıkıcı oluyor .

Linode Lish Shell Vim ve Nano oluşturma sorunları buldum : görünmeyen çizgiler / imleç konumları yanlış , ama bunun özellikle ilgisini ifade ettiğinden, bunun çok ilgili olup olmadığını bilmiyorum.


1
Hey @geerlingguy, bu soruya yıllar önce adınızın bana bir şey ifade etmediği bir cevap gönderdim, ancak şimdi çalışmanızı düzenli olarak kullanıyorum. Tüm değerli katkılarınız için teşekkürler!
dbenton

1
@dbenton - Sana yardım ediyorum, sen de bana yardım ediyorsun, mutlu bir topluluğuz :)
geerlingguy

Yanıtlar:


14

[ Güncelleme: Mac OS X Mountain Lion 10.8'den itibaren Terminal, bu sorunu ortadan kaldırarak Backtab kaçış dizisini destekliyor.]

Bu sunuculardaki nano sürümleri bazen imleci bir karakter sola hareket ettirirken bir Backtab (ESC [Z) dizisi gönderir, ancak Terminal bu diziyi desteklemez, bu nedenle nano imlecin hareket etmediğinde hareket ettiğini düşünür. t ve imlecin mevcut konumu hakkındaki fikri terminal ile senkronize değildir.

Nedenini anlayamıyorum, nano sola hareket ederken bir Backtab gönderir ve imleç sekme durağının sağındaki bir karakterdir. Benzer şekilde, IIRC, sağa hareket ederken bir Sekme (Kontrol-I) gönderir ve imleç sekme durağının solundaki bir karakterdir. Neden hep aynı karakter dizileri kullanarak sola / sağa hareket etmek yerine sekme durakları etrafında bunu bilmiyorum. Mac OS X Lion 10.7 ile birlikte gelen nano sürümü bunu yapmaz.

Nano bunu sadece terminfo cbtyeteneğin desteklendiğini söylediğinde yapar . Terminal için varsayılan terminfo xterm-256color, bu özelliği bildirir ve Backtab sekansı ile eşleştirir. Çözüm, TERMortam değişkenini bu özelliği bildirmeyen bir şeye ayarlamaktır . Bunu yerel makinede çağırmadan önce sshveya uzak ana bilgisayardaki kabuk başlatma dosyasında yapabilirsiniz. Bunu ayarlanması için xterm-colortavsiye edilmez olsa (256 renk, M.Ö., alternatif ekran içeriği koruma örneğin) diğer önemli davranışlar devre dışı bırakır gibi, bir çimdik yapacak. (Daha ağır bir yaklaşım, uzak ana bilgisayardaki xterm-256color(veya xterm) terminfo dosyanızı kaldırmak için özelleştirmektir cbt.)

Uzak ana makineyi özelleştirme (bir şekilde veya başka şekilde) önerilir, bu nedenle özelleştirmeler yerel olarak veya diğer uzak ana makineler için geçerli değildir, ancak en basit çözüm, aşağıdakiler xterm-coloryerine kullanılacak bir Terminal tercih ayarını değiştirmektir xterm-256color:

Terminal> Tercihler> Ayarlar> [profil]> Gelişmiş> Terminali şu şekilde bildir:

Varolan bir ayarlar profilini çoğaltmanızı, özelleştirmenizi ve yalnızca bu uzak ana bilgisayarlara bağlanırken kullanmanızı öneririz.


Xterm-color ayarı kesinlikle işe yarıyor - terminfo dosyamı uzak ana bilgisayarda nasıl özelleştireceğiniz hakkında ayrıntılı bilgi verebilir misiniz? Bir bağlantı yapardı, ama ben muhtemelen her zaman bu yazıya geri geliyor olacak ve daha sonra bu ipucunu hatırlamak için :)
geerlingguy

1
@geerlingguy Varolan bir terminfo tanımını değiştirme . Kaynak dosyadaki cbt=\E[Zgirişi kaldırın .ti.
TachyonVortex

Bu bana yardımcı oldu, ben xterm-256color için xterm seçeneğini ayarlamak ve şimdi daha önce yaptığım gibi seçebilirsiniz, kopyalamak, vb ... (Bu seçeneği nasıl veya kimin değiştirdiğini bilmiyorum). Teşekkürler!
spacebiker

8

Aynı sorunu yaşıyordum. Uzak sunucuda bir ortam değişkeni diğer çözümlerin yanı sıra önerilen bu iş parçacığı buldum :

export TERM=xterm-color

Bunu ~ / .bash_profile dosyasına eklemek sorunu benim için çözdü. Bu çözüm basittir ve yalnızca belirli bir ana bilgisayardaki belirli bir kullanıcıyı etkileme avantajına sahiptir.


2

MobaXTerm programında da aynı sorunu yaşadım. Sorunun nedeni PuTTY kullanırken Nano'da numpad'i etkinleştirmek için kullandığım -K tuşuydu. MobaXTerm'de bulduğum gibi -K gerekli değildir (varsayılan olarak numpad çalışır) ve onsuz ok tuşları düzgün çalışır ve rastgele çöp eklemez.


1

Centos'un konuk işletim sistemi olarak çalıştığı OSX 10.7.4

OSX terminal tercihleri ​​içinde, ayarlar, gelişmiş

Declare terminal as:xterm-color
Strict VT-100 keypad behaviour - TICKED!

Başka sorun yok :)


“VT-100 tuş takımı davranışı” tercihinin bu soru ve cevap ile tamamen ilgisiz olduğunu ve sonuç üzerinde hiçbir etkisi olmadığını unutmayın.
Chris Page

1

MobaXterm kullanıcıları için. -K kullanmıyorsanız ve hala sorun yaşıyorsanız. Aşağıdaki satırların / etc / nanorc dosyanızda yorumlandığından emin olun.

# set rebinddelete

# set rebindkeypad


0

Muhtemelen sorun, evet, hem yerel makineniz hem de sunucunuz nano'lu unix sistemlerinde çalışıyor, ancak bu nano sürümleri farklı olabilir.

export TERM=xterm-color

-1

Elde ettiğiniz şey "Bu bir neof metnidir" ve yazdığınız şey "Bu bir metin satırı" ise (raporunuzun doğru olduğunu varsaymalıyım), Mac'te ne olursa olsun bir lapa lapa "kontrol" anahtarınız varsa (komut ? elma?). Nano "etrafında atlamak" için kontrol + tuşlarını kullandığından ve yazdığından daha az karaktere sahip olduğunuzdan, a) kaybolan karakterlere sahibiz b) a) b) olur) mantıksal olan hiçbir şey görünmeyen kontrol dizileri.

Bazı iğrenç kısayol tuşunuz / makro / whatnot programınız da olabilir. Bunun sunucu kullanıcısına değil süper kullanıcıya ait olduğundan şüpheleniyorum ama işaretlemenin belki birinin gerçekçi, SSH'ye bağlı bir cevabı olduğunu düşünüyorum.


Bir satırda ileri geri hareket etmek için ok tuşlarını kullandığımda, daha çok yazdığımdan daha sık oluyor. Ama oldukça rastgele görünüyor. Çalışıp çalışmadığını görmek için Chris'in önerisini çabucak deneyeceğim, ancak cevap verdiğiniz için teşekkürler!
geerlingguy
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.