Vim: переместить курсор в последнюю позицию - PullRequest
242 голосов
/ 19 февраля 2011

Возможно ли в (g) Vim переместить курсор в предыдущую позицию (в обычном режиме)? Что-то для циклического перемещения назад и вперед в списке предыдущих позиций курсора было бы идеальным. Но также достаточно просто переключиться на последнее местоположение (что-то вроде cd - в bash с каталогами).

Вот небольшая демонстрация:

line |1| <- cursor position
line 2
line 3
line 4

И предположим, что я сделал 2j, вот как это сейчас:

line 1
line 2
line |3| <- cursor position
line 4

Теперь я хотел бы нажать что-то (кроме 2k, очевидно), чтобы вернуться к первой позиции и, возможно, к предыдущей позиции.

Ответы [ 4 ]

386 голосов
/ 19 февраля 2011

Самый быстрый способ - ударить либо:

(два апострофа) или:

``

(два кавычки). Обратите внимание, что различие заключается в том, что обратная черта идет в то же место на линии, в то время как апостроф идет на начало строки. На британской клавиатуре апостроф более доступен, поэтому я склонен использовать его. Есть множество полезных знаков, подобных этому, см. :help mark-motions.

Для некоторых других движений (не 2 j , я думаю) есть также список переходов, который позволяет вам перемещаться вперед и назад среди множества движений. Ctrl O и Ctrl I выполняют эту навигацию, но для получения дополнительной информации см. :help jump-motions.

55 голосов
/ 05 октября 2014

Вы также можете использовать g; и g, для перемещения назад и вперед в списке ваших предыдущих редактирования местоположений.

на неамериканских клавиатурах

На моих раскладках клавиатуры для швейцарской и немецкой клавиатур набирать ; неудобно, для этого требуется клавиша Shift .Поэтому я определил g- как более удобный псевдоним для g; в $MYVIMRC:

" Map g- as an alias for g;
nnoremap g- g;
35 голосов
/ 29 апреля 2016

Почему никто не понял проблему с ответом DrAl ? '' или `` не решит исходную проблему этого поста! Эти две команды не будут работать для некоторых движений курсора, таких как 2 j , по крайней мере, для меня. Это сделает новичка для Вим более запутанным.

Поведение '' или `` и Ctrl I или Ctrl O основаны на списке переходов. 2 j не сохранит изменения положения в списке переходов, поэтому эти команды не будут работать для 2 j .

'' или `` - переключение между последней и текущей позицией. Ctrl I и Ctrl O работают по истории списка переходов.

г ; и г , перемещаются по позициям редактирования, которые также очень часто используются.

30 голосов
/ 22 февраля 2011

Справа от справки (: help jump):

: ju [mps] Распечатать список переходов (не команда движения).{не в Vi} {не доступно без | + jumplist |функция}

                          *jumplist*

Прыжки запоминаются в списке прыжков.С помощью команд CTRL-O и CTRL-I вы можете перейти к позициям курсора перед старшими прыжками и вернуться назад.Таким образом, вы можете перемещаться вверх и вниз по списку.Для каждого окна есть отдельный список переходов.Максимальное количество записей фиксировано в 100. {недоступно без | + jumplist |функция}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...