GNU Readline - GNU Readline

GNU Readline
Heckert GNU white.svg
Původní autoři Brian Fox
Vývojáři Chet Ramey
První vydání 1989 ; Před 32 lety ( 1989 )
Stabilní uvolnění
8.1 / 7. prosince 2020 ; Před 10 měsíci ( 2020-12-07 )
Úložiště
Napsáno C
Typ Knihovna
Licence Obecná veřejná licence GNU
webová stránka tiswww .case .edu / php / Chet / readline / rltop .html

GNU Readline je softwarová knihovna, která poskytuje možnosti úpravy řádků a historie pro interaktivní programy s rozhraním příkazového řádku , jako je Bash . V současné době jej udržuje Chet Ramey jako součást projektu GNU .

Umožňuje uživatelům přesouvat textový kurzor , prohledávat historii příkazů , ovládat zabijácký kroužek (flexibilnější verze schránky pro kopírování/vkládání) a používat vyplňování karet na textovém terminálu . Jako platformě knihovny readline umožňuje aplikace na různých systémech vykazují identické chování line-editaci.

Režimy úprav

Readline podporuje režimy úprav Emacs a vi, které určují, jak bude vstup klávesnice interpretován jako příkazy editoru. Viz Editor války#Rozdíly mezi vi a Emacsem .

Klávesové zkratky Emacsu

Vazby kláves režimu úprav Emacsu jsou převzaty z textového editoru Emacs .

Na některých systémech Escmusí být použit místo Alt, protože Altzkratka je v konfliktu s jinou zkratkou. Například stisknutí Alt+ fv okně emulátoru terminálu Xfce neposune kurzor o jedno slovo dopředu, ale aktivuje "Soubor" v nabídce okna terminálu, pokud to není v nastavení emulátoru zakázáno.

  • Tab ↹ : Automatické dokončování z pozice kurzoru.
  • Ctrl+ a : Přesune kurzor na začátek řádku (ekvivalent klíče Home).
  • Ctrl+ b : Přesune kurzor o jeden znak zpět (ekvivalent klávesy ).
  • Ctrl+ c : Odešle signál SIGINT přes pseudoterminal k aktuálnímu úkolu, který jej přeruší a zavře.
  • Ctrl+d
    • Odešle značku EOF, která (pokud není zakázána možností) zavře aktuální shell (ekvivalent příkazu exit). (Pouze pokud na aktuálním řádku není žádný text)
    • Pokud je na aktuálním řádku text, odstraní aktuální znak (pak ekvivalent klíče Delete).
  • Ctrl+ e : ( konec ) přesune kurzor na konec řádku (ekvivalent klíče End).
  • Ctrl+ f : Přesune kurzor o jeden znak dopředu (ekvivalent klávesy ).
  • Ctrl+ g : Přerušte zpětné vyhledávání a obnovte původní řádek.
  • Ctrl+ h : Odstraní předchozí znak (stejný jako backspace).
  • Ctrl+ i : Ekvivalent klíče tabulátoru.
  • Ctrl+ j : Ekvivalent klíče Enter.
  • Ctrl+ k : Vymaže obsah řádku za kurzorem a zkopíruje jej do schránky .
  • Ctrl+ l : Vymaže obsah obrazovky (ekvivalent příkazu clear).
  • Ctrl+ n : ( další ) vyvolá další příkaz (ekvivalent klíče ).
  • Ctrl+ o : Provede nalezený příkaz z historie a načte další řádek vzhledem k aktuálnímu řádku z historie pro úpravy.
  • Ctrl+ p : ( předchozí ) vyvolá předchozí příkaz (ekvivalent klíče ).
  • Ctrl+ r : (zpětné vyhledávání) vyvolá poslední příkaz včetně zadaných znaků. Sekunda Ctrl+ rvyvolá další přední příkaz, který odpovídá vyhledávání
  • Ctrl+ s : Vraťte se k dalšímu novějšímu příkazu zpětného vyhledávání (pozor, abyste jej nespouštěli z terminálu, protože tento příkaz také spouští jeho XOFF). Pokud jste změnili toto nastavení XOFF, použijte Ctrl+ qk návratu.
  • Ctrl+ t : Transponujte předchozí dva znaky.
  • Ctrl+ u : Vymaže obsah řádku před kurzorem a zkopíruje jej do schránky .
  • Ctrl+ v : Pokud je dalším vstupem také kontrolní sekvence, zadejte ji doslovně (např. * Ctrl+ v Ctrl+ Zadejte h„^H“, doslovný backspace.)
  • Ctrl+ w : Vymaže slovo před kurzorem a zkopíruje ho do schránky .
  • Ctrl+ x Ctrl+ e : Upraví aktuální řádek v programu $ EDITOR, nebo vi, pokud není definován.
  • Ctrl+ x Ctrl+ r : Přečtěte si obsah souboru inputrc a začleňte tam nalezené vazby nebo přiřazení proměnných.
  • Ctrl+ x Ctrl+ u : Přírůstkové vrácení, zvlášť zapamatované pro každý řádek.
  • Ctrl+ x Ctrl+ v : Zobrazí informace o verzi o aktuální instanci Bash.
  • Ctrl+ x Ctrl+ x : Střídá kurzor se starou pozicí. (Cx, protože x má tvar křížení).
  • Ctrl+ y : ( yank ) přidá obsah schránky z pozice kurzoru.
  • Ctrl+ z : Odešle signál SIGTSTP k aktuálnímu úkolu, který jej pozastaví. Chcete -li jej spustit na pozadí, můžete zadat bg. Chcete -li jej vrátit z pozadí nebo pozastavení fg ['process name or job id'](v popředí ), můžete vydat.
  • Ctrl+ _ : Přírůstkové vrácení, zvlášť zapamatované pro každý řádek.
  • Alt+ b : ( zpět ) posune kurzor o jedno slovo zpět.
  • Alt+ c : Velká písmena pod kurzorem a přesunutí na konec slova.
  • Alt+ d : Ořízne slovo za kurzorem.
  • Alt+ f : ( vpřed ) posune kurzor o jedno slovo dopředu.
  • Alt+ l : Snižuje velikost písmen každého znaku od pozice kurzoru po konec aktuálního slova.
  • Alt+ r : Zruší změny a vrátí řádek tak, jak to bylo v historii.
  • Alt+ u : Kapitalizuje každý znak od pozice kurzoru po konec aktuálního slova.
  • Alt+ . : Vložte poslední argument do předchozího příkazu (poslední slovo předchozí položky historie).

Volba licence GPL jako licence GNU Readline

GNU Readline je knihovna svobodného softwaru, která je licencována pod licencí GNU General Public License (GPL). Knihovny bezplatného softwaru jsou mnohem častěji licencovány podle GNU Lesser General Public License (LGPL), například GNU C Library , GNU gettext a FLTK . Vývojář aplikace, který se rozhodne propojit s licencovanou knihovnou LGPL, může pro tuto aplikaci použít libovolnou licenci. Ale propojení s licencovanou knihovnou GPL, jako je Readline, vyžaduje, aby celá kombinovaná výsledná aplikace byla při distribuci licencována pod GPL, aby byla v souladu s částí 5 GPL.

Tato licence byla vybrána FSF v naději, že to povzbudí software k přechodu na GPL. Důležitým příkladem aplikace, která mění své licencování, aby splňovala podmínky copyleftu GNU Readline, je CLISP , implementace Common Lisp . Původně vydán v roce 1987, změněn na licenci GPL v roce 1992, po výměně e -mailů mezi jedním z původních autorů CLISP, Bruno Haible a Richard Stallman , ve kterém Stallman tvrdil, že propojení readline v CLISP znamenalo, že Haible musel znovu -license CLISP pod GPL, pokud si přál, aby distribuovat provádění CLISP který používal readline.

Další odpovědí bylo nepoužívat to v některých projektech, takže psaní textu používalo pro úpravy primitivní ovladač terminálu Unix.

Alternativní knihovny

Alternativní knihovny byly vytvořeny s jinými licencemi, takže je mohou používat softwarové projekty, které chtějí implementovat funkce úprav příkazového řádku, ale budou vydány s licencí, která není GPL.

  • Mnoho BSD systémy mají BSD licencí libedit . MariaDB a PHP umožňují uživateli v době sestavení vybrat, zda se má propojit s GNU Readline nebo s libedit. MacOS je libreadline je vlastně vložka nad libedit, uspořádání známé jako editline .
  • linenoise je malá knihovna C, která poskytuje funkce pro úpravy řádků.
  • Haskeline je knihovna podobná čtecímu řádku pro Haskell. Je napsán hlavně pro kompilátor Glasgow Haskell , ale je k dispozici i pro jiné projekty Haskell, které také vyžadují služby pro úpravu řádků.

Ukázkový kód

Následující kód je v C a musí být propojen s knihovnou readline předáním příznaku -lreadline kompilátoru:

#include <stdlib.h>
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>

int main()
{
    // Configure readline to auto-complete paths when the tab key is hit.
    rl_bind_key('\t', rl_complete);

    while (1) {
        // Display prompt and read input
        char* input = readline("prompt> ");

        // Check for EOF.
        if (!input)
            break;

        // Add input to readline history.
        add_history(input);

        // Do stuff...

        // Free buffer that was allocated by readline
        free(input);
    }
    return 0;
}

Vazby

Mezi programovací jazyky bez C, které poskytují jazykové vazby pro readline, patří

  • Vestavěný readlinemodul Pythonu ;
  • Vestavěný readlinemodul Node.js ;
  • Vestavěný readlinemodul Ruby ;
  • Term::ReadLineModul CPL (Perl) od jiného výrobce , konkrétně Term::ReadLine::Gnupro GNU ReadLine.

Podpora alternativ readline se mezi těmito vazbami liší.

Poznámky

Reference

externí odkazy