(definir um desativa o outro. Você pode fazer set -o vi +o vipara desarmar ambos)
Checar:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
Essa sintaxe vem de ksh. O set -o vié POSIX. set -o emacsnão é (como Richard Stallman se opôs ao emacsmodo especificado pelo POSIX), mas muito comum entre as implementações de shell. Alguns shells suportam modos de edição extras. [[ -o option ]]não é POSIX, mas suportado por ksh, bash e zsh. [ -o option ]é suportado por bash, kshe yash(observe que -otambém é um operador OR binário para [).
Para
set
:Ou:
(definir um desativa o outro. Você pode fazer
set -o vi +o vi
para desarmar ambos)Checar:
Essa sintaxe vem de
ksh
. Oset -o vi
é POSIX.set -o emacs
não é (como Richard Stallman se opôs aoemacs
modo especificado pelo POSIX), mas muito comum entre as implementações de shell. Alguns shells suportam modos de edição extras.[[ -o option ]]
não é POSIX, mas suportado por ksh, bash e zsh.[ -o option ]
é suportado porbash
,ksh
eyash
(observe que-o
também é um operador OR binário para[
).Como sua pergunta é específica sobre o bash:
Para configurá-lo permanentemente para cada nova sessão:
ou (recomendado), adicione (ou altere) uma linha em ./inputrc:
Isso definirá o modo de edição do readline que é usado por vários outros programas além do bash.
É fácil desarmar ambas as opções:
Para definir um:
Ou
O mesmo para
emacs
. Configuração devi
desarmesemacs
e vice-versa.Para listar o estado:
Ou ambos ao mesmo tempo:
Para testar se
vi
está definido:Ou (sintaxe ksh):
emacs:
Ou:
ou, para testar se nenhuma opção está definida:
Há também
bind -V | grep editing-mode
.man bash
é enorme, mas vale a pena ler em profundidade.