Предпосылки для этого вопроса: в настоящее время мне приходится выполнять большую часть своей работы в терминале через ssh, и я довольно часто использую экран. Поскольку привязка клавиш ctrl-a для экранных команд меня раздражает, так как я привык использовать ctrl-a для перехода к началу строки, я изменил ее на ctrl-z. Единственная проблема с этим состоит в том, что когда я нахожусь в Matlab, думаю, что я нахожусь в Screen, но это не так, нажатие ctrl-z мгновенно завершит мой сеанс Matlab, потому что ctrl-z - это связывание ключей для приостановки процессов в * nix.
Поэтому возникает вопрос: могу ли я удалить привязку клавиш для ctrl-z в моей оболочке, чтобы она больше не приостанавливала процесс?
Моя оболочка является Terminal.app на OSX.
fg
(поместите ее снова на передний план).Ответы:
^ZСвязывания не настроен в оболочке, но в вашем TTY , псевдо-устройство , которое позволяет говорить с физическим терминалом , или, как это обычно бывает в наше время, в программу - эмулятор терминала. TTY содержит настройки, которые сообщают ядру, как реагировать на ввод с клавиатуры, сообщаемый устройством или эмулятором.
Настройки изменяются с помощью
stty
команды:stty
принимает имя настройки и ее значение; в этом случае имя параметраsusp
для ключа, который приостанавливает процесс, а значение представляет собой комбинацию клавиш, например ^P. Введитеstty -a
или обратитесь кman stty
списку доступных настроек.источник
Вы можете обернуть ваш matlab в скрипт, названный
matlab.sh
так:Это будет игнорировать сигнал TSTP, обычно отправляемый Ctrl-Z.
источник
Другая возможность состоит в том, чтобы выбрать другой экранирующий символ для экрана.
Я использую нулевой символ. У меня есть следующее в моем
$HOME/.screenrc
:Нулевой символ (обычно) можно ввести как Ctrl-Space, что очень легко набрать. И, конечно, если мне нужно отправить в программу фактический нулевой символ (например, он связан с
set-mark-command
Emacs), я просто набираю Ctrl-Spaceдважды.(Это иногда вызывает проблемы, когда я использую устройство или эмулятор терминала, который не может отправить нулевой символ, но это редко.)
Другая возможность Ctrl-]:
который также легко набирать на клавиатуре США. (Я на самом деле использую это в сеансе экрана, который запускается внутри моего основного сеанса экрана, но это, вероятно, больше, чем вы хотите знать.) Единственный конфликт, с которым я обычно сталкиваюсь, это то, что это управляющий символ по умолчанию для
telnet
команды.источник