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.