Всем привет!
Использую консольный vim для написания обычного текста. Естественно включён динамический перенос строк по словам. В этом режиме текст с большими абзацами скроллится некорректно. Речь идёт о командах: C-e, C-y, C-d, C-u, C-f, C-b. Это всем известная проблема длинных строк в vim.
Про gj и gk я знаю, но это не то, что нужно. Речь именно о прокрутке экранных строк, а не о перемещении курсора по экранным строкам.
Вопрос этот актуален не только для меня. Я нашёл статью об этом в vim-fandom-wiki, а также несколько вопросов на stackexchange. Кое-где ссылаются на плагин vim-scrollwrapped (https://github.com/lukelbd/vim-scrollwrapped), однако он не работает без объяснения причин.
Я «прошерстил» и соответствующие темы на LOR, но решения в них не нашлось.
Кроме того запросы на реализацию этой функции поступали и в upstream, начиная с 2010-2011 года (насколько я понял из сообщений пользователей). Поэтому в ответ на запрос пользователей в последней версии vim появился параметр smoothscroll, частично реализующий нужную функцию. И работает она именно так, как нужно, но только для команд C-e и C-y. А для поэкранного (постраничного) листания командами C-f и C-b не работает. Об этом написано в официальной документации.
В связи с этим у меня несколько вопросов:
-
Хоть кто-то решил для себя на текущий момент эту проблему? Существует ли хоть какое-то решение?
-
Возможно ли написать функцию в vimrc, которая будет заменять команду C-f на «выполнение команды C-e (работающей со smoothscroll) N-раз, в зависимости от размера экрана (количества строк на нём) и позиции курсора». То есть, можно ли сделать как-бы эмуляцию поэкранного листания с помощью построчного листания? Если да, то подскажите, как эта функция должна выглядеть. Сам я не могу написать.
-
Хоть кто-то ещё пишет обычные тексты в vim? Если да, то не мешает ли вам невозможность нормально листать большие абзацы?
-
Кто-то пользуется neovim? Решена ли эта проблема там? (я на скорую руку проверил, и neovim у меня работает точно так же как и vim; то есть проблема не решена; не исключаю, что я просто что-то не понял и не настроил) И вообще, что можете сказать насчёт neovim? Щекастый паренёк на youtube говорил в своё время, что neovim гораздо круче vim, и что про vim теперь можно вообще забыть, подобно тому, как забыли про vi, когда вышел vim. А в комментариях на Хабре я наткнулся на мнение, что neovim во-первых сырой, а во-вторых вообще загибается и не получил должного развития. В общем, противоречивые мнения.
Что в итоге?
В итоге для работы с простыми текстами пока приходится использовать kwrite с режимом ввода vi. Но хотелось бы использовать консольный vim. А вообще поэкранное листание длинных строк с переносами идеально работает в консольном emacs с любыми размерами шрифтов и размерами окна konsole. Именно так, как и представляется. Можно сказать - образец. Но это совсем другая история.
— Обновление —
Решение: