Прокручуйте екран, а не курсор, коли використовуєте прокручувальне колесо


18

Я використовую Vim в терміналі, тому для прокрутки колесом прокрутки використовується синтаксис \e[Aта \e[B(де \eсимволізується \x1bабо втеча).

Однак Vim інтерпретує це, переміщуючи курсор вгору або вниз по лінії. Бажана поведінка полягає в тому, щоб екран переміщувався вгору або вниз, як <C-e>і <C-y>робити.

Як я можу сказати Vim переміщати екран, коли я використовував колесо прокрутки, зберігаючи курсор на одній лінії? Це повинно працювати у всіх звичайних режимах (вставка, нормальний, візуальний вибір).

Я вже спробував, наприклад, :nnoremap <esc>[A <C-e>(замінивши <esc>символом буквального втечі, вставленим на Ctrl+V Esc), але це виявилось марним.

Я використовую Vim 7.4.52 на Ubuntu 14.04 з GNOME.


Чи можете ви обмежити це питання операційною системою чи середовищем вікон?
200_успіх

@ 200_success Добре, я змінив своє оточення в питанні.
Doorknob

Я думаю, що це питання теж слід позначати "терміналом". Це не можна редагувати, оскільки на нього відповіли?
bsmith89

Відповіді:


12

Як сказав @Doorknob у своєму коментарі, :set mouse=aвирішує проблему.


1
Чи є спосіб це зробити без налаштування mouse=a? Я не хочу, щоб випадкові кліки псували мій потік редагування.
wchargin

aв mouse=aозначає all(не додавання). з :help mouse: "миша може бути включена для різних режимів ... Зазвичай ви вмикаєте мишу у всіх чотирьох режимах за допомогою:: set mouse = a", принаймні в моєму vim, коли я вмикав, що вона не заплуталася з переключенням режиму (щойно увімкнено прокрутку - і «натисніть, щоб перейти до рядка»)
Fawix

2
Хоча ця нитка давня, для тих, хто хоче set mouse=aбез випадкових клацань зіпсувати потік, :map <LeftMouse> <nop>зробив би свою справу.
Сонячний Пун

0

Поведінка, яку ви хочете, - це те, що відбувається з моїм vim. Я не можу знайти налаштування, яке вмикає / вимикає. Можливо, перевірте : допомога прокрутки ? scrolloffможе бути залучений.

Ви також можете розглянути можливість використання знаків як вирішення.

  1. ma (встановити позначку 'a')
  2. прокручуйте екран як хочете
  3. `a (надіслати курсор для позначення "a")

Таку поведінку я отримую навіть не завантажуючи свій vimrc ( vim -u NONE). Це Vim 7.4 на Ubuntu 14.04 з GNOME.
Дорнобб

@Doorknob І я отримую вікно замість переміщення курсору без мого .vimrc(просто set mouse=a). :help scrollingговорить, що поведінка прокрутки залежить від платформи. Я використовую vim в iterm2 на OSX.
bsmith89

Ага! :set mouse=aвирішив проблему для мене. Відредагуйте це у своїй відповіді, і я прийму його. Спасибі!
Doorknob
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.