adicione estas duas linhas a ~ / .inputrc :
set vi-ins-mode-string \e[5 q
set vi-cmd-mode-string \e[2 q
Para esclarecer: Eu não estou perguntando como alterar o cursor ao usar o vim dentro de um terminal . Eu quero o cursor para mudar quando alternar entre o modo de entrada e comando no modo de vi do Bash:
set -o vi <CR> type some text <ESC> (the cursor changes shape/color)
i (cursor change back) etc...
Eu encontrei um script que torna possível alterar a cor do cursor em alterações de modo em zsh , mas não quero alterar os shells apenas para esse recurso.
Existe uma maneira de fazer com que o cursor mude de forma, como em gvim, (ou mesmo apenas cor) ao alternar entre os modos de comando e inserção na linha de comando do Bash?
adicione estas duas linhas a ~ / .inputrc :
set vi-ins-mode-string \e[5 q
set vi-cmd-mode-string \e[2 q
Copiado daqui - Edição de linha de comando do estilo vim
Deve estar disponível em bash
4.3 - consulte o changelog -
j. New user-settable variable, show-mode-in-prompt, adds a characters to the
beginning of the prompt indicating the current editing mode.
bash
4.3 está atualmente no estágio rc
, você deve conseguir pacotes para a maioria das distribuições sem compilar a partir do código-fonte, mas não nos repositórios principais. Por exemplo. Ubuntu (amd64) aqui e Debian (repositório experimental) aqui .
Não encontrei uma solução real, mas talvez isso possa ajudar você (ou outra pessoa) a encontrar uma solução melhor.
Você precisa criar um script (por exemplo, kmtest.sh)
#!/bin/bash
# Script "kmtest.sh"
TEST='bind -v | awk '/keymap/ {print $NF}''
if [ "$TEST" = 'vi-insert' ]; then
echo -ne "3]12;Greenexport PS1="\u@\h \$(kmtest.sh)> "
7"
else
echo -ne "3]12;Red#!/bin/bash
# Script "kmtest.sh"
TEST='bind -v | awk '/keymap/ {print $NF}''
if [ "$TEST" = 'vi-insert' ]; then
echo -ne "3]12;Greenexport PS1="\u@\h \$(kmtest.sh)> "
7"
else
echo -ne "3]12;Red%pre%7"
fi
7"
fi
e depois de adicioná-lo ao seu PS1, algo como:
%pre%mas como eu disse, não é o que você quer, porque muda a cor do cursor somente depois de um cr. Boa sorte
gb
Embora não seja exatamente o que você quer (mudando dinamicamente o cursor), bash 4.4 / readline 7.0 adicionará suporte para alterar dinamicamente o prompt . Você poderá especificar indicadores de modo personalizados para os modos de inserção / comando (Isso é diferente da opção show-mode-in-prompt
atual, que é codificada para usar +
e :
).
Nesse ínterim, publiquei versões corrigidas do bash 4.3 / readline 6.3 no github com essa funcionalidade.
Eu fiz a mesma pergunta há algum tempo em AskUbuntu quando eu estava em transição do Gvim para o Console Vim.
Eu recebi uma resposta mas envolvia alternar as configurações do terminal do gnome, e essas configurações eram aplicadas nos terminais. Assim, era possível que o cursor do terminal gnome fosse preso no estado errado às vezes.
Ainda estou interessado em saber se você obtém uma solução satisfatória, mas, com o tempo, ajustei a falta de informações de estado do modo no cursor. Talvez eu apenas pressione escape com mais frequência (por exemplo, esc
para garantir que estou no modo de comando; esc i
para garantir que estou no modo de inserção); talvez eu olhe para o estado exibido na parte inferior da tela; talvez eu tenha acabado de internalizar o modo.
Tags bash vi line-editor