З точки зору програмування, коли ви встановлюєте оболонку 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).