Клавиша 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
автоматический отступ основан на текущем режиме синтаксиса. Я знаю, что если вы редактируете Фу.java, затем введите {
и наезд Enter отступы в следующей строке.
что касается вкладок, есть две настройки. В Vim введите двоеточие, а затем "set tabstop=4", который установит вкладки для отображения в виде четырех пробелов. Нажмите двоеточие еще раз и введите "set expandtab", который будет вставлять пробелы для вкладок.
вы можете поместить эти настройки в a .vimrc (или _vimrc on Windows) в вашем домашнем каталоге, поэтому вам нужно ввести их только один раз.