GNU/Linux >> Znalost Linux >  >> Linux

změnit klávesové zkratky bash, jako je Ctrl-C?

To nejsou vlastnosti bash, to jsou vlastnosti ovladače terminálu. Jako takové jsou specifikovány stty(1) .

$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

To je téměř nyní zcela vyřešeno. Na část řešení mě poprvé upozornilo MTK358 na adrese http://www.linuxquestions.org/questions/linux-software-2/change-bash-shortcut-keys-such-as-ctrl-c-818170/ . Poukázal na (poněkud zřejmý, k mému rozpaku) fakt, že klávesové zkratky pro kopírování a vkládání lze snadno změnit pomocí nastavení nabídky konsole. Jakmile jsem to viděl, trvalo asi 1 minutu nastavení Ctrl-C a Ctrl-V pro kopírování a vkládání pomocí terminálu.

Druhá část řešení měla být jasná z manuálové stránky stty, ale nebyla (pro mě). Nakonec jsem jen experimentoval na základě různých vodítek, jako jsou ty zveřejněné výše.

Rozhodl jsem se, kterou nenumerickou klávesou chci nahradit Ctrl-C jako příkaz ukončit. (použil jsem "k"). Nikdy jsem nenašel žádné informace o tom, jak přenést modifikátor řazení na stty, takže jsem to vzdal. Když jsem se rozhodl, vše, co jsem musel udělat, bylo zadat na příkazový řádek následující:

stty intr \^k

Ověřil jsem, že vše funguje, jak má.

Teď jsem jen musel umístit jediný příkaz výše (stty intr \^k) do spouštěcího skriptu. Nejsem si jistý, který z nich je ten "správný". Chtěl bych, aby tato změna byla celosystémová a trvalá.

Nějaké návrhy, do kterého skriptu bych měl příkaz umístit?

A konečně, pokud jde o kazatelské odpovědi, jsou zbytečné a neužitečné.


Některé z nich lze nastavit pomocí normálního mechanismu klávesových zkratek KDE. V nabídce "Nastavení" Konsole klikněte na "Konfigurovat zkratky" a zobrazí se dialogové okno, které můžete použít ke změně klávesových zkratek pro funkce, které KDE zpracovává. To vám umožní přemapovat Ctrl+C pro kopírování a Ctrl+V pro vložení – ale mějte na paměti, že jakmile to uděláte, tyto sekvence kláves již nebudou předávány do terminálu, takže je nebudete moci používat Ctrl+C například pro přerušení programu.

Ostatní funkce jsou ovládány readline knihovnu, kterou můžete nakonfigurovat úpravou souboru ~/.inputrc . Chcete-li, aby Ctrl+Z vrátila všechny úpravy provedené na aktuálním řádku, budete chtít přidat

C-z: revert-line

ale tato sekvence kláves je pravděpodobně již zachycena terminálem, takže možná budete muset použít stty odpojit, než to bude fungovat. Nejprve vyhledejte ^Z ve výstupu stty -a (jak je uvedeno v Ignaciově odpovědi) a poté, například pokud se zobrazí v susp = ^Z , spustit

stty susp ^-

k odpojení tohoto mapování klíčů.

Ostatní změny, na které se ptáte, by musely být provedeny pomocí stty jak říká Ignacio, protože to jsou terminálové funkce, ale nejsem si jistý přesně jak. Problém je v tom, že nevím, zda terminál rozpoznává Shift, nebo pokud ano, jak přenést tyto informace do stty .


Linux
  1. 10 užitečných klávesových zkratek pro spisovatele LibreOffice

  2. Jak změnit předchozí/následující zástupce slova v Bash?

  3. Chcete-li pořizovat snímky obrazovky, změňte klávesovou zkratku závěrky

  1. Jak změním adresář v Git Bash pomocí Git pro Windows?

  2. Bash:Žádný takový soubor nebo adresář?

  3. Spusťte příkaz bash na jenkins pipeline

  1. ssh klíče ssh-agent bash a ssh-add

  2. Jak změnit rozlišení Bash pro Debian VM?

  3. Jak rychle změnit první slovo v příkazu Bash?