VIM/TERMITE странное и некорректное поведение курсора/каретки

vasek
Вспомнил про прыжки в vim (смещение на одну позицию, но вроде по горизонтали) - это наблюдается если переопределяешь клавишу escape.
клавиши биндил, но это клавиши, которые к виму вроде совершенно никакого отношения не имеют(клавиши на изменение яркости)JJJJ
vasek
Посмотри на всякий случай логи, может там что будет, хоть и маловероятно (можно увеличить логирование, загрузиться с параметром debug).
Ничего в логах особо не нашел. В логах иксов опять же тоже никакого упоминания о термите.

Я впринципе уже поднастроил под себя терминатор, но все же вопрос с термитом остается открытым. Мб вот эта вот странная реакция термита на strace может прояснить немного ситуацию?
wh75er
Но как поменять в термите я не знаю, попробую нагуглить
$ export TERM=xterm
Ошибки в тексте-неповторимый стиль автора©
Эта инерция равносильна событию нажатию клавиши или нет?
Отследить можно по сырым данным вывода событий от нажатия клавиатуры.
Находим какому файлу соответствует устройство ввода (клавиатуры)
sudo evtest
/dev/input/event0: AT Translated Set 2 keyboard
Далее считываем события от нажатия клавиш (чтобы лучше наблюдать, нажимаем 1 раз, небольшая пауза и опять нажатие). Интересен сам момент произвольного перемещения курсора - соответсвует ли это событию нажатия клавиши или нет.
Смотреть события можно так
sudo hexdump /dev/input/event0 или sudo cat /dev/input/event0 | od -t x1 или в другом удобном формате.
PS 1 - между прочем, если распарсить этот вывод, то можно считать введенную на клавиатуре информацию.
Ошибки не исчезают с опытом - они просто умнеют
wh75er, поэкспериментировал с запуском vim в разных окружениях (enviroment, с разными TERM), багов нигде не заметил, правда при запуске с TERM=termite и tilix выдается предупреждение
E558: В terminfo нет записи об этом терминале
'termite' не известен. Доступны встроенные терминалы:
    builtin_amiga
    builtin_beos-ansi
    builtin_ansi
    builtin_pcansi
    builtin_win32
    builtin_vt320
    builtin_vt52
    builtin_xterm
    builtin_iris-ansi
    builtin_debug
    builtin_dumb
по умолчанию 'ansi'
но работает нормально. И всетаки, думаю, лучше запускать vim в xterm.
Можешь поэксперименировать. Запускал так
env TERM=xterm vim,  env TERM=termite vim,  env TERM=tilix vim and e.t.c.
Проверить текущее окружение для vim можно так:
переходим в другой терминал
- pidof vim
17321
- strings /proc/17321/environ | grep TERM (или sed 's/\x0/\n/g' /proc/17321/environ | grep TERM)
TERM=termite
Повторюсь - багов у себя я не заметил. Предположу, что то у тебя не так - или что то изменил или что то пропустил при установке/обновлении.
Например, при установке termite был задан вопрос
vte3-ng и vte3 конфликтуют. Удалить vte3? [y/N]
Пришлось согласиться, но после удаления termite пришлось все вернуть обратно (установить vte3 вместо vte3-ng).
Не обязательно, что у тебя причина в этом - это я привел просто в качестве примера. А искать такие баги очень сложно - ищещь то, не зная чего.
Ошибки не исчезают с опытом - они просто умнеют
indeviral
$ export TERM=xterm

vasek, итак, поэксперементировал, ставил разные TERM. И на xterm, И на xterm-256color проблема сохраняется, хотя на том же терминаторе TERM стоит xterm-256color. К тому же если поставить в самом терминаторе TERM xterm-termite, то там все равно все будет работать стабильно и бага не наблюдается.
vasek
Пришлось согласиться, но после удаления termite пришлось все вернуть обратно (установить vte3 вместо vte3-ng).
Не обязательно, что у тебя причина в этом - это я привел просто в качестве примера
Да, я понимаю, но у меня таких проблем не наблюдалось, к тому же я под чистую сносил весь термит и ставил его с нуля

vasek
правда при запуске с TERM=termite и tilix выдается предупреждение
хм, у меня так же. Наверное, потому что так оно и есть. Терм для термита вроде как xterm-termite
vasek
Можешь поэксперименировать. Запускал так

env TERM=xterm vim, env TERM=termite vim, env TERM=tilix vim and e.t.c.

Собственно дело не в терм, а в самом терминале, потому что баг энивэй сохраняется

Единственный случай, когда баг пропадал и пропадает, когда я цепляюсь именно к самому терминалу(не к виму) и слушаю его через strace. С чем такое может быть связанно я не знаю, но то, что это каким-то образом помогает - факт.

Сейчас еще скину вывод событий клавиш

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

Боюсь, что так не получится, потому что баг срабатывает только тогда, когда клавиша была зажата, то бишь было включено зацикливание. Если перемещаться одиночными нажатиями, то никаких "скачков" не происходит. Но смысл я понял, там будет видно, если что-то нажмется, потому что скачки происходят после секундной задержки. Такое не пропущу

UPD
wh75er
sudo cat /dev/input/event0 | od -t x1
В момент скачка никакая клавиша не прожимается. Каретка просто перепрыгивает и все, в событиях этот момент вообще никак не фиксируется. Все как стояло после завершения зажима клавишы, так и стоит.

Сейас еще раз подцепился strace (strace -p <pidof termite>). Все сразу начинает работать стабильно и никаких скачков не наблюдается. Как только выключаю, все сразу же возобнавляется. Сейчас вспомнил, что год назад читал топик какой-то. Уже смутно помню, что там была за проблема, но у автора тоже все работало с включенным strace'ом, а с выключенным ломалось. Ну я тогда глазами пробежался просто, на тот момент проблема была не такая же как у меня. Попробую поискать что-нибудь на эту тему
wh75er
Единственный случай, когда баг пропадал и пропадает, когда я цепляюсь именно к самому терминалу(не к виму) и слушаю его через strace.
Попробуй не приаттачиваться к процессу, а делать запуск vim через strace, типа такого (open выбран для уменьшения объема лога)
strace -e open -o ~/vim.log vim
wh75er
В момент скачка никакая клавиша не прожимается. Каретка просто перепрыгивает и все, в событиях этот момент вообще никак не фиксируется. Все как стояло после завершения зажима клавишы, так и стоит.
Предположу маловероятное, но возможное, что скачок идет от события нажатия клавиши, но с опозданием - клавиша нажата, но действие от ее нажатия происходит позже - грубо говоря, связано с переполнением буфера клавиатуры, который имеет объем 32 байта (2 байта на каждое нажатие), но запоминается в буфере только 15 нажатий.
UPD ... в принципе буфер циклический, пропаданий нажатия клавиш быть не должно, но могут быть проблемы с задержкой при записи в память, считывания из памяти, очистки и т.п. Предположу, что это чисто индивидуальный баг, связанный с конкретным железом и с конкретным приложением.
В пользу этого предположения говорит и следующий факт
wh75er
баг срабатывает только тогда, когда клавиша была зажата, то бишь было включено зацикливание. Если перемещаться одиночными нажатиями, то никаких "скачков" не происходит.
Почему нет бага при приаттачивании strace - можно предположить, что он каким то образом разгружает переполнение.
Ошибки не исчезают с опытом - они просто умнеют
Вот только не соображу, поможет ли в этом игра с параметрами Typematic Rate и Typematic Delay (Wiki), если есть желание, можешь попробовать,
типа xset r rate 200 30 (и менять эти параметры, действует только на текущую загрузку)
Для начала можно просто загрузиться с параметром atkbd.softrepeat=1 (это вроде бы 250 на 30).
PS ... вот только, как мне помнится, вроде бы там эти значения не произвольные, а определены таблицей.
Ошибки не исчезают с опытом - они просто умнеют
vasek, окей, это все попробую завтра. По поводу скорости каретки... Я уже пробовал ставить xset r rate(ставит все в дефолтное положение), в этом случае все становится дико медленным, но проблема все равно сохраняется
wh75er
Я уже пробовал ставить xset r rate(ставит все в дефолтное положение), в этом случае все становится дико медленным, но проблема все равно сохраняется
Значения по дефолту 660мс и 25Hz
Попробуй ускориться, например, xset r rate 200 50 или xset r rate 250 30. Только палец на клавише долго не держи - скорость увеличится.
Чтобы вернуться к дефолтным значениям, введи xset r rate
Не уверен, что это поможет, но попробовать стоит.
И, похоже, все таки придется забыть о termite (решения не видно).
Ошибки не исчезают с опытом - они просто умнеют
vasek
Попробуй ускориться, например, xset r rate 200 50 или xset r rate 250 30
у меня и так при загрузке прописан xset r rate 265 40, потому что от дефолта хочется повесится, но я ради эксперемента ставил дефолт, который по факту дико медленный. И даже если я зажму и перемещусь только на две строки, скачек все равно совершится. Так что я не думаю, что в этот момент может переполниться какой-нибуль буфер. Может быть каретка каким-то образом позже "прорисовывается". По факту все перемещается верно, но каретка подтормаживает и потом в последний момент перерисовывается на нужной позиции?
 
Зарегистрироваться или войдите чтобы оставить сообщение.