Часто мне нужно вставить что-то в несколько смежных строк, в том же или аналогичном положении. Это боль, когда нужно переместить курсор обратно в начало вставляемого содержимого каждый раз, когда вы переходите к следующей строке. Как можно вставить (как в команде "p" ), не перемещая курсор? Или, как я могу быстро вернуть курсор туда, где он был перед вставкой?
Вставить в Vim без перемещения курсора
Ответ 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" в командном режиме приведет вас к строке над началом вставляемого содержимого.