1

Я хотел бы иметь ярлык в vim, который выполняет дублирование строки, не путая положение курсора. Простое нажатие и вставка всегда перемещают курсор в начало следующей строки, поэтому я думаю, что мне нужно сделать это в два этапа: скопировать начало строки, а затем конец строки. Что я пытался это:

noremap <C-S-d> y0O<ESC>pkéy$lgp`[

с hjkl переназначается в jklé . (без переназначения это выглядело бы так: y0O<ESC>pjly$kgp`[ .)

Это, похоже, не работает как команда, хотя, когда я тестирую его ключ за ключом, это просто замечательно. Интересно, что не так с этим макросом?

1 ответ1

2

Одна проблема, которую я вижу, состоит в том, что noremap отображает значение левой части на значение правой части без переназначения. По сути, правая часть всегда рассматривается как просто встроенные отображения.

Вы можете использовать map вместо noremap , или вы можете использовать оригинальные отображения в левой части. Это, кажется, работает нормально для меня:

noremap <C-S-d> y0O<ESC>pjly$kgp`[

Кстати, вот как я дублирую строки, чтобы у вас был другой подход:

nnoremap zj mz"yyy"yP`z
nnoremap zk mz"yyy"yP`zk

Шаги для дублирования:

  • Сохранить текущую позицию в метке z с помощью mz
  • Скопируйте строку в регистр y с помощью "yyy
  • Вставьте строку выше с "yP
  • Перейти в исходное положение с помощью `z

Для меня это держит позицию курсора в нужном месте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .