Быстрый рывок в Вим

Я часто оказываюсь в такой ситуации:

line i want to yank
.
.
.
[cursor position]

Я хочу выровнять строку и вставить в [cursor position].

Я делаю это с [n]k, Y, [n]j, p. Это много набирает;). Раньше я использовал:

:[line number]Y

а затем вставить, но это не работает с относительными номерами строк (relativenumber).

Какой самый быстрый способ сделать такой захват/вставку, когда относительные числа включены?

Ответ 1

Когда номер строки для копирования известен (абсолютный или абсолютный относительный), удобным способом дублирования этой строки является использование :copy команда. Например, команда Ex ниже копирует строку, которая равна четырем линии выше и вставляет его ниже текущего.

:-4t.

Ответ 2

Если линия находится в пределах видимости (до или после позиции курсора), я обычно просто ищу ее (?line i want), yank, затем перейдите `` (назад в предыдущую позицию), затем p.

Ответ 3

Я попробую:

  • ?yank + Enter < == type significant patten для поиска назад
  • yy
  • Ctrl + O < == вернуться назад
  • p

Ответ 4

 :/your desired search for the specific line/ y

или

 :N y

(где N - конкретное число строк) скопирует определенную строку (и это может быть диапазон тоже). Теперь вы нажмете p, чтобы вставить его. Таким образом, вы не перемещаете курсор.

Ответ 5

Кстати, если я действительно намерен повторить строку, которую я использовал раньше в любом из открытых файлов, я просто использую ярлык ^X^L в режиме вставки после ввода нескольких стартовых символов.

Скажем, я хочу повторить эту строку, которая многократно повторяется в моей программе:

for (int i = 0; i < numChildren; i++) {

Затем я начинаю с ввода for (in, а затем просто ударяю ^X^L, а Vim завершает его для меня. (На самом деле он ждет меня, чтобы принять его, если я снова сделаю ^L, это покажет мне следующий вариант.)

Посмотрите ^X^L, это очень удобно.

:help ^X^L

PS: Публикация в виде отдельного ответа, так как ваш первоначальный вопрос конкретно посвящен "yanking", и это автоматическое завершение, технически.

Ответ 6

Если строка скрыта из виду (добавление к Manish answer), мне удобно использовать

  • разделите экран, набрав :sp, а затем
  • найдите строку, которая будет дергана
  • задержите шаблон в верхней части, а затем
  • перейдите на нижний экран, используя CTRL - w - j, где курсор все еще помещен (в том же столбце), как это было, когда я :sp запустил буфер.