Configura o modo vi do Bash para o modo Vi “normal” (não “insert”), e coloca o cursor no início da linha, imitando o KornShell

4

Estou tentando fazer com que o Bash imite o comportamento do KornShell93 ( ksh ) quando os shells estiverem no modo de edição da linha de comando do Vi.

O padrão do KornShell é "Vi normal mode" (também conhecido como modo "comando") e também posiciona o cursor no início da linha de comando quando retrocede no histórico da linha de comando. Isso está em contraste com o Bash, que coloca você no "modo de inserção do Vi" e no final da linha de comando.

Nas respostas para " Configuração do modo Bash vi para usar como padrão o modo de comando ", praticamente concluiu que não há como o Bash usar como padrão o" Vi normal mode "quando a edição da linha de comando do Vi estiver ativada.

Isso foi há mais de cinco anos e gostaria de saber se isso mudou desde então?

E quanto a colocar automaticamente o cursor no início da linha de comando? Existe alguma coisa para mim desconhecida? Readline magic que pode me ajudar com isso?

Estou usando o Bash versão 4.4.5 (1) - liberado compilado da fonte (o OpenBSD shells/bash port) no OpenBSD-current (janeiro de 2017).

    
por Kusalananda 08.07.2016 / 09:17

1 resposta

1

Parece que não há maneira adequada de inserir um Esc na linha de comando.

Enquanto em vi-insert mais alpha/numeric chaves são usadas. Esc é bem distante, e qualquer acorde (como Alt-j (que funciona)) parece mais complexo do que o desejado. Portanto, existe uma maneira de converter duas chaves em uma string configurável.

A solução funciona usando a ideia de Esta resposta

Basta adicionar isso a .inputrc :

 set editing-mode vi
 set vi-ins-mode-string \e[6 q
 set vi-cmd-mode-string \e[2 q

 set keymap emacs
 "\ee": vi-editing-mode
 "jk": "\eejk"
 "kj": "\eejk"

 set keymap vi-insert
 "\ee": emacs-editing-mode
 "jk": vi-movement-mode
 "kj": vi-movement-mode

 set keymap vi-command
 "\ee": emacs-editing-mode

Por isso, independentemente de onde você inicia emacs ou vi , pressionar jk colocará você no modo de comando vi no início da linha .

Além disso, permite alternar para o modo emacs com Esc - e .

    
por 29.11.2018 / 07:42