readline reverse-search-histórico C-r encontra repetidamente o próximo cmd, como voltar ao anterior?

2

Esta é provavelmente uma pergunta muito simples, mas eu realmente gostaria de descobrir se isso é possível.

Se eu iniciar uma pesquisa de histórico inverso com C-r e, em seguida, pressionar C-r novamente várias vezes eu posso procurar mais cmds no histórico.

Ao pressionar C-r rapidamente, muitas vezes sinto falta de um cmd que desejo usar, então eu gostaria de encontrar uma maneira de voltar ao cmd anterior.

É possível com a versão atual da readline?

    
por Peter Slotko 23.06.2013 / 09:06

2 respostas

2

O comando forward-search-history faria o que você quisesse - ele executaria uma pesquisa incremental na direção de avanço e, se você já estivesse no modo de pesquisa incremental, apenas mudaria a direção da pesquisa, mantendo a string de pesquisa atual. / p>

O problema é alcançar esse comando. As ligações padrão de Readline contêm:

"\C-r": reverse-search-history
"\C-s": forward-search-history

Mas C-s é o caractere de controle de fluxo do terminal, que não alcança bash (embora funcione em programas como o Emacs, que alteram as configurações do terminal para desabilitar o processamento do controle de fluxo). Portanto, a ligação padrão é inútil e você precisa vincular outra chave ao comando forward-search-history .

Outro problema é que as combinações de teclas com o modificador Meta não funcionam para incrementais search - o modificador Meta, na verdade, adiciona o prefixo ESC e o ESC finaliza a pesquisa incremental, mesmo quando é removido do valor da variável isearch-terminators . Combinações com o prefixo C-x também não funcionam - pressionar C-x encerra imediatamente a pesquisa incremental. Portanto, você precisa ligar um C-<key> simples ao comando forward-search-history ; no entanto, todos esses caracteres de controle já são tomados por comandos readline, portanto, você precisará sacrificar outro comando para liberar uma chave para forward-search-history .

Exemplo ~/.inputrc para usar C-t para a pesquisa direta (substituindo o comando transpose-chars ):

"\C-t": forward-search-history
    
por 23.06.2013 / 09:57
1

Você pode desativar o controle de fluxo XON / XOFF:

stty -ixon

no seu ~ / .profile ou similar, então o Ctrl + S será reconhecido.

Exemplo

    
por 15.01.2017 / 17:50