Como vincular corretamente a biblioteca GNU readline corrigida a todos os programas existentes?

Meu problema original era que eu queria uma maneira de distinguir entre estar no modo vi-command ou vi-insert enquanto estiver usando o bash no modo vi. Entendo que a partir do GNU readline 7.0, existe uma maneira de definir um indicador no prompt de comando; no entanto, o que eu quero é mudar a forma do cursor (ou seja, uma linha vertical no modo de inserção e um bloco sólido no modo de comando).


NOTA: Eu já tentei colocar o seguinte no meu .inputrc, que fez o truque, mas causou alguns problemas ao retornar ao início da linha no modo de comando, então concluí que não era uma boa alternativa.

set show-mode-in-prompt on
set vi-cmd-mode-string "\e[2 q"
set vi-ins-mode-string "\e[6 q"


Me deparei com um artigo escrito por alguém que estava com o mesmo problema e, finalmente, decidi corrigir a biblioteca GNU readline, vinculada aqui abaixo:

http://blog.mkoskar.com/2010/10/gnu-readline-vi-mode-visualization.html http://blog.mkoskar.com/2010/11/gnu-readline-vi-mode-visualization-2.html


Até agora, consegui aplicar o patch com sucesso e compilar / instalar a biblioteca (localmente ... eu preferiria manter a versão sem patch instalada, caso eu quisesse voltar), mas o bash parece ainda estar usando o original.

Aqui estão os detalhes importantes:

1) Oremendado arquivos de biblioteca (estáticos e dinâmicos) estão localizados no meu computador em$ HOME / .local / lib /.
2) Os arquivos da biblioteca original (somente dinâmico) que determinei estão localizados em/ lib / x86_64-linux-gnu /.
3) Minha variável de ambiente LD_LIBRARY_PATH está configurada como$HOME/.local/lib: dentro do meu .bashrc.


Mesmo com a versão corrigida instalada e minha variável LD_LIBRARY_PATH definida corretamente, o Bash ainda parece não usar minha biblioteca de linha de leitura GNU corrigida. Gostaria de saber se há algo que estou fazendo de errado?

Espero que o problema não seja o fato de o Bash vir com a biblioteca readline já vinculada estaticamente, o que exige, suponho, que eu reinstale o Bash (assim como qualquer outro programa que utilize essa biblioteca, como o iPython), vinculando manualmente a versão corrigida de readline.


SOLUÇÃO

Embora não seja a solução para a pergunta listada no título, esta é a solução para o problema original que eu estava tendo. Depois de examinar as páginas de manual do Readline, deparei-me com as seguintes descrições paravi-cmd-mode-string evi-ins-mode-string:

vi-cmd-mode-string ((cmd))
       This  string  is  displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode.  The value is expanded like a key binding, so the
       standard set of meta- and control prefixes and backslash escape sequences is available.  Use the \1 and \2 escapes to begin and end sequences of non-printing characters, which  can  be
       used to embed a terminal control sequence into the mode string.
vi-ins-mode-string ((ins))
       This  string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode.  The value is expanded like a key binding, so the
       standard set of meta- and control prefixes and backslash escape sequences is available.  Use the \1 and \2 escapes to begin and end sequences of non-printing characters, which  can  be
       used to embed a terminal control sequence into the mode string.

A parte sobre o\ 1 e\ 2 Escapa é o material mais importante ...


Então, basicamente, colocar o seguinte no meu .inputrc me permitiu definir a forma do cursor, dependendo do modo vi atual:

set show-mode-in-prompt on
set vi-cmd-mode-string "\1\e[2 q\2"
set vi-ins-mode-string "\1\e[6 q\2"

questionAnswers(0)

yourAnswerToTheQuestion