it-swarm.com.ru

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

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

980
Ricky

Смотря что ты имеешь в виду. Вы хотите, чтобы фактические символы табуляции в вашем файле отображались в 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

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

Для получения дополнительной информации по любому из них см. :help 'optionname' в vim (например, :help 'tabstop')

1454
Laurence Gonsalves

Чтобы определить это на постоянной основе для текущего пользователя, создайте (или отредактируйте) файл .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
705
Alan Haggai Alavi

или сокращение для vim modeline:

vim :set ts=4 sw=4 sts=4 et :
51
zen

Я скопировал и вставил это в мой файл .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

Первые 2 настройки означают, что когда я нажимаю клавишу Tab, я получаю 4 пробела. Третий параметр означает, что когда я делаю V> (то есть визуальный и отступ), я также получаю 4 пробела.

Не такой всеобъемлющий, как принятый ответ, но он может помочь людям, которые просто хотят что-то скопировать и вставить.

23
Snowcrash

Есть несколько настроек, которые определяют, использовать ли пробелы или табуляции.

Итак, вот удобные функции, которые могут быть определены в вашем файле ~/.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
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 переключать настройки.

13
kenorb

Поместите нужные параметры в файл ~/.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' изменен.

Источник:

13
ElasticThoughts

Еще одна вещь, используйте
:retab
для преобразования существующего tab в spaceshttp://vim.wikia.com/wiki/Converting_tabs_to_spaces

9
DawnSong

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

6
Alok Singh Mahor
:set sw=4

Смотрите Освоение редактора VI

5
Amarghosh