Відповіді:
Оскільки ваше питання стосується 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 vi
POSIX. 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.