Използване на Ctrl+S в терминал

Публикувано на

Като бивш Windows потребител намирам Ctrl+s за много удобен шорткът за запис на текущия файл, който се редактира. Когато обаче се ползва текстов редактор през терминал при натискане на тази комбинация всичко замръзва. Някой хора дори се стресират (в това число съм бил и аз) и се е стигало до kill-ване на приложението. Това се случва тъй като Ctrl+S изпраща XOFF сигнал към терминала. Това означава, че се спира предаването на данни към терминала (в случая нашият екран). За да върне всичко в нормален режим трябва да се изпрати XON сигнал, което се прави с Ctrl+Q. Повече за това може да се прочете в Wikipedia на страницата Software Flow Control.

В съвременните клавиатури си има бутон ScrollLock, който служи за изпращане на XOFF и XON сигнали.Следователно, би трябвало да можем да използваме клавишните комбинации Ctrl+S, Ctrl+Q (особенно Ctrl+S) за нещо друго. В Konsole (терминалният емулатор на KDE) има отметка в настройките и проблема е решен. Да обаче не всеки терминален емулатор има такава настройка. Решението се оказва много просто. Във .bashrc (ако използвате BASH за стандартен shell) трябва да се добави следния ред:

stty -ixon

Така се спира изпращането на сигналите XON и XOFF към терминала и може Ctrl+S да се map-не към командата Save във Vim например.

blog comments powered by Disqus