Quando falamos em manipulação de linha de comando, estamos falando sobre a biblioteca readline. A atualização das ligações readline pode ser feita a partir da linha de comando, como no exemplo, no arquivo init principal para readline /etc/inputrc
(verifique isso com echo $INPUTRC
) ou crie um init local para sua conta ~/.inputrc
. Se você ainda não consultou a biblioteca readline do GNU ( tente aqui )
Dito isto, aqui estão algumas sugestões para o seu problema:
Sugestão 1
- zsh usa readline e você provavelmente poderia inspecionar a ligação de chave para ESC-h (
\eh
) em uma conta com zsh e copiar essa ligação em sua conta com bash. Algumas pessoas realmente inteligentes colocaram essas ligações juntas e isso pode funcionar sem ajustes.- Em uma conta zsh, use o comando bind (
bind -P
[use a opção p minúscula para saída de ligação bruta]) para visualizar as ligações ativas em uma conta zsh. - Talvez seja necessário juntar os códigos reais da saída da ligação.
- Adicione a linha completa às suas ligações na sua conta bash (como você tentou fazer acima)
- Em uma conta zsh, use o comando bind (
Sugestão 2
- Siga o caminho no seu exemplo acima
Nessa nota, seu exemplo acima pode funcionar, mas é necessário um pequeno ajuste. Isso funcionou para mim
-
"\eh": "\C-a\C-kman \e1\e.\C-m\C-y\M-y"
Eu coloquei minha ligação em / etc / inputrc. Você deve reler o inputrc na linha de comando usando a seqüência de teclas ctrl+x ctrl+r
.
No entanto, sua pergunta é como fazer isso para a palavra sob o cursor. Isso funcionou para mim:
-
"\eh": "\ef\eb\ed\C-y\e#man \C-y\C-m\C-p\C-p\C-a\C-d"
Em suma, funciona assim:
Para a sequência de teclas \eh
(ESC + h)
- encontre primeiro o final da palavra e, em seguida, o início (
\ef\eb
) - elimine a palavra atual (aquela em que está interessado) e volte a colocá-la (
\ed\C-y
). Precisamos pegá-lo no buffer kill. - comente toda a linha de comando e vá para um novo prompt (
\e#
) - digite "man" na linha de comando (observe o espaço)
- cole seu comando de interesse na linha de comando e execute-o (
\C-y\C-m
) - encontre a segunda entrada (anterior) no histórico de comandos ("man" e depois o comando original) (
\C-p\C-p
). - vá para o início da linha e exclua o caractere de comentário (
\C-a\C-d
)
Sugestão 3
- Defina readline para usar o modo emacs e vi. Você pode usar a maioria dos seus comandos de edição favoritos e muito poderosos em suas combinações de teclas.
Nota: Eu não tentei implementar essa opção como uma ligação antes, mas eu a uso na linha de comando. Você pode definir isso através do arquivo inputrc ou bashrc.
- Em inputrc:
set editing-mode vi
- No bashrc:
set -o vi
O processo de fazer a ligação é parecido com as seqüências-chave readline padrão. Mas os exemplos na sugestão 2 devem colocá-lo no caminho certo.