Bas kısayollarında neden Ctrl + m ve Ctrl + q kullanılmıyor?


15

Son zamanlarda bash kısayol tuşlarını inceliyorum ve tmux aktivasyon anahtarım için uygun olanı bulmaya çalışıyorum.

Https://en.wikipedia.org/wiki/Bash_(Unix_shell) 'e göre bunu ilginç buluyorum ctrl + mve ctrl + qbash kısayollarında kullanılmıyor .

Neden kullanılmıyor? ctrl + mOldukça kullanışlı olduğunu hissediyorum .

Bu iki kombinasyon tasarım için DIY (define it yourself)kullanıma yönelik mi? Yoksa başka bir hikaye var mı?


1
Kullanmak ALT + mdaha uygun imho.
Rolf

Yanıtlar:


16

Ctrl + M terminaldeki Enter tuşuyla aynı karakteri (RET) gönderir. Programların bunları ayırmanın bir yolu yoktur, bu nedenle bu tuşlar ayrı ayrı yapılandırılamaz.

Ctrl + Q, XON için varsayılan olarak zaten kullanılmaktadır , bu nedenle Bash tarafından kullanılamaz, ancak yine de tmux'da kullanabilmeniz gerekir, çünkü tmux ham giriş modunu kullanır.

Bir GUI programı klavyeden okuyabilir, Key m değiştirici Ctrl ile basıldı ve Ctrl + m'yi kısayol olarak kullandı, ancak bir kabuk veya herhangi bir terminal programı Ctrl + Key kombinasyonlarını 0'dan 26'ya kadar ascii karakterleri olarak alır

Ctrl+@ = 0
Ctrl+A = 1
Ctrl+B = 2

ve bunun gibi. Değerleri görmek için bunu deneyebilirsiniz

cat ctrlkeys <<EOF
^A^B^C^D^E^F
EOF
od -c ctrlkeys
0000000 001 002 003 004 005 006  \n

Değerleri girmek için, Ctrl + [af] öğelerinden önce Ctrl + v tuşlarına basarak ham değer olarak yorumlanmasın.

ASCII (7) tablosuna baktığınızda, kontrol kodlarını soldaki @ .. Z karakterlerine sahip bir tabloda görebilirsiniz. Örneğin

015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M

veya

011   9     09    HT  '\t' (horizontal tab)   111   73    49    I

Kontrol kodlarını bash'den önce yorumlayan sonraki katman stty (terminal ayarlarını değiştirin ve yazdırın)

stty -a
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;

lnextveya startve anlamları için stty (1) 'e bakınız stop.

Ayrıca bash ve diğer GNU cli programları giriş satırlarını ve elbette bash (1) / READLINE'ı (bash manuel sayfasının readline bölümü) kontrol etmek için bu kütüphaneyi kullandığından readline'a (3) bakın.

Not: XYZ (NUM), bölüm NUM'deki manuel sayfa XYZ anlamına gelir, dolayısıyla sonucu man NUM XYZ.


1
Bash, Cs (XOFF) için varsayılan bir bağlayıcıya sahiptir, bu nedenle Cq için de bir tane bağlayabilirler.
Gilles 'SO- kötü olmayı bırak

Aslında, Bash'in kullandığı GNU Readline kütüphanesi, varsayılan C-qolarak C-v, quoted-insertanahtarlar ve tuş kombinasyonları tarafından üretilen kaçış kodlarını bulmak için yararlı olan Emacs işlevinin bir klonu ile aynı şeye bağlanır . Readline kılavuzunun ilgili kısmı: tiswww.case.edu/php/chet/readline/readline.html#SEC9
ssokolow
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.