5

Когда я нахожусь в процессе ввода строки в свою оболочку выбора и передумаю, я могу быстро бросить C-c и начать все заново. Под bash это выглядит так:

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

Но на zsh , который я действительно предпочитаю в целом, ничего не показывает:

(~) rm -rf /
(~) 

Да, вы можете понять, почему я хотел бы видеть этот символ вставки C или подобное по строке, чтобы я не путал, какая строка была фактически выполнена и находится в истории в этом отношении.

Эта небольшая проблема в значительной степени не для Google.

1 ответ1

6

Вы можете определить ловушку для SIGINT (вызванную CTRL-C), которая будет печатать ^C (или любой другой текст, который вы захотите):

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

Этот пример взят из man zshmisc . Команда возврата имеет следующий фон:

Программы, завершенные неперехваченными сигналами, обычно возвращают статус 128 плюс номер сигнала. Следовательно, [приведенный выше код] заставляет обработчик SIGINT печатать сообщение, а затем имитировать обычный эффект сигнала.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .