Клавиша Tab == 4 пробела и автоматический отступ после фигурных скобок в Vim

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

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

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

9 ответов


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

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

:help C-indenting


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

set expandtab ts=4 sw=4 ai

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

:%retab

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


чтобы иметь вкладки 4-space в большинстве файлов, real 8-wide tab char в Makefiles и автоматический отступ в различных файлах, включая C / C++, поместите это в свой :

" 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.

на многих системах 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.


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

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

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

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


редактировать ~/.vimrc

$ vim ~/.vimrc

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

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

С VIM wiki:

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

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

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

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