Есть ли какой-либо ключ по умолчанию в vim для создания новой строки после текущей строки и оставаться в нормальном режиме?

При редактировании кода мне всегда нужна эта функция: создайте новую строку после текущей строки, переместите курсор на новую строку (сохранение curent indention!) и оставайтесь в нормальном режиме. Например (предполагая, что █ является курсором):

function a() {
    foon█tion()
}

После ввода команды мне нужно сделать следующее:

function a() {
    foonction()
    █
}

Я могу добиться такого же эффекта, если я, например, нажимаю <Enter><Esc>, находясь в режиме Вставки с курсором в конце строки. Команда o также действует аналогично, но она удаляет отступ после выхода из режима вставки. Поэтому мне нужно одно нажатие, чтобы вставить одну строку вниз.

inb4 nmap: Я знаю, как сопоставить команду для выполнения такой вещи, но мне интересно, есть ли стандартный способ сделать это.

Ответы

Ответ 2

Нет такого ключа, но получается, что мы можем это сделать - без вдавливания - с четырьмя нажатиями клавиш: :pu_<Enter>

Это вопрос vim faq, где ответ заключается в использовании команды Ex :put:

12,15. Как вставить пустую строку выше/ниже текущей строки без ввода режима вставки?

Вы можете использовать команду ": put" ex для вставки пустых строк. Например, попробуйте

:put =''
:put! =''

Для получения дополнительной информации прочитайте: help: put

:put помещает текст из данного регистра после текущей строки и оставляет вас в нормальном режиме. :put! помещает текст в строку над текущей строкой.

В приведенных выше примерах используется регистр expression =, чтобы отправить пустую строку в команду put. Мы можем обрезать это, используя регистр черных дыр vim, _: :put _.

Наконец, это может быть сокращено до: :pu_<Enter> и :pu!_<Enter>.

См. также: :help registers.

Наконец, обратите внимание, что это также особенность плагина Tim Pope без изменений.

Из необработанного README:

Имеются сопоставления строк. [<Space> и ]<Space> добавить новые строки до и после строки курсора. [e и ]e обменивать текущую строку с тем, что находится выше или ниже.