Как перемещать экран без перемещения курсора в Vim?
Недавно я обнаружил Ctrl + E и Ctrl + Y ярлыки для Vim, которые соответственно перемещают экран вверх и вниз с помощью одного шага, не перемещая курсора.
Знаете ли вы какую-либо команду, которая оставляет курсор там, где она есть, но перемещает экран так, что линия с курсором становится первой строкой? (с командой для последней строки будет хороший бонус).
Я могу добиться этого, вручную нажав Ctrl + E (или Ctrl + Y) правильное количество раз, но с командой, которая каким-то образом сделает это непосредственно, будет приятным.
Любые идеи?
Ответы
Ответ 1
- z z - переместить текущую строку в середину
экрана
( Осторожно с z z, если у вас случайно есть Caps Lock, вы сохраните и выйдете из vim
!)
- z t - перемещение текущей строки
в верхней части экрана.
- z b - перемещение
текущая строка в нижней части
экран
Ответ 2
Дополнительно:
- Ctrl - y Перемещает экран вверх на одну строку
- Ctrl - e Перемещает экран вниз на одну строку.
- Ctrl - u Перемещает курсор и экран вверх ½ страницы
- Ctrl - d Перемещает курсор и экран вниз ½ страницы
- Ctrl - b Перемещает экран вверх на одну страницу, курсор на последнюю строку
- Ctrl - f Перемещает экран вниз на одну страницу, курсор в первую строку
Ctrl - y и Ctrl - e изменяют только положение курсора, если оно будет перемещено за пределы экрана.
Предоставлено http://www.lagmonster.org/docs/vi2.html
Ответ 3
Vim требует, чтобы курсор постоянно находился в текущем экране, однако вы могли бы пометить текущую позицию, а затем вернуться туда, где вы были.
mg # This book marks the current position as g (this can be any letter)
<scroll around>
`g # return to g
Ответ 4
Вот мое решение в vimrc:
"keep cursor in the middle all the time :)
nnoremap k kzz
nnoremap j jzz
nnoremap p pzz
nnoremap P Pzz
nnoremap G Gzz
nnoremap x xzz
inoremap <ESC> <ESC>zz
nnoremap <ENTER> <ENTER>zz
inoremap <ENTER> <ENTER><ESC>zzi
nnoremap o o<ESC>zza
nnoremap O O<ESC>zza
nnoremap a a<ESC>zza
Так, чтобы курсор оставался в середине экрана, а экран двигался вверх или вниз.
Ответ 5
Чтобы оставить курсор в том же столбце, когда вы используете Ctrl + D, Ctrl + F, Ctrl + B, Ctrl + U, G, H, M, L, G G
вы должны определить следующую опцию:
:set nostartofline
Ответ 6
Вы можете прикрепить команды перемещения курсора к числу, и это повторит эту команду, которая много раз
1 0 Ctrl + E будет делать Ctrl + E 10 раз вместо одного.
Ответ 7
Вы можете найти ответы на этот вопрос полезным: Прокрутка Vim относительно курсора, настраиваемое сопоставление: вы можете использовать ScrollToPercent(0)
из этого вопроса, чтобы сделать это.
Ответ 8
z Enter выполняет именно этот вопрос.
Он работает там, где странно z z не будет работать (vim 7.4.1689 на Ubuntu 2016.04 LTS без специального .vimrc)
Ответ 9
Удивило, что никто не использует опцию Scrolloff, которая удерживает курсор в середине страницы.
Попробуйте это с помощью:
:set so=999
Это первый рекомендуемый метод на вики-сайте vim, который хорошо работает.
Ответ 10
Иногда полезно прокручивать текст с помощью клавиш K и J.
Поэтому у меня есть эта функция "режим прокрутки" в моем .vimrc(также привязана к zs)
scroll_mode.vim
Ответ 11
Существует новый плагин, который я написал, он позволяет вам перемещаться по файлу отверстия, не перемещая позицию курсора. Это основано на сгибе линий между вашей позицией и вашей целевой позицией, а затем перепрыгнуть через сгиб. Или прервите это и не двигайтесь вообще.
Также легко быстро переключаться между курсором - это первая строка, курсор - это последняя строка, а курсор находится в середине, просто нажимая j, k или l (когда вы находитесь в режиме плагина).
Я думаю, это было бы хорошо подходит здесь: https://github.com/anschnapp/move-less
Ответ 12
Я использовал эти ярлыки в прошлом:
z + enter → перемещает текущую строку в верхнюю часть экрана
z + . → перемещает текущую строку в центр экрана
z + - → перемещает текущую строку вниз
..Если не очевидно:
enter означает ВОЗВРАТ или КЛЮЧ ВВОДА
. означает клавишу DOT или "полный останов" (.)
- означает ключ HYPHEN (-)
FWIW, z. позволяет избежать опасности сохранения и закрытия vi, случайно набрав ZZ, если заглавные буквы включены.
Надеюсь, это поможет..