/ / Използване на баши на VI или emacs - bash, libreadline

Използване на басите на vi или emacs - bash, libreadline

От гледна точка на програмирането, когато зададете shell shell да използва vi или emacs чрез

set -o vi

или

set -o emacs

Какво всъщност се случва тук? Аз чета една книга, където твърди, че bash shell използва някой от тези редактори за входа към самата обвивка, но мислех, че може да е използвала readline.

Отговори:

5 за отговор № 1

Баш все още използва readline. Readline използва или emacs, или vi mode и настройва превключвателите на режими между различните режими на редактиране. Можете да проверите папката lib / readline в базовия изходен код, за да видите различните връзки на клавишите.


1 за отговор № 2

Според страницата на BASH_BUILTINS (1) (по Fedora 8):

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

... (пропускане на всички опции за единична буква)

-о опция-име Името на опцията може да бъде едно от следните:

...

            emacs Използвайте интерфейс за редактиране на команден ред в стил emacs. Това е активирано по подразбиране, когато черупката е интерактивна, освен ако shell се стартира с опцията --noediting.
...
vi Използвайте интерфейс за редактиране на команден ред в стил vi.
Аз тълкувам това, което означава, че bash директно интерпретира командите за редактиране на линии. Тази опция просто определя кой команден набор да се използва. Вижте страницата на човека за readline (3).


1 за отговор № 3

Той използва клавишите, които са познати на потребителите на един от тези редактори, за да редактират командния ред.

Readline е съоръжението, което осигурява тази функция за Баш и други програми.

от man bash:

Readline Това е библиотеката, която обработва четенетокогато използвате интерактивен tive shell, освен ако опцията --noediting е дадена при призоваване на shell. Редактирането на линии се използва и при използване на опцията -e към вградения вграден файл. По подразбиране командите за редактиране на реда са подобни на тези на emacs. А интерфейс за редактиране на линии в стила vi. Редактирането на линията може да бъде активиран по всяко време, като използвате опциите -o emacs или -o vi към комплекта вграден (виж SHELL BUILTIN COMMANDS по-долу). За да изключите редактирането на линии след като корпусът се изпълнява, използвайте опциите + o emacs или + o vi към вграден вграден.

1 за отговор № 4

От това, което знам, readline е това, което осигурява функционалността за редактиране на линии за bash.

Едно условие: когато натиснете v в режим на команда vi, вие получавате пълна издуха vi редактор, за да редактирате командния ред.

от man bash:

Readline
Това е библиотеката, която обработва вход за четене при използване на интерактивен корпус, освен ако не е --noediting опцията се дава при позоваване на shell. По подразбиране командите за редактиране на реда са подобни на тези на emacs. Интерфейс за редактиране на линии в стила vi е също на разположение. За да изключите редактирането на линии, след като черупката работи, използвайте +o emacs или +o vi опции към set Вградената.

Когато корпусът ви покаже подкана (освен ако не сте в режим без редактиране), вие сте вече използвайки readline, Вие ще бъдете в режим emacs или в режим на вмъкване (което е причината, поради която просто можете да използвате ESC за да се върнете в режим на командата vi).