Я наткнулся на предложение в vimdoc:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
и этот ключ действительно висит мой VIM. Я думал, что это была ошибка vim, так как при использовании C-s
/ C-x C-s
в emacs nox проблем не было . Однако только сейчас, когда я читал man-страницу и нажимал Ctrl-s
, она также зависает man
(я устанавливаю less
в качестве ПЕЙДЖЕРА).
Так может кто-нибудь сказать мне, что происходит?
Эмуляторы терминала есть xterm
и lxterminal
, а tty
также имеет эту проблему. А Ctrl+ qснова исправляет процесс во всех случаях.
C-q
снова включить прокрутку, верно?ctrl-s
процесс зависает.C-s
иC-q
были старые времена "тумблер блокировки прокрутки". Вы можете отключить эту функцию, добавивstty ixany
иstty ixoff -ixon
к вашему.bashrc
Ответы:
Эта функция называется Software Flow Control (управление потоком XON / XOFF)
Когда один конец канала передачи данных (в данном случае эмулятор терминала) не может получить больше данных (поскольку буфер заполнен или почти заполнен, или пользователь отправляет
C-s
), он отправит «XOFF», чтобы сообщить отправляющему концу Передача данных для паузы до получения сигнала «XON».Под капотом происходит то, что «XOFF» говорит драйверу TTY в ядре перевести процесс, который отправляет данные, в состояние сна (например, приостановку фильма), пока драйвер TTY не отправит «XON», чтобы сообщить Ядро, чтобы возобновить процесс, как будто он никогда не был остановлен в первую очередь.
C-s
включает блокировку прокрутки терминала. Что предотвращает прокрутку вашего терминала (Посылая сигнал «XOFF», чтобы приостановить вывод программного обеспечения).C-q
отключает блокировку прокрутки. Возобновление прокрутки терминала (Посылая сигнал «XON» для возобновления вывода программного обеспечения).Эта функция является устаревшей (когда терминалы работали очень медленно и не допускали прокрутку) и включена по умолчанию.
Чтобы отключить эту функцию , вам нужно следующее либо
~/.bash_profile
или~/.bashrc
:источник
В конце моего
.bashrc
сценария я добавил:источник