Почему VIM не делает правильный отступ для двухстрочного цикла?
Я ввел следующий код в VIM, почему он не делает отступ правильно? Здесь я хочу повторить один и тот же цикл 3 раза, они не являются вложенными циклами. Этот код просто опишите мою проблему.
#include <stdio.h>
int main() {
int c;
for (c = 0; c < 100; ++c)
printf("%d\t%c\n", c, c);
for (c = 0; c < 100; ++c)
printf("%d\t%c\n", c, c);
for (c = 0; c < 100; ++c)
printf("%d\t%c\n"; c, c)
return 0;
}
Это мое .vimrc
конфигурация
set expandtab
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent
Что-то не так в этих настройках?
Тот же код в emacs
выглядит так
#include <stdio.h>
int main() {
int c;
for (c = 0; c < 100; ++c)
printf("%d\t%c", c, c);
for (c = 0; c < 100; ++c)
printf("%d\t%c", c, c);
for (c = 0; c < 100; ++c)
printf("%d\t%c", c, c);
return 0;
}
2 ответа
Попробуй это:
#include <stdio.h>
int main() {
int c;
for (c = 0; c < 100; ++c) {
printf("%d\t%c\n", c, c);
for (c = 0; c < 100; ++c) {
printf("%d\t%c\n", c, c);
for (c = 0; c < 100; ++c) {
printf("%d\t%c\n"; c, c)
}
}
}
return 0;
}
Добавьте следующее в ваш vimrc. Это включит плагины файловых типов и получит нужные отступы.
filetype plugin indent on
В соответствии с :h smartindent
, Умный отступ будет вставлять только вкладки, если вы не вставите фигурные скобки.
Normally 'autoindent' should also be on when using 'smartindent'.
An indent is automatically inserted:
- After a line ending in '{'.
- After a line starting with a keyword from 'cinwords'.
- Before a line starting with '}' (only with the "O" command).
When typing '}' as the first character in a new line, that line is
given the same indent as the matching '{'.