Я использую putty (на windows 7) для подключения к shell и Vim в качестве редактора. У меня также включена опция mouse=a в Vim, но я получаю странное поведение (например, случайные вставки символов и/или переносы строк), когда я щелкаю по правой стороне окна Vim (скажем, это область шириной 70%+ экрана, где это становится странным). Я медленно привыкаю к такому поведению, но мне бы очень хотелось узнать, можно ли как-то это исправить.
решение1
PuTTY отправляет события мыши с помощью протокола xterm, который появился еще в X10 в середине восьмидесятых. Он кодирует координаты мыши одним байтом для строки и столбца, к которым добавляется 32 (код ASCII для символа пробела). Это позволяет использовать координаты до 223 (что равно 255 - 32).
К сожалению, эта кодировка не соответствует применимым стандартам для последовательностей управления терминала, и диапазон может быть фактически дополнительно ограничен до 95 (т. е. 127 - 32), если приложения не делают для этого специальных разрешений. В частности, если приложение выполняет декодирование UTF-8 до анализа последовательности управления, координаты мыши за пределами 95 просто в конечном итоге будут рассматриваться как недействительный UTF-8.
В течение последнего года было сделано несколько попыток решить эту проблему в xterm. Лучшая из них — это так называемый режим SGR 1006, добавленный впатч #277, который использует стандартную управляющую последовательность с неограниченными координатами. Поддержка этого будет постепенно проникать в другие эмуляторы терминала и приложения.
решение2
Это было исправлено вВим 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
.