Hlavní navigace

Klávesové skratky

Stanislav Kuchár

Pre niekoho je počítač zábavou, pre niekoho každodenný chlebíček. Či už patríte do prvej alebo druhej skupiny, určite sedíte za počítačom denne (no len si to priznajte, nemusíte sa za to hambiť) a tlačíte doňho príkaz za príkazom. A mnohé z nich sa často opakujú. Klávesnica má práve na tieto účely tzv. funkčné klávesy F1-F12, ktorým možno priradiť text, príkaz, ... čokoľvek.

Dajme tomu, že často kontrolujete, či žije váš server na druhom konci republiky. Treba napísať celý príkaz ping -c 10 moj.server.sk. Keď to už budete písať dvadsiaty krát za deň, určite si povzdychnete, či by sa to nedalo nejak zjednodušiť. (Najmä vtedy keď sa práve tento príkaz už nenachádza v histórii príkazov.)

Nebolo by super tak po stlačení F3 v termináli vidieť výstup príkazu ping -c 10 moj.server.sk? Jeden jediný kláves namiesto celého toho dlhého textu?

Nemusí to byť práve ping, môže to byť čokoľvek iné: nejaká dlhá cesta, shutdown servera, či pravidelné reštartovanie firemného winservera, editovanie súboru, do ktorého si píšete poznámky počas celého dňa, čítanie pošty, sťahovanie najnovšieho kernelu … čokoľvek.

Čo potrebujeme:

Bash
Shell, kde vkladáme príkazy. S rozmachom Linuxu sa stal bash asi najpoužívanejší. Beží na mnohých platformách, takže si ho určite môžete naištalovať a vyskúšať, aj keď nemáte Linux.
Readline
Knižnica Readline umožňuje okrem editácie príkazu, ktorý práve píšete do shell promptu, aj priraďovať jednotlivým klávesom príkazy. Štandardne je Readline súčasťou bashu a nemá dokonca vlastnú man stránku, je popisovaná na stránke k bashu.
Editor
Akýkoľvek textový editor. Budeme editovať inicializačný súbor pre Readline.

~/.inputrc

Readline sa inicializuje zo súboru ~/.inputrc. Tu definujeme všetky naše klávesové skratky. Okrem toho tu možno tiež nastavovať premenné knižnice Readline.

Komentáre sa začínajú, ako je už zvykom, znakom #. Všetko sa znakom # je ignorované. Podobne prázdne riadky sú ignorované.

Syntax pre klávesové skratky je celkom jednoduchý:

"kód klávesu":"funkcia alebo makro"

Každý kláves generuje kódy. Okrem zobraziteľných znakov (ako sú napr. písmená), existujú sekvencie pre špeciálne znaky:

\C-
Control predpona
\M-
Meta resp. Alt predpona
\e
Escape predpona
\\
spätné lomítko

Kódy klávesov si môžeme jednoducho zistiť, keď stlačíme Ctrl-V a potom daný kláves (v bashi samozrejme). Stlačíme teda Ctrl-V F3 s zobrazí sa ^[[13~. Vidíme, že F3 generuje sekvenciu Escape [ 1 3 ~. (Escape sa zobrazuje ako ^[). Toto je kód klávesu F3 pod X Windows Systémom. Ak pracujeme textovej (virtuálnej) konzole, F3 generuje ^[[[C, čiže  Escape [ [ C.

Príklad

Nebudeme chodiť okolo horúcej kaše. Ukážeme si ako priradiť klávesu F3 ten náš pingovací príkaz. Do súboru .inputrc v domácom adresári pridáme:

# žije môj server?
"\e[13~":"ping -c 10 moj.server.sk\C-M"

Klávesu F3, ktorý generuje "\e[13~" priradíme makro ping -c 10 moj.server.sk nasledovaný Ctrl-M, čiže Enter, aby ho nebolo treba odosielať.

Inicializačný súbor sa načítava vždy pri štarte bashu. Aby sme nemuseli kôli tomu nanovo púšťať terminál so shellom, stačí použiť funciu re-read-init-file, pomocou klávesovej kombinácie Ctrl-X Ctrl-R, ktorá nanovo načíta obsah ~/.inputrc.

Stlačíme F3 a … pingujeme. Žiadne dlhé vypisovanie, žiadny Enter. Prosto paráda.

S funkčnými klávesami to nekončí. Keď využijete všetkých 12 klávesov, môžete použiť modifikáry (Ctrl, Alt, Shift) a ich kombinácie. Pozor niektoré z nich sú už použité vo window manageri; tie sa vám nepodarí využiť, pretože window manager sa k nim dostane skôr ako Readline.

Ďalšie tipy

# nepípaj po mne!
set bell-style none

Odvykol som si od toho, aby po mne môj počítač pípal – odpájal som interný speaker. Dnes to už robím softwarovo. Toto je príklad nastavovania premennej knižnice Readline.

# vstup/výstup národných znakov (ISO 8859.2)
set meta-flag on
set convert-meta off
set output-meta on

Aj vstup (z klávesnice) našich národných znakov podlieha Readline.

Tipy na ďalšie čítanie

Našli jste v článku chybu?