Vim autoindent работает не так, как я ожидаю после 'if', 'for', 'while'; как я могу заставить его работать так, как я хочу? - PullRequest
4 голосов
/ 08 декабря 2011

В моем .vimrc файле set autoindent включено автоматическое отступление, которое перемещается к предыдущему отступу примерно так ( - позиция курсора)

while (! skynet.selfAware()){
    DARPA.funding++;█
}

Нажатие ввода / возврата каретки будетyield

while (! skynet.selfAware()){
    DARPA.funding++;
    █
}

Но есть ли способ сделать vim достаточно умным, чтобы понять, что требуется новый отступ, такой, что начиная с этого

while (! skynet.selfAware()){█
}

нажатие ввода / возврата каретки даст

while (! skynet.selfAware()){
    █
}

вместо

while (! skynet.selfAware()){
█
}

Ответы [ 2 ]

6 голосов
/ 08 декабря 2011

Вместо autoindent используйте smartindent. Это именно то, что вы ищете.

0 голосов
/ 08 декабря 2011

Вы можете попробовать включить cindent. Для управления его работой доступно огромное количество опций, см. :help cinoptions-values.

...