Tmux блокирует Ctrl-s в OSX ML

Я использую iTerm2 + Tmux + Vim.

Вот мои dotfiles: https://bitbucket.org/furion/dotfiles/src

Проблема, с которой я сталкиваюсь, заключается в том, что когда Vim открывается в сеансе Tmux, привязка C-s не работает.

Когда я запускаю Vim только в обычном сеансе iTerm2, C-s работает нормально. Поскольку я часто использую это нажатие клавиши, это действительно расстраивает.

Кроме того, эта проблема присутствует только в OSX. На моем Arch box, с Tmux или без него, все работает нормально.

РЕДАКТИРОВАТЬ: у меня уже отключен поток управления:

bind -r '\C-s'
stty -ixon
stty stop undef

Эта проблема только на OSX. Кроме того, это только под Tmux на OSX. Без Tmux нет проблем. В Arch Linux с Tmux или без него проблем нет.


person if __name__ is None    schedule 05.09.2013    source источник
comment
вы задали аналогичный вопрос здесь /questions/17991007/ решение там не помогает?   -  person Kent    schedule 06.09.2013
comment
Нет, это была другая проблема, которая была решена. В то время я заставил его работать над Arch.   -  person if __name__ is None    schedule 06.09.2013
comment
Я проверил ваш .vimrc, вы хотите сделать :w при нажатии <c-s>? но эта строка была закомментирована.   -  person Kent    schedule 06.09.2013
comment
Нет, я использую его в Ctrl-P Plugin, чтобы открывать файлы в разделенных буферах. У меня очень сильная мышечная память на :w, так что я мог бы убрать там C-s.   -  person if __name__ is None    schedule 06.09.2013
comment
У меня такая же проблема, и я не нашел решения. Он прерывистый, почти случайный. Выход из vim и его повторный запуск исправляет это на некоторое время. Я думаю, что это должно быть что-то, связанное с тем, что vim путается с чем-то, что делает tmux. Может дело в мышах? Я не знаю. Дерьмо... vim только что рухнул на меня. Мне нужно идти...   -  person Sukima    schedule 13.09.2013


Ответы (3)


Вероятно, это связано с управлением потоком: исторически (и до сих пор на некоторых терминалах) Ctrl-S приостанавливает вывод, а Ctrl-Q возобновляет его.

iTerm2 игнорирует Ctrl-S, поскольку предполагает, что он не используется для управления потоком в мире, где модемы на 300 и 2400 бод не так уж распространены.

Я не уверен, но думаю, что stty -ixon может помочь.

(Я предварительно отвечаю, так как прошло 5 часов, но я могу быть далеко от решения, хотя я думаю, что причина верна).

person Amadan    schedule 06.09.2013

Я понял, как это исправить, но я не знаю, почему это происходит

Я делаю команду TMUX для перезагрузки файла конфигурации, а также запускаю stty -ixon.

Это необходимо сделать вручную, даже если это установлено в .bashrc или .profile, так как проблема проявляется после инициализации.

Вот соответствующая строка конфигурации TMUX:

bind-key r run "tmux source-file ~/.tmux.conf; stty -ixon"
person Sukima    schedule 04.08.2015
comment
Я искал решение этой проблемы целую вечность! Для других, пробующих это, если вы получаете ошибку при перезагрузке, попробуйте добавить ; true после ssty -ixon, чтобы подавить это. - person Nicolai S; 22.11.2015

Я нашел этот вопрос при попытке решить проблему Ctrl-S в bash в iTerm на macOS, не активируя forward-search-history (он же: i-search), несмотря на наличие:

$ bind -p | grep 'forward-search-history'
"\C-s": forward-search-history

Я обнаружил, что НЕ решило проблему, поместив stty -ixon в .bashrc, но вставив .bash_profile, она решает ее. Так что, возможно, это поможет другим, которых Google ведет здесь.

$ grep stty ~/.bash_profile
stty -ixon
person Bruno Bronosky    schedule 25.10.2019