2025-11-17

vak: (Знайка)
Zed интересный редактор, из всех появившихся за последнее время. Всё бы хорошо, но... Открываю в нём текстовый файл. Встаю куда-нибудь в середину окна, скажем на строку 20, и нажимаю PageDown. Файл перелистывается на страницу вперёд, а курсор улетает... вниз окна, на 4-ю строку снизу. Что за ерунда. Жму PageUp, файл листается обратно, но не на всю страницу, а на несколько строк. Курсор оказывается вверху экрана, на 4-й строке сверху. Ëшкин кот! Я не готов прыгать глазами в поисках курсора, увольте.

Легкими пинками мне удалось привести Zed в приемлемое состояние. Переделать клавиши PageUp и PageDown как предписано богом. Чтобы при перелистывании текущая строка (курсор) сохраняла своё относительное положение на экране. Когда вы уже находитесь на последней странице, клавиша PageDown ничего не делает. Верхняя строка остаётся на месте, а курсор не перемещается. В emacs такой режим включается установкой:
(setq scroll-preserve-screen-position t)
Настройки такой в редакторе нет. Надеялся найти плагин - благо, к Zed уже понаделано много extensions. Однако увы, не могут extensions обрабатывать клавиши и влиять на позицию текста в окне. Пришлось править исходник самого Zed.

Сам бы я в исходниках долго ковырялся. Но теперь в помощниках имеем Cursor. Он за пару минут разобрался и передеалал функции move_page_up() и move_page_down(). С первого раза это дело крашанулось, но я показал Курсору дамп стека и он шустро исправил проблему. Правку можно видеть вот тут:

https://github.com/sergev/ved/commit/e1896e99aeaa76b18944e8c0277647366aabe5a2

Чтобы получить такую версию Zed, вам придётся собрать его из исходников. Это нетрудно, по сути одна простая команда "cargo build --release".