Переместить курсор x строк из текущей позиции в vi/vim
Есть ли способ переместить курсор относительно количества строк в vi/vim? Скажем, у вас есть указатель на 10 строк под блоком кода, который вы хотите удалить. Если у вас есть номера строк, показанные в относительном порядке, было бы неплохо иметь команду "jump 10 lines up", которая приведет вас туда.
Или, может быть, лучше показать абсолютные номера строк и перейти xgg, где x - номер строки?
Ответы
Ответ 1
Да, конечно, есть способ. j
и k
перемещаться вниз и вверх по одной линии, поэтому 10j
и 10k
перемещаются вниз и вверх по десяти линиям. Вы можете повторить любое движение, поставив перед ним номер.
Вы также можете захотеть set relativenumber
, если это то, что вы делаете много - это поможет вам сэкономить счет, напечатав номера строк относительно текущей строки, вместо абсолютных чисел.
Ответ 2
Перемещение 10 строк вверх и вниз может не соответствовать вашей задаче, а также другим параметрам. Рассмотрим другие движения:
Ctrl+f
, Ctrl+b
вперед и назад.
}
, {
перемещаться вперед и назад одним абзацем.
Вы можете написать правила в своем vimrc, чтобы привязать 10j
к ключу, скажем J
, чтобы переместить 10 строк, добавив следующую строку в ваш файл vimrc:
map <S-j> 10j
Однако вы должны перезаписать полезную существующую команду J
(соединить две строки). Поиск удобной комбинации неиспользуемых клавиш для 10j
/10k
может быть затруднен, поэтому я предлагаю использовать существующие движения, о которых я говорил.
Вы также можете знать, что можете двигаться назад к слову, которое вы видите:
?someword
и перейдите к слову, которое вы видите, выполнив /someword
. Это будет быстрее, чем попытка перемещения вверх/вниз по 10 линиям, а затем перестановка курсора на точное местоположение. Если вы не думаете о простой строке поиска для данной строки, вы всегда можете перейти к номеру строки, как вы сказали (xgg
).
Ответ 3
Я возился с vim, и я заметил, что -
перемещает вас, а +
перемещает вас, поэтому вы можете
10-
или вы можете использовать k, так как вы, скорее всего, используете движение курсора hjkl.