Como configurar a tecla de seta para exibir um comando de várias linhas?

3

Acabei de executar o comando abaixo no terminal:

$ while read i
> do
> echo $i
> done
4
4

Mas quando tentei executar novamente o comando usando o recurso de histórico de seta para cima, estou recebendo apenas um comando parcial, como abaixo:

$ while read i

Como imprimir todo em loop usando a seta para cima no KSH?

    
por Forever Learner 28.03.2018 / 07:34

1 resposta

4

A edição de linha no ksh original é bastante limitada. Você pode querer usar um de seus "clones", como zsh¹ ou bash.

Para o ksh93, descubro que, se você usar o modo de edição vi ( ksh -o vi ) em oposição ao emacs ou gmacs one, então chamar os comandos multilinha funciona , embora os caracteres de nova linha sejam renderizados como ^J . Isso também é o que você obtém com pdksh e suas derivadas em todos os modos de edição.

Note que você também pode inserir esses caracteres de nova linha com Ctrl + V Ctrl + J para que o código de múltiplas linhas seja inserido em uma linha e depois ser capaz de lembre-se disso mais tarde, mesmo no modo emacs .

Outra opção é usar fc para editar a linha anterior em um editor de texto real:

fc while

Chamaria seu editor preferido (em $FCEDIT , o padrão é ex em meu sistema) na última linha de comando (possivelmente multilinha) que continha while . E depois executá-lo depois de salvar e sair no editor.

¹ zsh também tem um modo de emulação ksh que faz com que ele se comporte mais próximo de ksh caso haja alguns comportamentos ksh nos quais você confia (inserido com emulate ksh ou ao invocar zsh as ksh )

    
por 28.03.2018 / 08:39

Tags