Моя текущая настройка предполагает 8 пробелов; как я могу переопределить его?
Переопределить вкладку как 4 пробела
Ответ 1
Это зависит от того, что вы имеете в виду. Вы хотите, чтобы фактические символы табуляции в вашем файле отображались в 4-х местах по ширине или "вкладкой", вы на самом деле означаете отступ, сгенерированный нажатием клавиши табуляции, что приведет к тому, что файл будет буквально содержать (до) 4 пробела для каждой "вкладке", которую вы вводите?
В зависимости от вашего ответа один из следующих наборов настройки должны работать для вас:
-
Для символов табуляции, которые отображаются на 4-х уровневом пространстве:
set tabstop=4
Если вы используете фактический символ табуляции в своем исходном коде, вам, вероятно, также нужны эти настройки (это фактически значения по умолчанию, но вы можете установить их защитно):
set softtabstop=0 noexpandtab
Наконец, если вы хотите, чтобы отступ соответствовал одной вкладке, вы также должны использовать:
set shiftwidth=4
-
Для отступов, состоящих из 4 пробелов, но вводимых с помощью клавиши табуляции:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Чтобы сделать вышеуказанные настройки постоянными, добавьте эти строки на vimrc.
Если вам нужно внести коррективы или просто хотите понять, что означают эти параметры, вот разбивка того, что означает каждый вариант:
tabstop
Ширина жесткой вкладки, измеренная в "пробелах" - эффективно (максимальная) ширина фактического символа табуляции.
shiftwidth
Размер "отступа". Он также измеряется в пробелах, поэтому, если ваша база кода отступает с символами табуляции, вы хотите, чтобы
shiftwidth
равнялось количеству символов табуляции разtabstop
. Это также используется такими вещами, как команды=
,>
и<
.
softtabstop
Установка этого значения в ненулевое значение, отличное от
tabstop
, сделает клавишу табуляции (в режиме вставки) вставьте комбинацию пробелов (и, возможно, вкладок), чтобы имитировать табуляцию на этой ширине.
expandtab
Включение этого приведет к тому, что клавиша табуляции (в режиме вставки) будет вставлять пробелы вместо символы табуляции. Это также влияет на поведение команды
retab
.
smarttab
Включение этого приведет к тому, что клавиша табуляции (в режиме вставки) вставляет пробелы или вкладки в перейти к следующему отступу следующего tabstop, когда курсор находится в начале строки (т.е. только предшествующие символы - это пробелы).
Подробнее о любом из них см. :help 'optionname'
в vim (например, :help 'tabstop'
)
Ответ 2
Чтобы определить это на постоянной основе для текущего пользователя, создайте (или отредактируйте) файл .vimrc
:
$ vim ~/.vimrc
Затем вставьте конфигурацию ниже в файл. После перезапуска vim будут применены настройки вкладки.
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
Ответ 3
или сокращение для моделирования vim:
vim :set ts=4 sw=4 sts=4 et :
Ответ 4
Я скопировал и вложил это в мой .vimrc файл:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
Первые две настройки означают, что когда я нажимаю Tab, я получаю 4 пробела.
Третья настройка означает, что когда я делаю V>
(т.е. Визуальный и отступы), я также получаю 4 пробела.
Не такой всеобъемлющий, как принятый ответ, но он может помочь людям, которые просто хотят что-то скопировать и вставить.
Ответ 5
Есть несколько настроек, которые определяют, использовать ли пробелы или табуляции.
Итак, вот удобные функции, которые можно определить в вашем файле ~/.vimrc
:
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
Использование:
:call UseTabs()
:call UseSpaces()
Чтобы использовать его для каждого расширения файла, можно использовать следующий синтаксис (добавлен в .vimrc
):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
См. также: Преобразование вкладок в пробелы.
Вот еще один фрагмент из Викия, который можно использовать для переключения между вкладками и пробелами:
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
Он позволяет использовать 4 пробела для каждой вкладки и отображение на F9 для переключения настроек.
Ответ 6
Поместите нужные параметры в файл ~/.vimrc. См. Ниже некоторые рекомендации и рекомендации.
Существует четыре основных способа использования вкладок в Vim:
-
Всегда сохраняйте "tabstop" в 8, устанавливайте "softtabstop" и "shiftwidth" на 4 (или 3 или что вы предпочитаете) и используйте "noexpandtab". Затем Vim будет использовать сочетание вкладок и пробелов, но вводить и будет вести себя как вкладка, отображаемая каждые 4 (или 3) символа.
Примечание. Установка "tabstop" на любое другое значение, отличное от 8, может привести к неправильному отображению файла во многих местах (например, при его печати).
-
Установите "tabstop" и "shiftwidth" на все, что вы предпочитаете, и используйте "expandtab". Таким образом вы всегда будете вставлять пробелы. Форматирование никогда не будет испорчено при изменении "tabstop".
-
Установите "tabstop" и "shiftwidth" на все, что вы предпочитаете, и используйте | modeline | для установки этих значений при повторном редактировании файла. Работает только при использовании Vim для редактирования файла.
-
Всегда устанавливайте "tabstop" и "shiftwidth" в одно и то же значение и "noexpandtab". Затем это должно работать (только для начальных отступов) для любого параметра табуляции, который люди используют. Возможно, было бы неплохо иметь вкладки после того, как первый непустой вставлен как пробел, если вы это сделаете. В противном случае совпадающие комментарии будут ошибочными, если "tabstop" изменен.
Источник:
- vimdoc.sourceforge.net/htmldoc/options.html#'tabstop"
-
:help tabstop
Ответ 7
Еще одна вещь, использование :retab
конвертировать существующие tab
в spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
Ответ 8
Добавить строку set ts=4
в ~/.vimrc
файл для пользователя
или
/etc/vimrc
файл для всей системы
Ответ 9
:set sw=4
Ответ 10
Мой основной ~/.vimrc с комментарием:
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>