Cancelar a recuperação da linha de comando da shell

1

Pressionar a seta key up chamará o comando que você usou antes no shell.

Mas o que você faria se, na metade do caminho, navegar pelo histórico de seus comandos e decidir que deseja digitar um novo comando?

Pressionar a seta key down até o fim seria muito problemático. Pressionar ESC não limpará o comando como no Windows (estou vindo do plano de fundo do Windows).

Então, como limpar o comando instantaneamente? Eu pesquisei até agora mas só achei CTRL+C pode cancelar e ir para a nova linha. É a única maneira ou existe uma maneira melhor como ESC no Windows é claro diretamente? Obrigado.

    
por Voon 05.02.2012 / 04:09

4 respostas

2

Você deseja kill-whole-line , mas isso não é vinculado por padrão no bash. backward-kill-line ( Ctrl X Backspace ) e unix-line-discard ( Ctrl U ) apaga do ponto atual para o começo da linha, então vá para o final da linha e use um dos dois.

    
por 05.02.2012 / 04:18
1

Para bash :

Você precisa da sequência de teclas que está vinculada à ação end-of-history . Por padrão, conforme §8.4.2 do Manual do Usuário do Bash, isso é Meta + > , onde Meta é qualquer que seja o "meta" A tecla modificadora está no seu terminal ou programa emulador de terminal. (Consulte a documentação e configurações do seu terminal para a escolha apropriada.)

end-of-history leva você diretamente até o final da lista do histórico, ou seja, de volta à linha na qual você estava inserindo antes de voltar para o histórico.

Para o Z Shell:

Você precisa da sequência de teclas que está vinculada ao widget end-of-buffer-or-history . Por padrão, conforme §18.6.2 do Z Manual de Referência da Shell, isso é Esc > no mapa de teclado emacs . (Note que isto é especificamente um Esc prefixado, não Meta , mesmo que o emulador de terminal possa acontecer mapear Meta para um Esc prefixado.)

end-of-buffer-or-history só leva você ao final da lista de histórico se você estiver no final do buffer quando invocá-lo. Então, se você estiver no meio do buffer, você terá que pressionar a seqüência de teclas duas vezes: uma vez para chegar ao fim do buffer e uma segunda vez para chegar ao fim do histórico.

    
por 06.02.2012 / 16:27
0

Além de CTRL + C que você mencionou. Eu achei pressionando ESC e então Backspace irá deletar a linha (alguns caracteres excluídos) até um caracter não alfabético.

    
por 05.02.2012 / 04:23
0

Se você estiver usando 'set -o vi', basta fazer o seguinte:

^C
    
por 06.02.2012 / 02:01