Клавиша табуляции == 4 пробела и автоматический отступ после фигурных скобок в Vim - PullRequest
1180 голосов
/ 24 октября 2008

Как сделать так, чтобы vi - Vim никогда не использовал вкладки (преобразование пробелов в табуляции, плохо!), Делает клавишу табуляции == 4 пробела и автоматически делает отступ после фигурного блоки скобок типа Emacs делает?

Кроме того, как мне сохранить эти настройки, чтобы мне больше не приходилось их вводить?

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

Ответы [ 9 ]

1743 голосов
/ 24 октября 2008

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

filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

В вашем .vimrc: файле:

set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

Файлы справки занимают немного времени, чтобы привыкнуть, но чем больше вы читаете, тем лучше становится Vim:

:help smartindent

Еще лучше, вы можете встроить эти параметры в ваш источник для мобильности:

:help auto-setting

Чтобы увидеть текущие настройки:

:set all

Как указывает greywh в комментариях, smartindent был заменен на cindent, который "работает более умно", хотя все еще в основном для языков с синтаксисом, подобным C:

:help C-indenting

222 голосов
/ 27 ноября 2008

Связано, если вы открываете файл, который использует как табуляции, так и пробелы, при условии, что у вас есть

set expandtab ts=4 sw=4 ai

Вы можете заменить все вкладки пробелами во всем файле на

:%retab
86 голосов
/ 05 января 2009

Лучший способ получить отступ для конкретного типа файла - использовать filetype plugin indent on в вашем vimrc. Затем вы можете указать такие вещи, как set sw=4 sts=4 et в .vim / ftplugin / c.vim, например, без необходимости делать их глобальными для всех редактируемых файлов, а другие синтаксисы, не относящиеся к типу C, будут корректно сдаваться, тоже ( четные липы) .

51 голосов
/ 24 января 2014

Чтобы в большинстве файлов имелось 4 пробела, реальный символ табуляции шириной 8 в файлах Makefile и автоматическое отступление в различных файлах, включая C / C ++, поместите это в файл ~/.vimrc:

" Only do this part when compiled with support for autocommands.
if has("autocmd")
    " Use filetype detection and file-based automatic indenting.
    filetype plugin indent on

    " Use actual tab chars in Makefiles.
    autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif

" For everything else, use a tab width of 4 space chars.
set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.
set shiftwidth=4    " Indents will have a width of 4.
set softtabstop=4   " Sets the number of columns for a TAB.
set expandtab       " Expand TABs to spaces.
49 голосов
/ 04 августа 2014

Во многих системах Linux, таких как Ubuntu, файл .vimrc по умолчанию не существует, поэтому рекомендуется сначала его создать.

Не используйте .viminfo файл, который существует в домашнем каталоге. Используется для другой цели.

Шаг 1: перейдите в домашний каталог

cd ~

Шаг 2. Создайте файл

vim .vimrc

Шаг 3: Добавить указанную выше конфигурацию

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

Шаг 3: Сохраните файл, нажав Shift + ZZ .

28 голосов
/ 02 мая 2014

Рекомендуется использовать отступы на основе типов файлов и использовать smartindent и cindent, только если этого недостаточно.

Добавьте следующее к вашему .vimrc

set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

Надеюсь, это поможет вам как другой ответ.

11 голосов
/ 08 октября 2015

отредактируйте ~ / .vimrc

$ vim ~/.vimrc

добавить следующие строки:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
9 голосов
/ 18 ноября 2015

Из VIM вики :

:set tabstop=4
:set shiftwidth=4
:set expandtab
7 голосов
/ 24 октября 2008

Авто-отступ основан на текущем режиме синтаксиса. Я знаю, что если вы редактируете Foo.java, то вводите { и нажимаете Введите отступ в следующей строке.

Что касается вкладок, есть две настройки. В Vim введите двоеточие, а затем «set tabstop = 4», в результате чего вкладки будут отображаться в виде четырех пробелов. Снова нажмите «двоеточие» и введите «set expandtab», чтобы вставить пробелы для вкладок.

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

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