Vim: вставить пустую строку над текущей строкой (не открыто, т.е. без входа в режим вставки)

21

есть ли способ вставить новую строку выше текущей, не открывая ее (не входя в режим вставки)? То есть вроде «О», но без открывания.

tmadsen
источник
2
Что означает «открытие линии»?
Маттео Рива
«открытие линии» означает переход из обычного режима в режим вставки, что происходит при нажатии «O» (о).
tmadsen

Ответы:

9

Я использую плагин Тима Поупа unimpared, который имеет команду специально для этой цели:

[<space>

И если вы хотите добавить пробел после строки, на которой вы находитесь:

]<space>

Эрик Матисон
источник
29

Определение вашего запроса O.

Логично при вставке новой строки выше было бы O.

Чтобы вставить перед курсором: i
После: a
Перед строкой (домой): I
Добавить в конце строки:A

Самое близкое, я думаю, вы придете, Iкоторый поместит курсор в начало строки.

Джош К
источник
Возможно я не был ясен. Сценарий таков: я нахожусь в обычном режиме и хочу вставить пустую строку над той, на которой я сейчас нахожусь, оставаясь в обычном режиме. Нажатие «O» переводит меня в режим вставки. Возможно нет никакого способа сделать это, и это хорошо, просто думал, что я спрошу :)
tmadsen
3
Просто нанесите на карту,m`O+Esc`
Джош К
1
Хорошая идея, не учел это. Сделал: noremap <лидер> O O <ESC>
tmadsen
2tmadsen: Вы можете отобразить это <yourkey> O <ESC>
Дзунг Нгуен
9
:h append()

Он не будет перемещать курсор, он позволит вам вставить столько строк (пустых или нет), сколько вы пожелаете, и не изменит предыдущую метку позиции.

call append(line('.')-1, '')
Люк Эрмитт
источник
да, это +1 аккуратно! / меня меняет его vimrc
Акира
Ну, у него есть несколько преимуществ, когда дело доходит до сценариев. Это немного излишне печатать иначе.
Люк Эрмит
+1 за решение, которое работает независимо от того, как он настроенformatoptions
Мика Смит
5

Вы можете отобразить любую клавишу или последовательность клавиш, которая вам нравится

m`O<ESC>``

это вставит пустую строку над текущей, сохраняя вас в обычном режиме и без изменения позиции курсора.

Маттео Рива
источник
поэтому команда для сопоставления этого с Alt-O будет такой: map <Mo> m`O <ESC> ``
K Robinson
Правильно.
Маттео Рива