Как отключить горизонтальную прокрутку
Я написал решение, которое отключает горизонтальную прокрутку (с помощью предложения @ ЯрославРахматуллина ), но я не думаю, что оно вам понравится:
augroup NoScrollPlease
autocmd!
autocmd CursorMoved * norm!99zH
augroup END
Это предотвращает прокрутку вправо с помощью невероятно точного метода повторной прокрутки назад. *
* Поскольку я не знаю, как далеко вы прокручивали вправо или какова длина ваших строк, я прокручиваю произвольно «далекую» величину 99 половин ширины экрана. Обратите внимание, что я не беспокоюсь о том, прокручивали ли вы вправо или нет, а затем прокручивали «назад» влево. Если вы на самом деле собираетесь использовать это решение , которое вы можете постучать что - то путем сравнения значений getcurpos()
, 'sidescroll'
и 'columns'
.
Почему вы не хотите этого делать
Причина, по которой вы не собираетесь использовать это, заключается в том, что в основе проблемы прокрутки лежит еще одна проблема: Vim не позволит вам переместить курсор «за пределы экрана». Поэтому, если вы прокрутите влево таким образом, что после прокрутки курсор будет за пределами экрана, Vim услужливо подведет курсор вместе с ним и переместит его влево.
Но поскольку вычисление, используемое для определения того, находится ли курсор на экране, такое же, как и при решении вопроса о необходимости прокрутки исходной задачи, общий эффект заключается в том, что с этим «решением» на месте, если вы попытаетесь переместить курсор вправо в ситуации, которая обычно вызывает боковую прокрутку, теперь курсор вообще отказывается двигаться. **
** Чтобы быть немного более точным, в зависимости от текущей позиции и движения, курсор может двигаться вправо; он просто не пройдет мимо позиции, в которой обычно происходит прокрутка.
Другие опции?
Поэтому я боюсь, что ваш запланированный обходной путь не удастся. Если вы хотите работоспособное решение общей проблемы, его нужно будет реализовать в исходном коде Vim.
Как вы уже заметили , вряд ли это произойдет в ближайшее время, поэтому я боюсь, что лучшим вариантом для обхода конкретного экземпляра проблемы, показанного в вашем gif, является обращение к автору плагина с просьбой прекратить использование conceal
полностью и вместо этого удалить скрытый текст из буфера полностью.
Исходя из незакрытого вывода и упоминания vim-plugin-AnsiEsc
в документации, это может быть чем-то возможным для них реализовать, но трудно сказать наверняка, не зная, как функционирует плагин.
:set wrap