Como mostrar um caret-C na linha de comando cancelada no zsh, como o bash faz?

5

Quando eu estou no meio de entrar em uma linha para o meu shell de escolha, e mudar de idéia, eu posso jogar rapidamente C-c e começar de novo. Em bash , é assim:

user@machine:~$ rm everything^C
user@machine:~$ 

Mas no zsh , que eu realmente prefiro em geral, não mostra nada:

(~) rm -rf /
(~) 

Sim, você pode ver por que eu gostaria de ver essa mensagem caret-C ou similar sobre a linha para que eu não confunda qual linha foi realmente executada e está na história.

Esta pequena questão é em grande parte ignorável.

    
por progo 06.11.2014 / 12:09

1 resposta

6

Você pode definir uma armadilha para SIGINT (acionada por CTRL-C ), que imprimirá ^C (ou qualquer outro texto que você queira):

TRAPINT() {
  print -n "^C"
  return $(( 128 + $1 ))
}

Este exemplo é retirado de man zshmisc . O comando de retorno tem o seguinte plano de fundo:

Programs terminated by uncaught signals typically return the status 128 plus the signal number. Hence the [above code] causes the handler for SIGINT to print a message, then mimic the usual effect of the signal.

    
por 06.11.2014 / 19:01