PuTTY ve ekran ile ctrl ok tuşlarını kullanma


33

Aradım ve bunun için hiçbir yerde bir çözüm bulamadım. Ben bash ve ekran çalıştığım çeşitli sunuculara bağlanmak için Windows PuTTY kullanıyorum. Bash komut satırında kelimeden kelimeye atlamak için ctrl-ok tuşlarıyla iyi çalışıyor gibi görünüyor ama ekran içinde çalışmıyor. Ekranda değil, ctrl-left "^ [OC ve ctrl-right" gönderir "^ [OD". Ekranda bunun yerine sadece ^ " sol / sağ ok tuşları: PuTTY kullanırken ctrl-ok tuşlarını tanımak için ekran elde etmenin bir yolu var mı?

GÜNCELLEME: Görünüşe göre PuTTY sorun olması için çalışması için gerekli olan kaçış kodlarını göndermemesidir. Şimdilik pes ediyorum ve Cygwin + mintty kullanıyorum.


Vay, mintty harika - bir süredir Windows için uygun bir terminal emülatörü arıyordum. Bunun için teşekkürler.
blueyed

Yanıtlar:


13

Düzenle:

İşte benim için çalıştı ne:

  • Benim ~/.bashrcsetleri TERM=xterm(maden edilecek olur TERM=xterm-256colorsekran 's geçersiz kılma)TERM=screen
  • PuTTY> Terminal> Features> Uygulama İmleç tuşları modunu Devre Dışı Bırak seçeneğini işaretli olarak ayarlıyorum
  • tput smkxBash istemine giriyorum
  • Şimdi Ctrl-Ok tuşları ile kelime atlamak

  • Bilgi amaçlı, yaparsam:
    tput smkx | hexdump -c
    alıyorum
    0000000 033 [ ? 1 h 033 =
    ve
    tput rmkx | hexdump -c
    veriyor
    0000000 033 [ ? 1 l 033 >

Bence bunu biraz daha iyi bir şeye yeniden düzenlemenin bir yolu var, ama şimdiye kadar sahip olduğum şey işe yarıyor.

Orijinal cevap:

Kimden info screen:

Bir 'ekran' oturumundaki her pencere, bazı ekstra fonksiyonlar eklenmiş bir VT100 terminaline öykünür. VT100 emülatörü sabit kodlanmıştır, başka terminal tipleri emüle edilemez.

VT100'lerde Ctrl-Arrow tuş kodları yoktur.


set -o vi(eğer bu tür bir
kişiyseniz

1
@MikeyB: Bu nasıl yardımcı oluyor (bu arada değil)?
sonraki duyuruya kadar duraklatıldı.

Teşekkürler. Umduğum cevap değil ama şimdi devam edebilir ve bu sınırlama ile yaşayabilir ya da başka bir anahtar bağlama kullanabilirsiniz.
kbosak

1
@Dennis: Kafasını etrafına sarabilecek bir insanın yazarıysanız, ileri / geri kullanmanın başka bir yolunu sunar. set -o vivi komut satırı modunu ESCaçar, böylece hareket etmek ve komut satırınızı düzenlemek için vi tuşlarını kullanabilirsiniz.
MikeyB

1
@kbosak: Bu cevaptan da memnun değilim. Bu yüzden düzelttim . :-)
sonraki bildirime kadar duraklatıldı.

23

De belirtildiği gibi burada u ~ / .inputrc koyabilirsiniz:

"\eOD": backward-word
"\eOC": forward-word

Benim için çalıştı.


5
Bu benim için çalıştı ve kabul edilen cevaptan çok daha kolaydı.
Petrus Theron

Bu benim için de işe yaradı, kabul edilen cevap ise
Schiavini

+1 Sadece işe yarayan kısa cevap.
Adam Caviness

3
Dosyanızın $include /etc/inputrcen üstünde olduğundan emin olun .inputrc, aksi halde readline sistem genelindeki bağlantıları okumaz ve Home ve End gibi tuşlar kırılır.
James

1
Bu kabul edilen cevap olmalı!
Shailen

4

Benim için hiç çalışmadığı için, ekran kullanmadan bile ctrl-ok tuşlarını doğru şekilde göndermeniz için Putty'e sahip olmanıza biraz şaşırdım. Benim çözümüm, zsh için onları tanımak için birkaç komut daha vermek zorunda kalmam gerektiğine inandığım alt-ok tuşlarını (meta-ok tuşlarını) kullanmaktı.

bindkey "^ [^ [[C" ileri-kelime # Meta-RightArrow
bindkey "^ [^ [[D" geriye dönük kelime # Meta-LeftArrow

Bu rotaya da gidebilirim. Sol ctrl tuşuna basmak meta veya alt tuşlardan çok daha kolaydır (en azından klavyemde). Oh iyi.
kbosak

4

Başkalarının benim yaptığım gibi bu eski soruyu bulması durumunda, daha yeni bir çözüm:

Ctrl ve ok tuşları macun içinde çalışmıyor! Ben ne yaparım?

macun, tmux'un düzgün algılaması biraz zor olan ctrl'deki imleç tuşu modunun anlamını tersine çevirir. Ctrl anahtarlarını doğru almak için terminfo ayarlarını değiştirin, böylece kUP5 (Ctrl-Up vb.) Ayarlanan sürümlerdir ve smkx / rmkx komutunu devre dışı bırakın, böylece tmux modu değiştirmez. Örneğin .tmux.conf içindeki bu satırla (TERM'in xterm olarak ayarlanmış olduğunu varsayarak):

-g terminalini geçersiz kılar "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

Bunun sadece tmux 1.2 ve üzeri sürümlerde çalışacağına dikkat edin.

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ


0

Düzgün hata ayıklamak / yapılandırmak istiyorsanız terminfo, ncurses, screen ve putty belgelerine bakmalısınız. Ayrıca bash kısayolları inputrc ile yapılandırılabilir. Bash man sayfalarına bakın ve inputrc arayın.


Pronun inputrc'da ne olduğunu sanmıyorum. Girişleri başarılı bir şekilde girmeden girdileri dahil etmek için birkaç olası çözüm buldum. Yine, yanlış kod ctrl-ok tuşları için ekrana gönderiliyor gibi görünüyor. Ayrıca bu konuda çok daha fazla zaman harcamak istemiyorum, çünkü gerçekten küçük bir rahatsızlık.
kbosak

0

Putty'de doğru karakter kodlaması var mı? UTF-8'deki bir sunucuya bağlanırsanız ve macununuz standart karakter setindeyse, vim cinsinden ok tuşları yazılır. Macun UTF-8'de ise imlecinizi hareket ettirebilirsiniz. Belki de senin durumunda aynı ...


Bu hiçbir şekilde bir vim / vim problemi değil ve PuTTY'de karakter seti için sadece bir seçenek gördüm;
kbosak

Terminal-> Klavye-> İşlev tuşları ve tuş takımındaki farklı seçenekleri deneyin. BTW, benim için Ctrl-Arrow da bash'de çalışmaz, Ctrl'ye basmadan da aynı şekilde çalışır.
Prof. Moriarty,

Evet, şanssız olarak birçok seçenek ve seçenek kombinasyonunu denedim. Bilginize, ctrl ok tuşlarına bash ile yardımcı olmak için inputrc komutunu girebileceğiniz bazı girişler vardır, ancak ekranı kullanırken yardımcı olmazlar.
kbosak

0

Terminal -> Özellikler altındaki macun yapılandırmanızda, birkaç "devre dışı bırak" onay kutusu vardır. Uygulama imleç tuşlarını veya uygulama tuş takımı modunu devre dışı bırakmayı denemek isteyebilirsiniz - bazen macun "çok akıllı" olmaya çalışır ve sunucu ile uyumlu olmayan kontrol karakterleri gönderir.


0

Terminal> Klavye> İşlev Tuşları> Xterm R6'yı kullanıyorum. Bu, htop (f4 arama vb.) İşlev tuşlarının beklendiği gibi çalışmasına yardımcı oluyor.

Bulduğum şey, CTRL + ok yerine ALT + ok yerine sözcük atlar.

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.