Yank n линии вверх без движения - PullRequest
12 голосов
/ 28 марта 2011

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

Ответы [ 3 ]

29 голосов
/ 28 марта 2011

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

:.-6,.yank

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

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

Окончательная команда:

:-6,y

Для получения дополнительной помощи:

:h :yank
:h [range]
6 голосов
/ 28 марта 2011

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

Янк на 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

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

6 голосов
/ 28 марта 2011

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

6yk6j

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

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