Есть ли способ переместить курсор на относительное количество строк в vi / vim? Предположим, у вас есть курсор на 10 строк под блоком кода, который вы хотите удалить. Если у вас есть номера строк, показанные в относительном порядке, было бы неплохо иметь команду «перейти на 10 строк вверх», которая перенесет вас туда.
Или, может быть, лучше показать абсолютные номера строк и пойти xgg, где x - номер строки?
Ответы:
Да, конечно, выход есть.
j
иk
двигайтесь вниз и вверх на одну строку, так10j
и10k
двигайтесь вниз и вверх на десять строк. Вы можете повторить любое движение, поставив перед ним число.Вы также можете захотеть,
set relativenumber
если это то, чем вы часто занимаетесь - это поможет вам сэкономить при подсчете, печатая номера строк относительно текущей строки, а не абсолютные числа.источник
set relativenumber
иset number
. Это даст относительные номера строк с абсолютным номером строки для строки, на которой находится ваш курсор.enter
(для абсолютных номеров строк просто поставьте перед ним двоеточие). Если вы привыкли кj
иk
и нормальной раскладке клавиатуры, которая не может быть слишком полезно, но как стреловидные с помощью пользователя Colemak,enter
легче достичь , чем Colemakj
(QWERTY -y
ключ)Перемещение 10 строк вверх и вниз может не соответствовать вашей задаче, а также другим вариантам. Рассмотрим другие движения:
Ctrlf, Ctrlbстраница вперед и назад.
}, {переходите вперед и назад на один абзац.
Вы можете написать правила в вашем vimrc для привязки
10j
к ключу, скажем,J
чтобы переместиться на 10 строк вниз, добавив следующую строку в ваш файл vimrc:map <S-j> 10j
Однако вы бы перезаписали полезную существующую
J
команду (соедините две строки). Поиск хорошо расположенной неиспользуемой комбинации клавиш для10j
/10k
может быть трудным, поэтому я предлагаю использовать существующие движения, о которых я упоминал.Вы также можете знать, что можете перейти назад к слову, которое вы видите, делая:
?someword
и вперед к слову, которое вы видите, делая/someword
. Это будет быстрее, чем пытаться переместиться вверх / вниз на 10 строк и затем переместить курсор в точное место. Если вы не можете придумать простую строку поиска для рассматриваемой строки, вы всегда можете перейти к номеру строки, как вы сказали (xgg
).источник
Я возился с vim и заметил - вы двигаетесь вверх и +вниз, поэтому вы можете:
или вы можете использовать, kпоскольку вы, скорее всего, привыкли к перемещению курсора hjk l.
источник
enter
работает так же, как+
после числа, и большую часть времени его легче достать