Первоначально опубликовано на Unix.stackexchange.com, но я не могу проголосовать за этот ответ, поэтому это копия:
Значение «убить» Ctrl+ Cочень старое, я думаю, даже старше, чем Unix. Википедия восходит к TOPS-10, который датируется концом 1960-х годов. В статье объясняется, почему Ctrl+ Cбыл разумным выбором: в ASCII, который был опубликован в 1963 году, соответствующий символ - ETX, конец текста . Отсутствие символа, означающего «стоп» ¹, символ, означающий «этот сегмент ввода окончен», был разумным выбором для обозначения «остановить текущую обработку».
«Копировать» значение « Ctrl+» Cпроисходит от Xerox PARC, изобретателя copy-paste в его современной форме (и большинства других основ графического пользовательского интерфейса). Я не знаю точно, когда это было, но это должно было быть в конце 1970-х. В этой теме, посвященной обмену стеками пользовательского опыта, обсуждается выбор привязок клавиш; C для копирования имеет большой смысл.
У PARC было мало причин отклонять Ctrl+ Cдля копирования на основе существующего значения в терминалах TOPS-10 и Unix. Тогда операционные системы и приложения были более разнообразными, и гораздо меньше людей использовали компьютеры; не было ни возможности, ни призывать к единому стандарту для привязки клавиш во всех приложениях. Другое использование для Ctrl+ Cв популярных приложениях включает в себя переход на страницу вниз в WordStar ² и специфическую для режима команду в Emacs. Все они были разработаны независимо для приложений с часто разными требованиями, работающих в разных средах.
Вы можете настроить привязку клавиш терминала с помощью
stty
команды . Привязки терминала активны, когда терминал находится в режиме приготовления³. Например, командаstty intr ^G
устанавливает символ, который отправляет сигнал SIGINT на Ctrl+ Gвместо Ctrl+ C.^G
Символ BEL в ASCII; при отправке на терминал это означает «позвонить в звонок». Это символ, который Emacs использует для «прерывания текущей операции» (обоснование: приложение отправляет BEL пользователю через терминал для прерывания пользователя; пользователь отправляет BEL приложению через терминал для прерывания приложения). Он не имеет стандартного значения при отправке в терминал.Большинство оболочек предоставляют функции редактирования строк, поэтому они устанавливают терминал в сырой режим. Так делают приложения в полноэкранном текстовом режиме. Возможно, вам придется настроить эти приложения для распознавания Ctrl+ G вместо Ctrl+ C, а некоторые могут иметь ненастраиваемые привязки клавиш. Таким образом, изменение символа прерывания может или не может быть практически осуществимо в зависимости от того, какие приложения вы используете.
Другой подход может состоять в том, чтобы сконфигурировать ваш терминал для изменения последовательности байтов, которую он отправляет для Ctrl+ C цепочки ключей, или заставить его ничего не отправлять и вместо этого выполнять операцию копирования. Вы также выбрать другой keychord послать Ctrl+ C(если у вас есть не-ноутбук клавиатура компьютера, вы можете использовать вне пути- Pause/ Break ключ). Не все терминалы могут быть настроены таким образом.
¹ Ctrl-S (XOFF) означает остановку, но она адресована терминалу, а не приложению. ² рядом с Ctrl+ Xдля следующей строки, с Ctrl+ Eи Ctrl+ Rдля предыдущей строки и страницы; Эти клавиши были выбраны из-за их размещения на QWERTY-клавиатуре. ³ Nitpick: приготовленный режим - это набор настроек терминала, включая интерпретацию нескольких символов, в том числе тот, который посылает сигнал прерывания.