Я использую замазку (на Windows 7) для подключения к оболочке и Vim в качестве редактора. У меня также есть мышь = опция включена в Vim, но я получаю странное поведение (например, случайные вставки символов и / или разрывы строк), когда я нажимаю на правую часть окна Vim (скажем, это как 70%+ от область ширины экрана, где это становится странным). Я постепенно привыкаю к такому поведению, но мне бы очень хотелось узнать, смогу ли я как-нибудь это исправить.
2 ответа
PuTTY отправляет события мыши по протоколу xterm, который восходит к X10 в середине восьмидесятых годов. Это кодирует координаты мыши по одному байту для строки и столбца, в результате чего добавляется 32 (код ASCII для пробела). Это учитывает координаты до 223 (что составляет 255 - 32).
К сожалению, это кодирование не соответствует применимым стандартам для последовательностей управления терминалами, и диапазон может быть эффективно ограничен до 95 (т. Е. 127–32), если приложения не делают специальных допусков для него. В частности, если приложение выполняет декодирование UTF-8 до синтаксического анализа последовательности управления, координаты мыши за пределами 95 просто оказываются недействительными как UTF-8.
В течение прошлого года было предпринято несколько попыток решить эту проблему в xterm. Лучшим из них является так называемый режим SGR 1006, добавленный в патче № 277, в котором используется стандартная последовательность управления с неограниченными координатами. Поддержка этого будет медленно распространяться на другие терминальные эмуляторы и приложения.
Это было исправлено в Vim 7.3.632. Смотрите :h sgr-mouse
. Или просто поместите это в ваш ~/.vimrc
:
set ttymouse=sgr
Если вы хотите быть совместимым с версиями, в которых не скомпилирован mouse_sgr
, используйте:
if has("mouse_sgr")
set ttymouse=sgr
else
set ttymouse=xterm2
end
Чтобы проверить, есть ли в вашей версии Vim mouse_sgr
, запустите vim --version
из командной строки или в Vim введите :version
и найдите +mouse_sgr
.