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

StackOverflow https://stackoverflow.com/questions/234564

Вопрос

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

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

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

Это было полезно?

Решение

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

<забастовка>

Другие советы

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

set expandtab ts=4 sw=4 ai

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

:%retab

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

Чтобы иметь в большинстве файлов вкладки из 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.

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

Рекомендуется использовать отступы на основе типов файлов и использовать 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 :

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top