Интересно, смогу ли я вставить новую строку, не выходя из нормального режима. Например, у меня есть две строки:
this is line one
this is line two
И курсор находится на первой строке. Теперь я хочу новую строку между первой и второй строкой, вот так:
this is line one
this is line two
Я знаю, что когда я нахожусь в нормальном режиме, я могу просто нажать o
. Но это войдет в режим вставки.
Как я могу вставить новую строку, как и остаться в обычном режиме?
normal-mode
Alex
источник
источник
Ответы:
Я использую отображение для этого:
Таким образом, вы можете вставить строку под курсором
<Leader>o
и одну на предыдущей строке с<Leader>O
.Примечание. Можно утверждать, что для этого требуется столько же нажатий клавиш,
o<Esc>
но, надеюсь, вы выбрали своего лидера, чтобы упростить этот вид картирования. Кроме того, я действительно не уверен, что есть встроенный способ сделать это.источник
Решение, которое не проходит через режим вставки, не перемещает курсор и позволяет использовать счетчик для добавления нескольких строк одновременно ( 3\oи т. Д.):
источник
Если вы не хотите добавлять сопоставления, вы можете
yy
вставить пустую строку, а затем вставитьp
для курсора ниже иP
для курсора выше.источник
o
реестре с помощью"oyy
и вставьте его оттуда при необходимости с помощью"op
.Я лично рекомендую использовать плагин Тима Поупа Unimpaired . Он предоставляет множество отображений , но те , что вы будете ищет это
[<space>
и]<space>
которые создают пустые строки выше и ниже текущей строки соответственно. Unimpaired также предоставляет удобные сопоставления для перемещения по списку быстрых исправлений, списку буферов, переключению параметров и многим другим. Смотрите:h unimpaired
больше.Если вы не хотите использовать неповрежденный плагин, но, как показано ниже, приведите несколько быстрых сопоставлений в вашем
~/.vimrc
файле:источник
Мое картирование использует
Shift-Enter
. Он отличается от других тем, что курсор возвращается к той же строке и столбцу с помощью знака o.источник
<S-Enter>
не работает в эмуляторах терминала (оно работает только в gVim). Так что вам нужно будет выбрать другую комбинацию клавиш, чтобы сопоставить ее ;-)Этот ответ Максима Кима изменил жизнь:
и мой рифф на нем:
Поместите эти строки в свой
vimrc
. Затем перейдите в начало второй строки файла и хит Space, Enterили идти до конца первой строки и хита Shift+Space, Enter. Либо добавит пустую строку между первой и второй строками и оставит вас в обычном режиме.Вы также можете использовать их для любого другого нажатия клавиши - Spaceили Shift+Spaceпосле нужной клавиши, и он вставит или добавит ее соответственно.
источник
Эти сопоставления будут делать именно то, что вы ищете.
Они вставляют n строк новой строки до или после курсора; удерживая курсор точно там, где он есть, без изменения списка переходов.
Другое решение - просто создать ярлык, который заполняет неназванный регистр новой строкой. Затем вы можете просто использовать команды put, p или P, чтобы вставить новые строки. Например:
источник
Мое картирование для этого
Отличается от statox, так как держит курсор в том же месте.
источник
<silent>
значит?:h map-silent
.Мое личное решение вставляет символ новой строки в регистр выражений и вставляет его после текущей строки, а затем возвращается в исходное положение:
источник