/ / Використання vi або emacs - bash, libreadline

Використання vi або emacs - bash, libreadline

З точки зору програмування, коли ви встановлюєте оболонку bash, використовуйте vi або emacs через

set -o vi

або

set -o emacs

Що насправді відбувається тут? Я читав книгу, де він стверджує, що оболонка bash використовує будь-який з цих редакторів для введення в саму оболонку, але я думав, що він міг використовувати readline.

Відповіді:

5 за відповідь № 1

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


1 для відповіді № 2

Відповідно до сторінки man BASH_BUILTINS (1) (на Fedora 8):

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

... (пропускаючи всі варіанти однієї літери)

-о варіант-ім'я Ім'я параметра може бути одним з таких:

...

            emacs Використовуйте інтерфейс редагування командного рядка у стилі emacs. Це включено за замовчуванням, коли оболонка є інтерактивною, за винятком оболонка запускається з опцією --noediting.
...
vi Використовуйте інтерфейс редагування командного рядка vi-стиля.
Я розумію, що це означає, що bash безпосередньо інтерпретує команди для редагування рядків. Цей параметр просто встановлює, яку команду потрібно використовувати. Дивіться сторінку man для readline (3).


1 для відповіді № 3

Він використовує натискання клавіш, які знайомі користувачам одного з цих редакторів для редагування командного рядка.

Readline - це об'єкт, який надає цю функцію Bash та іншим програмам.

Від man bash:

READLINE Це бібліотека, яка обробляє читаннявведення при використанні інтерфейсу tive оболонки, за винятком випадків, коли опція --noediting задана при виклику оболонки. Редагування рядка також використовується при використанні параметра -e для читання вбудованого. За замовчуванням команди редагування рядків схожі на файли emacs. А. Інтерфейс редагування рядків у стилі vi також доступний. Лінійне редагування може бути увімкнуто в будь-який час за допомогою параметрів -o emacs або -o vi до набору вбудований (див. SHELL BUILTIN COMMANDS нижче). Щоб вимкнути редагування лінії після запуску оболонки використовуйте параметри + o emacs або + o vi встановити вбудований

1 для відповіді № 4

З того, що я знаю readline Це те, що забезпечує функцію редагування рядків для bash.

Одна умова: коли ти натискаєш v у командному режимі ви отримуєте повний удар vi редактор для редагування командного рядка.

Від man bash:

READLINE
Це бібліотека, яка обробляє введення даних під час використання інтерактивної оболонки, за винятком --noediting опція дається при виклику оболонки. За замовчуванням команди редагування рядків схожі на файли emacs. Інтерфейс редагування ліній у стилі vi також доступний. Щоб вимкнути редагування рядків після запуску оболонки, використовуйте +o emacs або +o vi варіанти до set побудований

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