Терминатор / vim Mouse Issue

909
Raz

Позвольте мне начать с того, что я стараюсь использовать мышь в vim как можно меньше, но бывают случаи, когда я в конечном итоге использую ее, чтобы щелкнуть мышью или выделить что-то.

С учетом сказанного, вот проблема, с которой я столкнулся. По большей части у меня будет развернут мой терминал (терминатор) на одном из моих мониторов, и я, как правило, открою vim с 2 или 3 окнами, разделенными вертикально на нем. Проблема возникает, когда я нажимаю на крайнее правое окно; вместо этого он переместит курсор в крайнее левое окно. Поскольку я редко нажимаю, это действительно сбивает меня с толку, когда это не ожидаемое поведение, и я никогда не могу привыкнуть к нему.

Я искал вокруг, в чем может быть проблема, и обнаружил, что была проблема с xterm и щелчками мышью мимо 220-го столбца в терминале. Предположительно, с тех пор это было исправлено. Мне легче проверить проблему, просто открыв vim в терминале с максимальным размером и создав строку длиной ~ 250 символов. Я не могу нажать ни на одного персонажа после 220-го столбца. После поиска я обнаружил, что многие люди предлагают установить "ttymouse = sgr" в .vimrc. Я попробовал это, но это ничего не изменило.

Я упомянул, что я использую терминатор в качестве моего терминала. Я не вижу такого поведения в gnome-терминал, но я действительно предпочел бы придерживаться терминатора. Я не очень знаком с тем, как интеграция с мышью работает с программами внутри терминала, но я думаю, что кое-что в возможностях терминала отличается от терминатора и gnome-терминала.

Я использую Ubuntu 14.04 LTS.

1
У меня также есть это в urxvt (эмулятор терминала), так что это не проблема терминатора boobie_goodness 8 лет назад 0

1 ответ на вопрос

3
egmont

Terminator and Gnome-terminal use the same terminal emulation widget called Vte. However, Gnome-terminal uses a newer, Gtk+-3 based version of it, whereas Terminator relies on an older Vte, based on Gtk+-2.

Legacy mouse protocol only supports row and column values up to 223. The extended version was added to Vte's Gtk+-3 branch.

If you're a bit adventurous, you can switch to Terminator's new Gtk+-3 based version (https://code.launchpad.net/~gnome-terminator/terminator/gtk3). It's in active development nowadays, and have received many improvements and fixes over the one you're using, but there are 1 or 2 noticeable regressions right now that we're working on (most notably: wrong sizes after a double click on a separator, or after a rotate operation). But after all, I think you would like the improvements.

It requires an even newer version of Vte than shipped by Trusty. You can try if vte2.91 package from Gnome3 Staging (https://launchpad.net/~gnome3-team/+archive/gnome3-staging/+packages) for a newer Ubuntu installs fine, I'm not sure. Or you can compile and install from vte-0.42 tarball (ftp://ftp.gnome.org/pub/GNOME/sources/vte/) (./configure --prefix=/usr && make && sudo make install), I did this the other day and I can guarantee that this works, all you need to do is install some dependencies that are available as Trusty packages, although sometimes it's a bit tricky to figure out the required package (along the lines of python, gir, libgirepository...).

Installing newer Vte this way won't overwrite your previous ones, you'll have three versions coexisting.

With the newer one in place, Terminator's Gtk+-3 version from bzr should start up straight away.

Я предполагаю, что поведение будет таким же для Tmux, верно? В моем случае у меня есть мой макет как `|| vim-vert-split1 | vim-vert-split2 | vim-vert-split3 || tmux-vert-pane2 ||` с каждым разделением / панелью шириной 80 столбцов. Рабочие процессы, включающие выбор / прокрутку в tmux pane2, работают нормально. Есть идеи, почему это так? UltraInstinct 6 лет назад 0
@ SuperSaiyan Я не уверен, в чем твоя проблема; Вы спрашиваете, почему это работает нормально? В чем проблема? :) В любом случае, если у вас возникли проблемы, я рекомендую опубликовать новый вопрос. egmont 6 лет назад 0
Ваш ответ отчасти решает мою проблему, +1! Я не решаюсь создать новый вопрос, потому что это комментарий / вопрос о вашем ответе. Позвольте мне перефразировать мой вопрос: «Если такие программы, как vim, не могут обрабатывать взаимодействия с мышью за пределами столбца 223, как получается, что tmux способен обрабатывать это (например, выделение текста) в указанной выше конфигурации? Взаимодействия с мышью происходят при столбце col> (80). * 3). Я предполагаю, что tmux также использует ту же версию vte. " UltraInstinct 6 лет назад 0
Во-первых, я уверен, что vim справится с этим :), но давайте предположим, что это не так. Tmux включает соответствующее расширение, получает координаты мыши в новом формате, однако, очевидно, что их нужно корректировать. Он должен вычесть смещение x и y данной панели, а также перенести в формат, который запрашивает vim (возможно, устаревший формат, который может обрабатывать только до 223, но это нормально, так как после вычитания смещения панели координаты ниже этого). egmont 6 лет назад 1

Похожие вопросы