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

Yank n строк вверх без перемещения

Чтобы вынуть 7 строк вниз, не перемещая курсор, я могу 7yy. Можно ли сделать то же самое вверх, не используя макросы или переназначить?

4b9b3361

Ответ 1

Вы можете использовать команду :yank с диапазоном для достижения этого эффекта.

:.-6,.yank

Объяснение диапазона:

  • . или точка означает текущую строку
  • .-6 означает текущую строку минус 6
  • .-6,. - текущая строка минус 6 в текущей строке
  • Это может быть сокращено .-6 до -6, давая нам -6,.yank
  • текущая строка также принимается в конце диапазона, поэтому -6,yank
  • команда yank может быть сокращена до :y, давая нам -6,y

Конечная команда:

:-6,y

За дополнительной помощью:

:h :yank
:h [range]

Ответ 2

Вы можете сделать следующее:

6yk6j

Это будет выдержать 6 предыдущих строк и текущий), но курсор будет двигаться. 6j переходит в предыдущую позицию.

Ответ 3

Вы можете просто вырваться на движение, а затем вернуть курсор в позицию, используя либо '[, либо '].

Янки для 6 строк вверх, плюс ток дает всего 7:

y6u

Затем используйте несколько менее известных меток:

'[ -> to the first character on the first line of
      the previously yanked text (or changed)
`[ -> to the first character of the previously yanked text
'] -> to the first character on the last line of yanked text
`] -> to the last character of the preciously yanked text

Итак:

y6u']
y6u`]

Можно ли использовать два решения в зависимости от того, что именно вы хотите. Первый возвращает курсор к первому символу на линии, на которой находился ваш курсор, и последний перемещается к последнему символу на этой строке.

Но есть и другая метка, которая может быть удобной: '^. Это означает, что последняя позиция была курсором при выходе из режима вставки.

'^ -> moves to the beginning of the last line when leaving insert mode.
`^ -> moves to the exact position where insert mode was last left.

Тогда вот еще два решения:

y6u'^
y6u`^

Это не конец! Если вы притворяетесь продолжением вставки текста, вы можете использовать команду gi. Он перемещает вас к значку `^ и вводит режим вставки. Тогда мы имеем пятое решение:

y6ugi

Я надеюсь, что одно из них удовлетворит ваши потребности!