vi / vim різкі рухи буфера у вікні


11

При використанні :set wrapin vi / vim вміст цілої загорнутої лінії розміщується в буфері дисплея при переміщенні курсору в новий рядок, навіть при навігації по файлу рядком відображення (gj / gk) на відміну від реального рядка (j / к). Наприклад, якщо лінія обмотана понад 5 ліній екрана і в даний час знаходиться поза буфером дисплея, буфер підскочить на 5 рядків під час навігації в цей рядок, щоб змусити всю лінію розміститися на екрані. Чи є спосіб відключити цю поведінку? Зверніть увагу, що set display+=lastlineдозволить відображати часткові лінії, коли загорнута лінія витісняється з екрану, переходячи від лінії, але це не вирішує стрибки буфера, які виникають під час навігації в рядок, який спочатку був поза буфером.

Пояснення: Якщо вищевказаний опис є неясним, суть полягає в тому, що я хотів би мати можливість прокручувати плавно по vim з увімкненим обертанням рядків таким чином, що рядки будуть частково відображатися з екрана, а не обов'язково відображатися в повному обсязі.


1
Чи можете ви підтвердити, що ви маєте на увазі: ви хочете, щоб частина загорнутої частини лінії не відображалася та могла плавно прокручуватися? Vim повністю показує рядки, коли 'wrap'він боїться
Бенуа

Точно. Я вважаю, що немає способу змінити таку поведінку показу загорнутих ліній у повному обсязі під час прокрутки? Дякую.
user001

1
Не те, що я знаю. Хоча чекайте відповідей, ніхто не знає, що може зробити Vim.
Бенуа

1
погоджуюся з @Benoit. Неможливо, наскільки я знаю.
Фредрік Піль

1
Зараз на цій темі обговорюється список розсилки vim_dev. Здається, ви не єдиний із цим запитом.
Ренді Морріс

Відповіді:


1

Не повна відповідь, але, можливо, ведуча. Є scrollваріант. Довідка щодо цього параметра, серед іншого:

{Vi дещо інший: 'прокрутка' дає кількість рядків на екрані замість рядків файлів, і змінює значення, коли загортання рядків}


Дякую, це корисно. Комбінації клавіш <Ctrl-E> (вниз) та <Ctrl-Y> (вгору) дають основну поведінку, яку я хочу. Якщо є спосіб визначити, чи знаходиться курсор у верхній чи нижній рядку вікна, тоді тимчасове рішення передбачає умовне відображення клавіш зі стрілками вгору та вниз у <Ctrl-Y> gk та <Ctrl-E> gj, відповідно. Якщо курсор не знаходиться у верхньому чи нижньому рядку вікна, тоді необхідно відобразити їх у gk та gj (інше твердження в умовному). Чи є простий спосіб виявити, чи знаходиться курсор у верхній чи нижній рядку поточного вікна?
user001

0

у звичайному режимі ви можете переходити між відображеними частинами загорнутої лінії за допомогою gkта gj( g<up>або g<down>). Ця вікі-сторінка vim пояснює, як назавжди змінити поведінку.


1
Звичайно, і я відобразив цю поведінку до клавіш зі стрілками. Однак це відрізняється від обов'язкового відображення всієї загорнутої лінії при переході до цього рядка. Така поведінка не залежить від використання gj / gk або j / k. Я хотів би мати можливість частково перейти до рядка, який спочатку знаходиться поза буфером (поза екраном), не відображаючись усієї загорнутої лінії.
user001

Добре, тоді я неправильно зрозумів. Ну, мабуть, ваша лінія або загорнута, або її немає. Те, що ви хочете, - це щось середнє, але я думаю, що це просто неможливо.
jpjacobs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.