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


21

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


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

Правильно.
Маттео Рива

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.