Переопределить вкладку как 4 пробела

Моя текущая настройка предполагает 8 пробелов; как я могу переопределить его?

Ответ 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:

  1. Всегда сохраняйте "tabstop" в 8, устанавливайте "softtabstop" и "shiftwidth" на 4 (или 3 или что вы предпочитаете) и используйте "noexpandtab". Затем Vim будет использовать сочетание вкладок и пробелов, но вводить и будет вести себя как вкладка, отображаемая каждые 4 (или 3) символа.

    Примечание. Установка "tabstop" на любое другое значение, отличное от 8, может привести к неправильному отображению файла во многих местах (например, при его печати).

  2. Установите "tabstop" и "shiftwidth" на все, что вы предпочитаете, и используйте "expandtab". Таким образом вы всегда будете вставлять пробелы. Форматирование никогда не будет испорчено при изменении "tabstop".

  3. Установите "tabstop" и "shiftwidth" на все, что вы предпочитаете, и используйте | modeline | для установки этих значений при повторном редактировании файла. Работает только при использовании Vim для редактирования файла.

  4. Всегда устанавливайте "tabstop" и "shiftwidth" в одно и то же значение и "noexpandtab". Затем это должно работать (только для начальных отступов) для любого параметра табуляции, который люди используют. Возможно, было бы неплохо иметь вкладки после того, как первый непустой вставлен как пробел, если вы это сделаете. В противном случае совпадающие комментарии будут ошибочными, если "tabstop" изменен.

Источник:

Ответ 8

Добавить строку
set ts=4
в
~/.vimrc файл для пользователя

или
 /etc/vimrc файл для всей системы

Ответ 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 >>