Как сделать автоматический отступ блока в vim? - PullRequest
5 голосов
/ 10 января 2010

Мне трудно понять это. Я набираю следующее с помощью плагина AutoClose.vim:

function trim() {|}

| это позиция моего курсора. Чего я хочу достичь, так это, как только я нажму, введите код должен выглядеть так:

function trim() {
    |
}

Вместо этого сейчас происходит следующее:

function trim() {
|}

Ответы [ 4 ]

2 голосов
/ 10 января 2010

Попробуйте :set cindent. Это не будет делать именно то, что вы просите, так как нажатие Enter один раз добавляет только одну новую строку, а не две, но вы должны получить что-то вроде:

function trim() {
    |}

После ввода последней строки вашей функции, используйте Ctrl + D (в режиме вставки), чтобы "отступить" (напротив отступа) } назад к левому полю.

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

1 голос
/ 10 января 2010

Почему бы вам не изменить Autoclose.vim, чтобы поместить закрывающую скобку на следующую строку, если курсор находится в конце открывающей строки, то при нажатии клавиши ввода он будет иметь отступ.

До:

function trim() {|
}

После :

function trim() {
  |
}
1 голос
/ 10 января 2010

Еще одна полезная настройка vim - :set smartindent, которая очень похожа на cindent, но более общая. Исследуйте как с :help smartindent, так и с :help cindent

0 голосов
/ 25 января 2016

установка их в vimrc должна решить проблему:

set ai
set smartindent
ino {<CR> {<CR>}<ESC>O

Последняя строка, по сути, автоматически заполняет ваш { и ставит вас в нужное место после ввода { с последующим Введите .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...