Команда vi для добавления пустой строки?

24

В vi я могу использовать oили, Oчтобы добавить пустую строку и перейти в режим вставки. Но что, если я хочу остаться в командном режиме, есть ли команда для этого?

В googling я вижу предложения добавить что-то в мой vimrc, но кажется, что должен быть более простой способ (который всегда будет работать.)

Эрик Уилсон
источник

Ответы:

25

В соответствии с VIM FAQ вы можете использовать :putкоманду:

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

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

: положить = ''
: положить! знак равно

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

: help: поставить

но тогда действительно легче добавить:

map <Enter> o<ESC>
map <S-Enter> O<ESC>

к вашему .vimrc. Таким образом , вы можете нажать Enterили Shift-Enterв normal modeвставить пустую строку выше или ниже текущей строки. Конечно, замените <Enter>и <S-Enter>вашими предпочтительными ключами.

Мистер Шунц
источник
15

Частью привлекательности использования VIявляется наличие командного режима для манипулирования текстом и режима редактирования для добавления текста. Это избавляет вас от необходимости нажимать CTRL - что угодно для достижения цели.

Другие предложения могут работать - я не пробовал их - но они, кажется, требуют довольно много символов или VIслишком много манипулируют вашей средой.

Попробуйте использовать o[ESC]сопровождаемый a .для каждой новой строки, которую вы хотите добавить, или 5.добавить 5 строк. Это намного быстрее, и всегда будет работать на любой установке VI.

Glorytoad
источник
1
Вы можете использовать, .чтобы повторить, но вы также можете сделать <number>o<esc>, например:5o<esc>
bollovan
1
Это, безусловно, сработает. Но мне нравится видеть, как команда на самом деле повлияет на документ, прежде чем я сделаю это несколько раз. Я не могу сказать вам, сколько раз я o'dдобавлял новый абзац в VI, только чтобы узнать, что симпатичный абзац был на самом деле шестью тщательно разбитыми / завернутыми в слова строками.
Glorytoad
2

В VIM также есть :normal oили :normal O.

Стивен Притчард
источник
1

Это добавит пустую строку после текущей строки:

:put _ 

Или укажите строку в начале.

justerman
источник
0

На Vim 7.3: <number>o<esc>создает только одну пустую строку.

крупный чиновник
источник
Ну, добавляя, <esc>вы снова переходите из режима вставки в командный режим. Я думаю, что он ищет ответ, который не идет в режим вставки вообще.
Бернхард
Ой! Я забыл выйти из режима вставки с помощью <esc>. В этом случае это будет работать. Он даже дублирует строку, отредактированную на всех следующих строках.
Хаким
0

Чтобы вставить пустую строку после текущей строки, оставаясь в командном режиме, используйте:

: r !echo

Это команда « read in a file», но вместо того, чтобы дать ей имя файла, мы говорим ей прочитать вывод команды shell ( !); эта команда оболочки echoпросто печатает пустую строку. После вставки пустой строки вы остаетесь в командном режиме.

Джефф Шаллер
источник
-2

Я удивлен, что никто больше не упомянул это:

Используйте 'r', а затем 'Enter key' в режиме командной строки.

Опоздал на вечеринку на 7 лет, хотя :)

Ахилеш Сиддханти
источник
1
За исключением того, что это выводит вас из командного режима и заменяет текущую строку пустой.
Джефф Шаллер
Я не уверен, что @Jeff говорит. Мои наблюдения относительно этой команды: (1) она не работает, если вы сейчас находитесь на пустой строке, и (2) в противном случае она удаляет символ под курсором.
Скотт
Я оговорился; rдействительно заменяет текущий символ. По-прежнему переводит вас в командный режим.
Джефф Шаллер
Согласовано. Это ограничение: это должно быть сделано на непустой строке + на пустом месте перед строкой. Не думал об этом. Спасибо.
Ахилеш Сиддханти