5

Я использую замазку (на Windows 7) для подключения к оболочке и Vim в качестве редактора. У меня также есть мышь = опция включена в Vim, но я получаю странное поведение (например, случайные вставки символов и / или разрывы строк), когда я нажимаю на правую часть окна Vim (скажем, это как 70%+ от область ширины экрана, где это становится странным). Я постепенно привыкаю к такому поведению, но мне бы очень хотелось узнать, смогу ли я как-нибудь это исправить.

2 ответа2

7

PuTTY отправляет события мыши по протоколу xterm, который восходит к X10 в середине восьмидесятых годов. Это кодирует координаты мыши по одному байту для строки и столбца, в результате чего добавляется 32 (код ASCII для пробела). Это учитывает координаты до 223 (что составляет 255 - 32).

К сожалению, это кодирование не соответствует применимым стандартам для последовательностей управления терминалами, и диапазон может быть эффективно ограничен до 95 (т. Е. 127–32), если приложения не делают специальных допусков для него. В частности, если приложение выполняет декодирование UTF-8 до синтаксического анализа последовательности управления, координаты мыши за пределами 95 просто оказываются недействительными как UTF-8.

В течение прошлого года было предпринято несколько попыток решить эту проблему в xterm. Лучшим из них является так называемый режим SGR 1006, добавленный в патче № 277, в котором используется стандартная последовательность управления с неограниченными координатами. Поддержка этого будет медленно распространяться на другие терминальные эмуляторы и приложения.

1

Это было исправлено в 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 .

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