Ctrl-Arrow neden OS X'te bash'da çalışmıyor?


15

Çalıştığım her Linux sisteminde kullanıyorum Ctrl- ve Ctrl- ama bu tuş kombinasyonları Macbook Pro'mda bash'da çalışmıyor. Snow Leopard çalıştırıyor ve yerleşik Terminal uygulamasını kullanıyorum.

Anahtar kombinasyonları Terminal öncesi veya Terminal tarafından herhangi bir şey tarafından yakalanmış gibi görünmüyor, çünkü Linux sunucularımdan birine bağlanırsam , komut satırındaki sonraki / önceki sözcüğe atlamak için Ctrl- / tuşunu kullanabilirim . Ancak, Macbook'umda bash'da bu tuş kombinasyonunu denediğimde, sağ ok için "C" ve sol ok için "D" alıyorum.

Bu anahtarları darwin bash'da nasıl çalıştırabileceğim hakkında bir fikrin var mı?


2
Boşluklar kullanıyorsanız, varsayılan olarak Ctrl + ok boşlukları değiştirir.
mark4o

Yanıtlar:


13

OS X benim emacs anahtar bağlama benim varsayılan kullanır. Bu doğrudur, OS X'teki hemen hemen her uygulama, oldukça güzel. Bu, Ca ve Ce gibi şeylerin satır başı / sonu olduğu anlamına gelir. Ayrıca M-backspace ile şık geri kelime-öldürme, oh ve Ck ile kill-line elde edersiniz.

Bu, terminalinizde ileri / geri kelimesinin sırasıyla Mf ve Mb'ye bağlı olduğu anlamına gelmelidir (M = Meta = alt / seçenek), ancak durum böyle değildir. OS X'te ileri / geri sözcük-kelime varsayılan olarak M- → ve M- ← 'ye bağlıdır.

GNU Readline Library'nin hesabınız için nasıl yapılandırıldığını değiştirerek bu davranışı değiştirebilirsiniz. Bu, ~/.inputrcdosyanızda gerçekleşir. İkili komutların büyük bir listesini ve man readlinebunun gibi çevrimiçi belgelerde bulabilirsiniz. .

Sorunuzu cevaplamak için, Readline'ın linux sunucunuzda ne yaptığını yapmak için C- → ve C- ← gördüğünde ne yaptığını yeniden eşlemek istersiniz.

Bir sözdizimi ~/.inputrcdosyasına yapmak istediğiniz ne için oldukça basittir: key-sequence: action.

İstenen davranışı elde etmek için ihtiyacınız olan şey bu olmalıdır:

"\e[5C": forward-word
"\e[5D": backward-word

İşte yararlı ekleri olan başka bir sayfa .

(Muhtemelen linux kutunuzdan OS X ~ / .inputrc'ye / etc / inputrc kopyalamaktan kurtulabilirsiniz)


Bir not: xterm-tuşlarıyla çok tmux kullanıyorsanız, ayrıca gerekecektir \e[1;5Cve \e[1;5Dtetik ayrıca forward-wordve backward-word.
Arne

3
Başka bir not: Hala çalışmıyorsa, bunun nedeni Görev Denetimi / Alanları ile bir kısayol çakışması olabilir. Sistem Tercihleri ​​-> Klavye -> Kısayollar -> Görev Kontrolü, Bir boşluk sola / sağa git
bhh1988

"OS X varsayılan olarak emacs key ciltleme kullanıyor" anlamıyorum. "Ctrl-arrow" aynı zamanda bir emacs tuş bağlamasıdır.
Greg

3

~/.inputrcaşağıdaki satırları koyun :

"\e[5C": forward-word
"\e[5D": backward-word

0

Bu günlerde terminalde Ctrl-Arrows'un çıktığı kaçış dizileri değişmiş görünüyor. Bugün itibariyle (2018 sonu) benim için işe yarayan şey:

"\e[1;5C": forward-word "\e[1;5D": backward-word

Not: cat -vTerminalde yazıp Ctrl-Sol Ok veya Ctrl-Sağ Ok tuşlarına basarak her zaman gerçek kaçış dizilerini bulabilirsiniz . İşte kendi Ctrl-Sol Ok için örnek bir çıktı:

^[[1;5C ^[[1;5C

Çevirmek için .inputrclingo, kaçış işareti yerine ^[sahip \eve çift tırnak içine sonucunu sopa.


0

@ Bhh1988'in belirttiği gibi, Görev Kontrolü yapılandırması Ctrl Tuşlarının ok tuşları ile çalışmasını engeller bash. Bu kısayollara müdahale etmek istemedim, bu yüzden Seçenek (yani Alt) tuşunu kullanıyorum. Şu anda bir Almanca klavye kullanarak Mojave (alakalı olup olmadığını bilmiyorum) .inputrcKelimeler arasında hareket etmek için Option-sol-ok ve Option-sağ-ok kullanmak için aşağıdakileri koymak .

"\e\e[C": forward-word
"\e\e[D": backward-word

0

GÜNCELLEŞTİRME Ocak 2020

OSX'in en yeni sürümlerinde varsayılan kabuktur zsh. Bu nedenle ctrl-arrowleft ve ctrl-arrowright'un beklendiği gibi çalışmasını sağlamak için büyülü büyücü şudur:

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

(içine koy .zshrc)

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.