Backspace Cygwin'de çalışmıyor


29

Cygwin'i daha yeni yükledim ve BACKSPACE işlevi orada değil, yani Backspace tuşuna bastığımda bir boşluk elde ediyorum.

Bu konuyu Google’da araştırmaya çalışıyorum ancak net bir şey bulamadım.


Cygwin'i nasıl kurduğunuz ve çalıştırdığınız ve geri alma anahtarının tam olarak nerede çalışmadığı hakkında daha fazla bilgi verebilir misiniz?
ak2

1
Sanırım bu kabuğun içinde oluyor. Control-V yazdıktan sonra geri aldığınızda ne olur? Ve sttykomutun çıktısı nedir?
Keith Thompson,

Ne tür bir klavyeniz var? ABD, İngiltere vb.
pjc50

Bunu hiç çözdün mü? Daha önce çalışmış olmasına rağmen şimdi yeni Cygwin kurulumumda görüyorum. "Boşluk" alamadığınızı belirtmek önemlidir: Karakteri silmek için imleci geri hareket ettirmek başarısız olur. Gördüğünüz alan, önceki karakterde durması gereken alandır. ^ L tuşuna basarsanız, geri almanın çalıştığını görebilirsiniz. Bu yüzden stty bir şeyleri tamir etmiyor. Neredeyse Cygwin'in bağlı olduğu CMD kabuğu, imleç hareketini yorumlayamıyor.
SomeCallMeTim

Yanıtlar:


33

Benim durumumda boşluk ~ / .vimrc oluşturulduktan sonra geri çalışma hiç çalışmadı. Değişikliğin ardından işe yaradı

Koymak:

bs = 2 olarak ayarla

içinde .vimrc

Bunu http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html adresinde bulabilirsiniz.


Teşekkürler, bu benim için işe yaradı - daha önce Vim'de geri alma anahtarım satır boyunca ilerliyordu, ancak yazmaya başlayana kadar harfleri temizlemiyordum. Şimdi 'olağan' backspace yapıyor.
Robert

4
Bu cevabın diğer bazı kullanıcılara yardımcı olması harika, ancak bu durumda asıl soru vim hakkında soru sormadığından bu sorunun çözümü değil.
Kelsin

Bu aynı zamanda imleç tuşları ile yaşadığım benzer bir sorunu da çözdü
Steve Paul

12

Benim için çalıştı: Windows komut isteminde, yazın

echo export TERM=cygwin >> C:/cygwin/home/YourUser/.bashrc

Bu ekleyecektir .bashrcve her şey güzel çalışabilir!


1
Windows'daki sorunlara yardımcı olmak için StackOverflow'ta önerildiği şekilde Windows ortam değişkeni ayarları üzerinden TERMayarlanan ortam değişkenine sahip oldum . Basitçe sıfırlayarak içinde yardım etmedi, ancak kaldırarak , Windows ayarlarını yaptım gelen girdiyi. Beni doğru yöne yönlendirdiğin için teşekkürler! msysgitcygwin.bashrcTERM
Florian Brucker

Bu, cygwin64'ün satır sonları içeren komutlarda geri alanları yok saydığı gerçeğini çözdü. Teşekkürler.
suanik

11

Yukarıdaki gibi sunulan bir soruna bir çözüm buldum .

Basitçe tekrar Cygwin kurulumu çalıştırmak ve yeniden termcapve terminfo. Arama kutusunu kullanırsanız hızlı bir şekilde bulabilirsiniz. Her biri için "Sakla" demek yerine, "Yeniden Yükle" demek için tıklayın. Aramada termgörünmek için "Eskiyi Gizle" onay kutusunu işaretlemeniz gerekebilir .

Terminfo klasörüm tamamen eksikti. Neden hiçbir fikrim yok. Umarım bu birine yardımcı olur.


1
Kaldırdığım özel bir ncurses kurulumum vardı. Çıkarma ve cygwin setup.exe aracını kullanarak yeniden yükledikten sonra bu sorun vardı. TERM değişkenlerini aksaklığımdan önce çalışanların dışında bir şeye ayarlayarak bandaid uygulamak istemiyorum. Terminfo'yu yeniden yüklemek (termcap bulamadım) benim için çalıştı. Teşekkürler!
Kelsin

serin, çalışıyor, ama neden?
Yordan Georgiev

5

C: \ cygwin \ cygwin.bat dosyanızı düzenleyin

Bunu yerleştir: SET TERM=cygwin

önce: bash --login -i


1
Bugüne kadarki en basit düzeltme. Umarım hiçbir yan etkisi yoktur.
RomanSt

1

TERM türünü ayarladığınızda, ana bilgisayara terminal penceresi içinde çizmek için hangi TERMCAP'i kullanacağını söylersiniz. Çoğu * NIX sunucusu, 'cygwin' terim tipinin ne olduğunu bilmediğinden, ekler, silme, kaydırmalar, yazı tipi değişiklikleri vb.

TERM değişkenini CYGWIN içinde telnet veya SSH'den önce bir sunucuya değiştirirseniz çok daha iyi sonuçlar alırsınız:

CYGWIN’de:

d@test01 ~
$ TERM=ansi;export TERM
$ ssh suntest1

d@suntest1's password:
Sun Microsystems Inc.  SunOS 5.8     Generic patch    October 2001

d   pts/1         test01    Fri   Oct 12  00:15   still logged in
$ echo $TERM
ansi
$_

Ana bilgisayar artık bir ANSI terminal türüne sahip olduğunuzu biliyor ve nasıl iletişim kuracağını anlatmak için ANSI TERMCAP dosyasını kullanabilir.

Bunu başaramazsanız ve geri alma dışında her şey düzgün çalışıyorsa, istediğinizi tanımak için bağlandığınız ana bilgisayardaki "getty" yi yeniden programlayabilirsiniz (ve bu en eski, en yaygın ve en evrensel olanıdır) geri alma / silme sorunlarını çözme yolu):

Sunucunuza ssh veya telnet, host ise stty komutunu çalıştırın. "BACKSPACE" tuşuna basarsanız ve geriye gitmezse, terminal muhtemelen TERM türüne göre farklı bir karakter aramaktadır. Bunların hepsini kazmak yerine, geri alma tanımını CLI'de veya .profile, .bashrc veya .bash-profil dosyasında $ HOME dizininizde istediğiniz gibi veya lezzetine bağlı olarak elle ayarlayabilirsiniz. kullanarak.

Böylece, ^ H (bu CONTROL-H) tuşuna basarsanız ve anahtarınız yedeklenir, ancak BACKSPACE tuşuna basarsanız ve stty'yi aşağıdaki gibi kullanmayı denemez:

stty erase \*<HIT YOUR BACKSPACE KEY HERE>*[ENTER]

Çoğu zaman şöyle görünecek:

stty erase \^?[ENTER]

'\', Bir sonraki karakterin yazdırılamayan bir kontrol karakteri olacağını ve onu “yorumlamak” yerine kabul edeceğini söyler.

[ENTER] 'a bastığınızda, [BACKSPACE] tuşuna basmanız ve girdiğiniz yazıyı geri almanız / silmeniz gerekir.

Bunu kabuğunuzda ayarlayabilirsiniz.

Şimdi, hala VI kullanıyorsanız, bazen çeviri çalışmaz ve aslında vi'yi ^ H yazmanız gerekir, ancak bu sorun değil.

Söyleyebilirdin:

stty k silmek [ENTER]

ve kelimenin tam anlamıyla 'k' yi silme / silme karakterine çevirirdi.

-D


0

Tamam, bu sorunu Cygwin kurulumunu manuel olarak güncellerken yaşadım. Her neyse , bu yazıyı buldum , ki bu da kurulumum için çözüme ulaştırıyor.

Eski cygwin'de bir dosya vardı /etc/terminfo/c/cygwin, fakat yeni cygwin'de dosyanın olması bekleniyordu /etc/terminfo/63/cygwin.

Bir kere "cygwin" dosyasını bu yere kopyaladığımda, bash shell backspace anahtarı sekme ve diğerleri gibi iyi çalıştı.


0

Değişen TERMdeğişkeni cygwinve ekleme SET TERM=cygwiniçin .batbenim için işe yaramadı dosyası, ama ben düzelttim. İşte ne yaptım: paket yöneticisinde yüklemesi nedeniyle yüklemem seçilen xterm: X11 terminal emulatorekledim kurulum sonrasında SET TERM=xtermüzere .bat(yukarıda önerilen gibi) dosyası, terminal başlatılan ve içinde, Seçenekler -> Terminal menü seçilen Type=xterm, daha sonra terminali yeniden başlattı. Backspace düzgün çalışmaya başladı!

Not: Eğer zaten cygwin'i yüklediyseniz - sadece installer'ı tekrar çalıştırın ve xterm paketi ekleyin.

Koşuyorum:

  • OS = Windows 8 (x64)
  • Cygwin setup.exe sürüm = 2.850 (x64)
  • Mitty sürümü = 1.2-beta1 (x86_64-pc-cygwin)


0

Benim için çalıştı: Windows komut isteminde, yazın

(echo; echo "export TERM=cygwin") >> ~/.bash_profile

Bu onu .bash_profile dosyasına ekleyecektir (benim için işe yaramayan ve bir satır sonu ile .bashrc değil)


0

2 gün geçirdikten sonra çevrimiçi bir şeyler okuyun. Bunu benim için işe yarayan buldum. Bu davanın hepsiyle uyuşup uyuşmadığını bilmiyorum. Ama Yüksel sayesinde bana bir cazibe gibi geldi

Sorun 'termInfo' dosyalarındaydı, önerdiği adımlar:

  1. problemin CygWin Terminaline yazarak terminalle ilgili olup olmadığını onaylayın, bu vermelidir (uyarıyı dikkate almayın)

    less my_session.log

UYARI: terminal tam olarak çalışmıyor

  1. CygWin Terminalinde aşağıdaki kodu yazarak hangi yol veya dizinin ilişkili olduğu 'TermCap' bilgisini alın.

    infocmp -C

ya almalısın

infocmp: terminfo dosyasını açamadı / usr / share / terminfo / 63 / cygwin

Veya 'infocmp ile yeniden oluşturulmuş ...' gibi bir metinle başlayan bir şey de alabilirsiniz.

  1. Dosyaların kaydedildiği yol hakkında ek bilgi almak amacıyla tanılamayı çalıştırmak için aşağıdaki kodu CygWin Terminalinde çalıştırın

    cygcheck -s

aşağıdaki metne benzer şekilde cevap vermeli

Cygwin Konfigürasyon Teşhisi

...

C: / cygwin / sistem ikili, noacl

C: / cygwin / bin / usr / bin sistem ikili, noacl

C: / cygwin / lib / usr / lib sistem ikili, noacl

C: \ cygwin \ etc \ terminfo / usr / share / terminfo sistem ikili, noacl

cygdrive öneki / cygdrive kullanıcı ikili, noacl, posix = 0, otomatik

...

  1. şuna benzer bir satır ara

C: \ cygwin \ etc \ terminfo / usr / share / terminfo sistem ikili, noacl

çıktıdan 3. adımdan geçtiniz. şimdi tüm iç mevcut dosya ve klasörleri kopyalamak / usr / share / terminfo için klasör C: \ cygwin \ vb \ terminfo'ya - NOT: Bu klasör tesisata bağlı sizinkinden farklı olabilir


0

Lütfen aşağıdaki resmi takip edin görüntü tanımını buraya girin

  1. Cygwin penceresinde herhangi bir yere sağ tıklayın
  2. tık options
  3. Click Keyssekmesini
  4. kene Backarrow sends ^H
  5. Uygula tuşuna basın.

Bu benim için çalışan tek şey, özellikle de eğer bir sunucuya SSH yapmak zorundaysanız (tüm düzeltmeler işe yaramazsa) stty erase ^?.bashrc'ime eklerdim ama bu sadece zamanın% 80'ini düzeltti.


-1

Senin problemini hiç yaşamadım. Terminal Emulator Mintty'yi yüklemeyi deneyin ( http://code.google.com/p/mintty/ ).

Cygwin kurucusu aracılığıyla edinilebilir. Cygwin için en iyi terminal.


Bu yardımcı olmadı.
user620189

Hatta aynı konuda sıkışıp kaldım ve minty'den de geri alma işlevi çalışmıyor. Hem minty terminalinde hem de cygwin terminalinde geri durduğumda yer kazanıyorum
Rachel

@Rachel Bunu hiç çözdün mü? Aynı sorunu yeni bir Cygwin kurulumunda da görüyorum. :(
SomeCallMeTim 19:12

@ComeCallMeTim: Bu sorunu Minty kullanarak çözebildim, cygwin zaman zaman çok tuhaf davranıyor.
Rachel

@Rachel Teşekkürler, sorunumun Cygwin kurulumunun bazı önemli dosyaları (/ usr / lib / terminfo gibi) özlemiş olduğunu fark etmeme rağmen, teşekkürler. Neden kaybolduklarını bilmiyorum; bu konuyla başkasını buldu, kuruluma girdi ve terminfo ve termcap’a yeniden yüklemelerini söyledi ve her şey çalıştı.
SomeCallMeTim
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.