it-swarm.com.ru

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

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

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

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

1179
mmcdole

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

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

set expandtab ts=4 sw=4 ai

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

:%retab
223
netjeff

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

86
graywh

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

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

49
Erick

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

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

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

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

29
Chaudhry Junaid

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

$ vim ~/.vimrc

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

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
11
Yusuf Ibrahim

Из VIM вики :

:set tabstop=4
:set shiftwidth=4
:set expandtab
10
User

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

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

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

6
Joey Gibson