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

Вставить в Vim без перемещения курсора

Часто мне нужно вставить что-то в несколько смежных строк, в том же или аналогичном положении. Это боль, когда нужно переместить курсор обратно в начало вставляемого содержимого каждый раз, когда вы переходите к следующей строке. Как можно вставить (как в команде "p" ), не перемещая курсор? Или, как я могу быстро вернуть курсор туда, где он был перед вставкой?

4b9b3361

Ответ 1

Самый безопасный способ без уничтожения реестра - сделать следующее:

p`[

Если вы хотите создать ярлык, просто используйте любую из функций карты vim, которые вам подходят, например:

noremap p p`[

Ответ 2

Всякий раз, когда у меня есть последовательность шагов, чтобы повторить несколько раз, я записываю макрос, который в Vim тривиально прост. Общий метод

  • Поместите курсор, где вы хотите сделать первое изменение.
  • Введите qx, чтобы начать запись нажатий клавиш.
  • Сделайте первое редактирование.
  • Переместите курсор в позицию, где должно начинаться второе редактирование.
  • Нажмите q еще раз, чтобы завершить запись.
  • Введите @x, чтобы воспроизвести макрос и сделать следующее редактирование. Команда @принимает счет, поэтому вы можете повторять редактирование столько раз, сколько хотите с помощью одной команды.

Итак, в вашем случае вся последовательность нажатий клавиш для записи макроса может быть

qxp`[jq

и [email protected], чтобы воспроизвести его пять раз, в общей сложности 6 изменений.

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

Макросы могут быть сколь угодно длинными и сложными. Они могут содержать команды режима Ex и даже вызывать другие макросы.

Ответ 3

Вы можете быстро вернуться к тому, где вы были, перед тем, как вставить, нажав CTRL-o. Это обычно возвращается к предыдущей позиции курсора.

Я вставляю строки со всего крупного документа в одну из 3-х марок (перемещая строки, которые попадают под заголовки). Самый быстрый способ, который я нашел, это:

'ap

за которым следует CTRL-o

Ответ 4

'k'? (как в стрелке вверх)

Если вы используете "p" для вставки текста под текущей строкой, курсор будет находиться в первой строке вставляемого содержимого. Ввод "k" в командном режиме приведет вас к строке над началом вставляемого содержимого.