1

Я хотел бы перегрузить Ctrl+S и Cmd+S, чтобы сохранить файл, если мне случится редактировать что-то в Vim.

После некоторого головокружения я думаю, что обнаружил, что ^S в терминале, возможно, перехватывается оболочкой для отправки сигнала процессу, или, возможно, Vim делает что-то особенное, чтобы не слушать его. У меня есть Perl-скрипт, который переводит термин в необработанный режим, который может очень хорошо читать мои отображения (^S отправляет hex 0x13), но ничего не происходит, когда я в режиме Vim Ctrl+V дословно и печатаю его. В голой оболочке zsh дословный режим показывает, что я нажимаю ^S Кажется, это опровергает предположение о том, что к этому ключу привязано управление потоком терминальной программы, так как я могу заставить zsh его увидеть.

Как я могу заставить vim распознавать мои Ctrl+S?

2 ответа2

2

^S - это символ ASCII XOFF. Вместе с XON (^Q) они являются двумя управляющими сигналами, используемыми для программного управления потоком.

Они перехватываются не оболочкой, а терминалом, который перехватывает ^S что означает остановку вывода терминала, и ^Q что означает возобновление его.

Вы можете настроить свой терминал (используя stty -ixon -ixoff), чтобы игнорировать их, отключив программное управление потоком данных, но это может быть бесполезно: не рекомендуется пытаться назначать другие функции XON и XOFF, потому что может быть что-то еще в сеанс пользователя (удаленный терминал, модем, некоторое другое оборудование RS-232), который их интерпретирует.

1

stty -ixonstty -ixoff для хорошей меры) сделал это для Terminal.app, iTerm2.

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