Як встановити та визначити режим редагування командного рядка Bash?


10

Як встановити режим редагування viабо emacsкомандного рядка Bash AND як визначити, який режим наразі встановлений?

Відповіді:


6

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

16

До 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це також двійковий АБО оператор [).


Це працює і дивно, що визначити режим так важко.
Blcknx

4
set -o | egrep -w '^emacs|vi'поверне, чи встановлено emacs або vi.
Стівен Харріс

4

Є також bind -V | grep editing-mode.

man bash є величезним, але варто прочитати глибоко.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.