Авто-отступ пробелов с C в VIM? - PullRequest
       50

Авто-отступ пробелов с C в VIM?

82 голосов
/ 19 сентября 2008

Я был несколько избалован использованием Eclipse и Java. Я начал использовать vim для написания C-кода в среде Linux. Есть ли способ, чтобы vim автоматически делал правильный интервал для блоков?

Таким образом, после ввода {в следующей строке будет добавлено 2 пробела, а при возврате в этой строке он останется с тем же отступом, а a} вернется на 2 пробела?

Ответы [ 7 ]

132 голосов
/ 19 сентября 2008

Эти две команды должны сделать это:

:set autoindent
:set cindent

Для получения бонусных очков поместите их в файл с именем .vimrc, расположенный в вашем домашнем каталоге на linux

53 голосов
/ 19 сентября 2008

Я написал все о вкладках в vim , который дает несколько интересных вещей, о которых вы не спрашивали. Для автоматического отступа фигурных скобок используйте:

:set cindent

Для отступа в два пробела (вместо одной табуляции из восьми пробелов по умолчанию vim):

:set shiftwidth=2

Чтобы vim не преобразовывал восемь пробелов в табуляцию:

:set expandtab

Если вы когда-нибудь захотите изменить отступ блока текста, используйте <и>. Я обычно использую это в сочетании с режимом выбора блока (v, выделение блока текста, <или>).

(Я бы попытался отговорить вас от использования отступа в два пробела, поскольку мне (и большинству других людей) трудно читать, но это другое обсуждение.)

8 голосов
/ 19 сентября 2008

Многие функции vim (например, autoindent и cindent) по умолчанию отключены. Чтобы действительно увидеть, что vim может сделать для вас, вам нужен приличный ~/.vimrc.

Хороший стартер в $VIMRUNTIME/vimrc_example.vim. Если вы хотите попробовать это, используйте

:source $VIMRUNTIME/vimrc_example.vim

когда в Vim.

Я бы фактически предложил просто скопировать содержимое на ваш ~/.vimrc, так как оно хорошо прокомментировано, и хорошее место, чтобы начать изучать, как использовать vim. Вы можете сделать это,

:e $VIMRUNTIME/vimrc_example.vim
:w! ~/.vimrc

Это перезапишет ваш текущий ~/.vimrc, но если все, что у вас есть, это настройки отступа, предложенные Давром, я бы не стал потеть, поскольку пример vimrc позаботится об этом и для вас. Для полного ознакомления с примером и того, что он делает для вас, см. :help vimrc-intro.

6 голосов
/ 17 апреля 2010

Просто запустите:

user@host:~ $ echo set autoindent >> .vimrc
3 голосов
/ 22 июня 2011

Я думаю, что лучший ответ на самом деле объясняется в Вики Виме:

http://vim.wikia.com/wiki/Indenting_source_code

Обратите внимание, что не рекомендуется использовать «set autoindent». Лучшая особенность, которую я нахожу в этом объяснении, - это возможность устанавливать настройки для каждого файла, что особенно полезно, если вы программируете, например, на python и C ++, так как вам нужно 4 пробела для вкладок в первом и 2 для пробелы в последнем.

0 голосов
/ 19 сентября 2008

и всегда помните это почтенное объяснение Пробелов + Вкладки:

http://www.jwz.org/doc/tabs-vs-spaces.html

0 голосов
/ 19 сентября 2008

Попробуйте:

set sw = 2

set ts = 2

набор smartindent

...