Tab key == 4 пробела и авто-отступ после фигурных скобок в Vim

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

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

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

Ответ 1

Как уже упоминалось в нескольких ответах ниже, предпочтительный метод теперь НЕ использовать 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

Поскольку graywh указывает в комментариях, smartindent был заменен на cindent, который "работает более умно", хотя в основном для языков с синтаксисом типа C

:help C-indenting

Забастовкa >

Ответ 2

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

set expandtab ts=4 sw=4 ai

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

:%retab

Ответ 3

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

Ответ 4

Чтобы иметь 4-х сторонние вкладки в большинстве файлов, реальную вкладку 8-го уровня char в Make файлах и автоматический отступ в различных файлах, включая 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.

Ответ 5

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

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

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

cd ~

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

vim .vimrc

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

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

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

Ответ 6

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

Добавьте в свой .vimrc

следующее:
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

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

Ответ 7

Из VIM wiki:

:set tabstop=4
:set shiftwidth=4
:set expandtab

Ответ 8

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

$ vim ~/.vimrc

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

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

Ответ 9

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

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

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

Ответ 10

@netjeff получил лучший ответ IMHO.

Он динамичен и выполняет одно и то же в одной строке.

set expandtab ts=4 sw=4 ai

Ответ 11

В некотором роде ответом за пределами ящика, но я использую полностью программируемую клавиатуру и имею 4 макроса пространства, установленного в fn + tab.