Ctrl + sol / sağ ok tuşları sorunu


25

Son sistem güncellemesinden sonra, zsh terminalindeki ctrl + sol / sağ ok komutu hiçbir şey yapmaz. Ayrıca ctrl + u da yanlış bir şey var çünkü genellikle bu komut imlecin satırın başlangıcına kadar silinmesine neden olur, şimdi tüm satırı siler .. Birisi bu sorunları nasıl çözeceğini bilir? hepinize teşekkür ederim.


Kabul edilebilir bir cevap buldunuz mu? Bence Goncalo'nun cevabı harika.
Léo Léopold Hertz 준영

Yanıtlar:


44

FWIW, bu, zsh'nin varsayılanını kullanarak ortamımda (rhel5.x) çalıştı.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

5
^[^[[Dve ^[^[[Csırasıyla, OSX
Jon z

1
Onaylandı, Goncalo'nun önerisi Debian 8.5'te de çalışıyor. Neden bu kodun neden .zshrcvarsayılan olarak yerleşik olmadığını merak ediyorum .
Léo Léopold Hertz 준영

Ubuntu Artful'da bir cazibe gibi çalışıyor, teşekkürler!
Konrad Garus

$terminfoKaçış dizileri yerine herkes kullanmak isterse : Anahtarlar $terminfo[kLFT5]ve $terminfo[kRIT5]benim için çalıştı
Griddo

14

Ctrl + U büyük olasılıkla imleci satırın sonuna getirdiğiniz için muhtemeldir. İkincisi, Gentoo’nun hangi sürümüne "son sistem güncellemesi" deniyorsunuz?

Peki ctrl + sol / sağ'ın ne yapmasını istersiniz?

  • Zsh config'e ekle:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • Ve eski hurdadan buldum (yardımcı olabilir):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • ya da size yardımcı olması gereken bu bağlantıya bir göz atın ?

Not: Eğer konfigürasyon çalışıyorsa, ancak sözde anahtarlar istediğiniz şeyi yapmıyorsa, belki de anahtar tanımı sizinkinden ve benimkinden farklı olduğu için, yapın: cat > /dev/null ve çıktısını almak ve buna göre ayarlamak istediğiniz tuşlara basın.


1
"Ctrl + U büyük olasılıkla imleci satırın sonuna getirdiğiniz için" tabiki imlecim ortada olduğunda demek istiyorum. "Peki ctrl + sola / sağa ne yapmak istiyorsunuz?" genellikle ctrl + sol ok: sola gitme vb. kelimesini atla ...
riskio

Ve hangi kabuk / terminal kullanıyorsunuz? Emacs veya genellikle ve / bin / bash kullandığınız terminalleri kullandığınızdan emin olun. Ekrandan geçiyor musun?
Torxed

1
lütfen soruyu orda okuyun ..
riskli

1
@Masi Emin değilim, ondan iki yıl önce cevap verdim ve cevaplarımız neredeyse aynıydı, bunu yapmanın iki farklı yolunu gösterdim .. ve yazdıklarını birleştirmek için ikisini birleştirebilirsiniz.
Torxed

1
@Masi Tek bildiğim o zamanlar (hatırlıyorum, 2010-2012 .. Uzun zaman önceydi) bu ikisinin (ve kombinasyonunun) benim için birçok farklı sistemde çalıştığını. Hem Unix hem de Linux'taydım (ve Gentoo'da, piyasaya sürülen bir işletim sistemi olan). Ve hala bunun birçok örneği üzerinde izler var .. Bu depo gibi. Şimdi, yine, neden olduğundan emin değilim ama en az iki makinede çalıştı, ben de paylaşacağımı düşündüm. Ve bugün onun daha net olduğundan eminim, ve tüm oyları almasına aldırmıyorum. Bu eski bir yazıdır.
Torxed

5

Ne işleri gelmez doğrudan dağıtıma (Gentoo, Debian, RHEL vs.) ya da kabuk (ZSH, KSH, BASH) bağlıdır - bu hangi bağlıdır terminal emulatorkullanılır ve bunun ayarları: konsole sonlandırıcı, urxvt, lx-terminali Dağıtım, farklı bir standart kabuk config (fx. .shshcc) kullanıp kullanmadığını ve bu dağıtımda config kabuklarını değiştiren farklı bir kabuk kullanıyorsa, bunu zaten halledebilir.

İşte birkaç terminal emülatörüne özgü çözümler:

urxvt / rxvt-unicode (ve belki diğerleri):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

terminatör, konsole ve xterm (ve belki diğerleri):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Daha genel bir yaklaşım için terminalinize başlarsınız, CTRL-V tuşlarına ve ardından kaçış kodunu (adını) istediğiniz tuş kombinasyonuna basın - bu durumda CTRL-leftarrow ve CTRL-rightarrow tuş kombinasyonlarını kullanın - ve her birinin çıkışını girin İki tırnak arasındaki tuş birleşimi.


1
CTRL-V önerisini denediniz mi? Belki terminaliniz tuş vuruşlarını farklı yorumluyor, bu yüzden anahtarın farklı "sembollere" bağlı olması gerekiyor?
miyalys

1
Cevabımı güncelledim. Kullanılana bağlı olarak birden fazla çözüm var terminal emulator. Dağıtım ya da kabuk önemli değil. Muhtemelen bunun nedeni .zshrc de değildir, çünkü bir terminal emülatöründe işe yarar başka bir şey için çalışmaz. Fakat eğer zshrc fx ise muhtemelen çözülebilir. $ TERM ortam değişkenini okuyun ve sonucu temel alan farklı bindkey ayarları uygulayın.
miyalys

2

Çözüldü.

Kullanılan terminal: Konsole .

Çözmek için: terminale sağ tıklayın (veya menü çubuğundaki ayarlar ) -> mevcut profili değiştir -> klavye eşlemesi -> Varsayılan olarak değiştir


gerçekten zsh ile ilgili değil ama elbette, bir düzeltme bir düzeltmedir.
Torxed
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.