Подтвердить что ты не робот

Vim: переместите курсор в свою последнюю позицию

Возможно ли в (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, очевидно), чтобы вернуться к первой позиции и, возможно, к предыдущим позициям.

4b9b3361

Ответ 1

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

''

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

``

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

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

Ответ 2

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

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

" Map g- as an alias for g;
nnoremap g- g;

Ответ 3

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

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

                          *jumplist*

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

Ответ 4

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

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

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

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