Windows 10 linux bash kabuk ctrl + alanı Emacs'ta işaret koymaz


12

Windows 10'da Linux Bash için Alt Sistem kurdum. Ancak Emacs Ctrl+ ' da kısayol ile ilgili bir sorunum var space.

Ne denedim ve yardımcı olmadı:

  • Windows konsolu için özellikler menüsünde "Ctrl tuş kısayollarını etkinleştir" seçeneğinin işaretini kaldırmayı denedim

  • Başarısız olarak farklı terminal ConEmu kullanmaya çalıştım.

Bu bir şekilde ctrl + boşluk ile benzer sorunları olan ubuntu ile ilgili olup olmadığını merak ediyorum ve windows linux bash ubuntu depoları kullanıyor.

Yanıtlar:


3

Bu yazının yazıldığı sırada Ctrl-Space'in Bash terminalinden geçmesi açısından hiçbir çözüm yoktur (1 Eylül 2016) - ancak birçok kullanıcı için yeterli olabilecek bir geçici çözüm vardır: PuTTY'yi kullanarak Ctrl-Space'in taşınmasını zorlayan SSH. (Tty modunda, aynı karakter kodu oldukları için Ctrl-Space'i Ctrl- @ 'den ayırt etmek imkansızdır, ancak varsayılan Emacs set-mark-commandbu şekilde işlemek için ayarlandığı için bu bir sorun olmamalıdır .)

  1. OpenSSH sunucusunu ile yükleyin sudo apt-get install openssh-server. Önceden yüklenmişse, sudo apt-get remove openssh-serveryapılandırma dosyalarını sıfırlamak için kaldırın ( ) ve ardından yeniden yükleyin.
  2. Düzen / etc / ssh / sshd_config dosyasını (sudo ile), aşağıdaki gibi:

    • Önerilmeyen bir hat ayarı varsa PermitRootLogin, yorum yapın. Bir satır ekleyin PermitRootLogin no.
    • AllowUsers USERNAMEUSERNAME yerine Linux kullanıcı adınızı kullanarak bir satır ekleyin (bunun ne olduğunu bilmiyorsanız whoami, Bash isteminde komutu çalıştırın ).
    • İdeal olarak, SSH anahtarlarını kullanarak şifresiz kimlik doğrulaması ayarlamanız gerekir, ancak bunun nasıl yapılacağı bu sorunun kapsamı dışındadır (birçok kılavuz vardır; Web'de "şifresiz ssh-keygen" için arama yapın). Bu süre zarfında, satırı ekleyin veya işaretini kaldırın PasswordAuthentication yes.
    • Set UsePrivilegeSeparation no; büyük olasılıkla dosyada bir satır bulacaksınız UsePrivilegeSeparation yes; Sadece değiştirmek yesiçin nove kaydetme / etc / ssh / sshd_config dosyasında.

    Burada bir şeyler ters giderse, 1. adımı tekrarlayarak dosyayı geri yükleyebilirsiniz.

  3. SSH sunucusunu komutla başlatın sudo service ssh --full-restart.
  4. PuTTY'yi ( buradan indirin ) kullanarak localhost, Ana Bilgisayar Adı alanında oturum açın , diğer her şey varsayılan olarak bırakılır. Linux kullanıcı adınızı ve şifrenizi girmeniz istenecektir.
  5. Koş emacs. Ctrl-space işareti istediğiniz gibi ayarlayacaktır.

(Not edecek adımlar Yukarıdaki değil , kendileri tarafından, SSH bağlantıları kabul etmek için sistem mümkün hale diğer bilgisayarlar. Bunu yapmak için, ayrıca Gelen TCP portu 22. izin verecek şekilde Windows'un güvenlik duvarı kurallarını değiştirmek zorunda kalacak)

Başka bir cevapta "ama macun yerel bir terminal değil" dediniz. localhostBu şekilde kullanabileceğinizin farkında değilseniz veya yerel bir terminale karşı daha büyük yük nedeniyle PuTTY'yi kapattığınızdan emin değilim . İkincisi, endişelenmezdim, etkileşimli bir SSH oturumu son derece hafif bir yüktür. (Kesinlikle bir X Pencere Sistemi çalıştırmaktan çok daha az yüktür, böylece bir GUI Emacs veya bir xterm çalıştırabilirsiniz!)

Düz bir terminale karşı bu şekilde çalışmanın tek dezavantajı, yapıştırma olaylarının panonun içeriğini çok hızlı yazmış gibi, elektrik çiftleri, girinti, snippet genişlemesi vb. ateş. (Gerektiğini Yapıştır değil orada mantık macun tamamlanana kadar devam eden bir yapıştırın ve devre dışı bırakma tuşu-akor algılamak için ateşe anahtar akor komutları neden olarak.)

Ve standart Bash terminaline göre en az bir çok büyük avantaj var: fare olayları PuTTY tarafından Emacs'ın yanıt verebileceği bir biçimde destekleniyor, bu nedenle ironik olarak, noktayı PuTTY'deki fare ile taşıyabilirsiniz, t yerel terminal ile.


5

ConEmu kullanıyorum. Zarif bir yolu yoktur, ancak makro kullanılarak çözülebilir.

  1. "Ayarlar" ı açın ( Üstteki simgeye tıklayın ).
  2. "Tuşlar ve Makrolar" ı tıklayın.
  3. Sağ tarafta, "Makro 01" .. "Makro 32" seçeneklerini görene kadar aşağı kaydırın ve mevcut olanlardan birini seçin (önemli değil). Bu örnek için Makro 01'i
    ele alalım.
  4. 1. açılır menüden "Boşluk" u seçin.
  5. 2. açılır menüden "Ctrl" yi seçin. Kalan 2 açılır menüye dokunmayın.
  6. GUI Makro alanına aşağı yapıştırın :

    keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
  7. Yukarıda temelde M-x select-mark-commandemacs dize gönderir . Şimdi "Ayarları kaydet" i tıklayın.


Sonunda şöyle görünmeli:

resim açıklamasını buraya girin


çekicilik gibi çalışır. Fantastik!
chriskelly

2

showkey -aWindows / Ubuntu-bash konsolunda çalışırken , ctrl + space'in sadece düz bir alan gönderdiğini gösterir.

Ve ssh oturumu ile aynı sorun diğer herhangi bir linux makine ctrl + boşluk düz alan olarak gönderilir.

Aynı davranış, diğer windows tabanlı terminallerde de (conemu, consolez, MobaXTerm) - macun bu iyi işleyebilir ancak macun yerel bir terminal değildir.

Bence Windows terminallerinin bazı diziler için eşlemeleri yok. Aynı sorun, ctrl + 1 ctrl + 2 .. vb. Gibi diğer kombinasyonlardadır. Burada, örneğin klavye eşlemelerini örneğin kendinden macun gibi işleyebilen terminal gereklidir.

Bu sorunun windows bash terminalinin gelecek sürümlerinde düzeltilmesi gerektiğine inanıyorum.


Daha da kötüsü, set-mark için diğer bağlayıcı olan ctrl- @ 'i de geçmiyor gibi görünüyor. Birisi gerçek bir bağdaysa, Mx set-mark-komutunu kullanabilir. Şimdilik yapılacak doğru şey, muhtemelen, başka bir şeye anahtar bir bağ kurmaktır.
Jim Hunziker

@JimHunziker set-mark-commandMuhtemelen Emacs'ta en sık kullanılan komut olduğu göz önüne alındığında (bir kenara self-insert-command), birinin parmaklarını yeniden eğitmek gerçekten dik bir sorudur - özellikle Emacs'ı benim gibi 25 yıldan fazla bir süredir kullanıyorsanız.
Trey

@Trey, pencerelerde xming'i çalıştırmanın sakıncası yoksa başka bir cevap ekledi
Pawel Dubiel

@PawelDubiel Cevabımı yeni ekledim. (Daha sonraki okuyuculara yardımcı olmanız için gerekenden daha ayrıntılı talimatlar verdim.) Bir sebepten dolayı PuTTY'yi işten çıkardınız, ancak bu nedenin ne olduğunu söylemediniz. Kesinlikle sisteme xming + bir X terminalinden daha az yük bindiren bir seçenektir.
Trey



0

Windows için X Server'ı yükleyebildiğimiz için bir saldırı var

Windows için 1 ilk kurulum xming

2 xming başlat

3 sonra windows bash yükleyin

sudo apt-get install rxvt-unicode-256color

4 sonra açın cmd.exeve çalıştırın

bash.exe -c "urxvtd -q -o -f; bash" 

şimdi bash konsolundayız ve koşuyoruz

(DISPLAY=:0 urxvtc &)

5 Bu noktada, Xming'de zaten yeni bir terminal görmeliyiz. Emacs'ı terminal modunda çalıştırabiliriz.

emacs -nw

Ve tüm bağlamalar artık iyi çalışıyor

ilgili tartışma burada https://github.com/Microsoft/BashOnWindows/issues/531


Bu neden PuTTY kullanmak için üstün bir çözümdür? Emacs'ı GUI modunda çalıştıracak olsaydınız, anlıyorum, ancak kullanımınızı -nwbir terminalde çalıştırıyor, tıpkı PuTTY ile olduğu gibi, şimdi tüm ikinci bir pencere sistemini çalıştırmanız gerekiyor - hızlı testim, bu bir sshd ve PuTTY çalıştırmanın ötesinde neredeyse 500 MB belleğe mal olacak ve benzer şekilde daha yüksek CPU maliyetine sahip olacak.
Trey

@trey 500MB emin misiniz? benim sistemimde tam
5mb

Birimleri yanlış okudum, haklısın. Ancak karşılaştırılabilir sshd + PuTTY numarası, her ne olursa olsun, diğer sayının yaklaşık% 25'i ;-)
Trey
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.