команда vi для додавання порожнього рядка?


24

У vi, я можу використовувати oабо Oдодати порожній рядок і перейти в режим вставки. Але що робити, якщо я хочу залишитися в командному режимі, чи є для цього команда?

У googling я бачу пропозиції додати речі до мого vimrc, але, схоже, повинен бути простіший спосіб (це завжди спрацює.)

Відповіді:


25

Відповідно до FAQ VIM, ви можете використовувати :putкоманду:

12.15. Як вставити порожній рядок над / під поточним рядком, не входячи в режим вставки?

Для вставки порожніх рядків можна скористатися командою ": put". Наприклад, спробуйте

: put = ''
: поставити! = ''

Для отримання додаткової інформації читайте

: допомогти: поставити

але тоді дійсно простіше додати:

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

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


15

Частина заманювання використання VI- це командний режим для маніпулювання текстом та режим редагування для додавання тексту. Це не дає вам натиснути CTRL-що-небудь, щоб досягти справ.

Інші пропозиції можуть спрацювати - я їх не пробував - але, здається, потрібно досить багато символів або VIзанадто багато маніпулювати вашим оточенням.

Спробуйте використовувати o[ESC]супроводжуваної .для кожної нової лінії , яку ви хочете додати, або 5.додати 5 рядків. Це набагато швидше, і завжди буде працювати при будь-якій установці VI.


1
Ви можете використовувати .для повторення, але ви також можете зробити <number>o<esc>, наприклад:5o<esc>
bollovan

1
Це, безумовно, спрацює. Але мені подобається бачити, як команда насправді вплине на документ, перш ніж я зможу це зробити кілька разів. Я не можу вам сказати, скільки разів я o'dдодаю новий абзац у VI, лише щоб дізнатися, що гарний абзац був насправді шістьма ретельно розбитими / переплетеними словами рядками.
Glorytoad


1

Це додасть порожній рядок після поточного рядка:

:put _ 

Як варіант, вкажіть рядок на початку.


0

На Vim 7.3: <number>o<esc>створює лише один порожній рядок.


Ну, додавши <esc>перехід знову з режиму вставки в командний режим. Я думаю, що він шукає відповідь, яка взагалі не переходить на режим вставки.
Бернхард

Ой! Я забуваю вийти з режиму вставки за допомогою <esc>. У цьому випадку воно спрацює. Він навіть дублює рядок, відредагований у всіх наступних рядках.
Хакім


0

Щоб вставити порожній рядок після поточного рядка під час перебування в командному режимі, використовуйте:

: r !echo

Це команда " read у файлі", але замість того, щоб давати їй ім'я файлу, ми кажемо йому прочитати вихід команди оболонки ( !); що команда оболонки echo, просто друкує порожній рядок. Після вставки порожнього рядка ви залишаєтесь у командному режимі.


-2

Я здивований, що ніхто більше не згадав про це:

У режимі командного рядка використовуйте 'r', а потім «Enter».

Пізно на вечірку на 7 років, хоча :)


1
За винятком того, що це виводить вас з командного режиму і замінює поточний рядок порожнім.
Джефф Шаллер

Я не впевнений, що говорить @Jeff. Мої спостереження щодо цієї команди: (1) вона не працює, якщо ви перебуваєте в порожньому рядку, і (2) в іншому випадку вона видаляє символ під курсором.
Скотт

Я пропускаю помилку; rдійсно замінює поточний персонаж. Все одно переведе вас у командний режим.
Джефф Шаллер

Домовились. Це обмеження: це потрібно робити на не порожньому рядку + на порожньому місці перед рядком. Не думав про це. Спасибі.
Ахілеш Сіддханті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.