/ / Bash użycie vi lub emacs - bash, libreadline

Wykorzystanie basha przez vi lub emacs - bash, libreadline

Z punktu widzenia programowania, po ustawieniu powłoki bash, aby używać vi lub emacs via

set -o vi

lub

set -o emacs

Co się tutaj dzieje? Czytałem książkę, w której twierdzi ona, że ​​powłoka bash używa jednego z tych edytorów do wprowadzania danych do samej powłoki, ale pomyślałem, że mogła użyć readline.

Odpowiedzi:

5 dla odpowiedzi № 1

Bash wciąż używa readline. Readline używa trybu emacs lub vi i ustawia przełączniki trybu pomiędzy różnymi trybami edytora. Możesz sprawdzić folder lib / readline w podstawowym kodzie źródłowym, aby zobaczyć różne powiązania klawiszy.


1 dla odpowiedzi nr 2

Według strony podręcznika BASH_BUILTINS (1) (w Fedorze 8):

   set [--abefhkmnptuvxBCHP] [-o option] [arg ...]

... (pomijanie wszystkich opcji pojedynczej litery)

-o nazwa-opcji Nazwa-opcji może być jedną z poniższych:

...

            emacs Użyj interfejsu edycji wiersza poleceń w stylu emacsa. To jest włączone domyślnie, gdy powłoka jest interaktywna, chyba że powłoka jest uruchamiana z opcją --noediting.
...
vi Użyj interfejsu edycji wiersza poleceń w stylu vi.
Rozumiem, że oznacza to, że bash bezpośrednio interpretuje polecenia do edycji linii. Ta opcja po prostu określa, który zestaw poleceń ma zostać użyty. Zobacz stronę man dla readline (3).


1 dla odpowiedzi nr 3

Używa klawiszy, które są znane użytkownikom jednego z tych edytorów do edycji wiersza poleceń.

Readline to obiekt zapewniający tę funkcję Bash i innym programom.

Od man bash:

CZYTAJ LINIĘ To jest biblioteka, która zajmuje się czytaniemwejście przy użyciu interakcyjnego tive shell, chyba że opcja -noediting jest podana przy wywołaniu powłoki. Edycja linii jest również używana podczas korzystania z opcji -e wbudowanego odczytu. Domyślnie polecenia edycji linii są podobne do poleceń emacsa. ZA Dostępny jest również interfejs edycji linii w stylu vi. Edycja linii może być włączone w dowolnym momencie przy użyciu opcji -o emacs lub -o vi do zestawu builtin (zobacz POWŁOKI WBUDOWANE POLECENIA poniżej). Aby wyłączyć edycję linii po uruchomieniu powłoki użyj opcji + o emacs lub + o vi do ustaw wbudowany.

1 dla odpowiedzi nr 4

Z tego co wiem, readline jest tym, co zapewnia funkcję edycji linii dla basha.

Jedno zastrzeżenie: po naciśnięciu v w trybie poleceń vi otrzymujesz pełny efekt vi edytor do edycji linii poleceń.

Od man bash:

CZYTAJ LINIĘ
Jest to biblioteka, która obsługuje wejścia do czytania podczas korzystania z powłoki interaktywnej, chyba że --noediting opcja jest podana przy wywołaniu powłoki. Domyślnie polecenia edycji linii są podobne do poleceń emacsa. Dostępny jest również interfejs edycji linii w stylu vi. Aby wyłączyć edycję linii po uruchomieniu powłoki, użyj znaku +o emacs lub +o vi opcje do set wbudowany.

Gdy powłoka wyświetla monit (o ile nie jesteś w trybie edycji), jesteś ponownie już za pomocą readline. Będziesz w trybie emacs lub trybie wstawiania vi (dlatego możesz po prostu użyć ESC aby powrócić do trybu poleceń vi).