Відповіді:
Оскільки ваше питання стосується bash:
Щоб встановити його назавжди для кожного нового сеансу:
echo 'set -o vi' >> ~/.bashrc
або (рекомендовано), додайте (або змініть) рядок у ./inputrc:
set editing-mode vi
Це встановить режим редагування readline, який використовується декількома іншими програмами поряд з bash.
Зняти обидва варіанти легко:
shopt -ou vi emacs
Щоб встановити його, виконайте такі дії:
set -o vi
Або
shopt -os vi
Те саме для emacs. Встановлення viскипів emacsі навпаки.
Щоб перерахувати стан:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Або обидва відразу:
$ shopt -op emacs vi
set +o emacs
set -o vi
Щоб перевірити, чи viвстановлено:
shopt -oq vi && echo vi is set
Або (ksh синтаксис):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
Або:
[[ -o emacs ]] && echo emacs is set
або, щоб перевірити, що жодна опція не встановлена:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
До set:
set -o vi
Або:
set -o emacs
(встановлення однієї функції скасовує іншу. Ви можете set -o vi +o viскасувати обидва)
Перевіряти:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
Цей синтаксис походить ksh. Це set -o viPOSIX. set -o emacsце не (як заперечив Річард Сталлман щодо emacsрежиму, визначеного POSIX), але дуже поширений серед реалізацій оболонок. Деякі оболонки підтримують додаткові режими редагування. [[ -o option ]]не POSIX, але підтримується ksh, bash та zsh. [ -o option ]підтримується bash, kshі yash(зауважте, що -oце також двійковий АБО оператор [).
set -o | egrep -w '^emacs|vi'поверне, чи встановлено emacs або vi.