Моя текущая настройка предполагает 8 пробелов; как я мог переопределить это?
Моя текущая настройка предполагает 8 пробелов; как я мог переопределить это?
Ответы:
Смотря что ты имеешь в виду. Вы хотите, чтобы фактические символы табуляции в вашем файле отображались шириной в 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
Включение этого заставит клавишу табуляции (в режиме вставки) вставлять пробелы или табуляции для перехода к следующему отступу следующей табуляции, когда курсор находится в начале строки (то есть, единственные предшествующие символы - это пробел).
Более подробную информацию о любом из них смотрите в vim (например ):help 'optionname'
:help 'tabstop'
~/.vimrc
это настройки пользователя vim. Большинство людей оставляют системные настройки в покое и просто редактируют пользовательские настройки. Обратите внимание, что ~/.vimrc
не будет существовать, пока вы не создадите его в большинстве систем.
set softtabstop=4
функцию! Я устал от чтения вашего кода с помощью less
любого другого редактора, кроме как vim
только для того , чтобы увидеть дурацкие отступы, потому что вы переопределили tab как произвольное количество пробелов (даже если остальная часть системы думает иначе)! :-)
tabstop=8
для отступов, которые состоят из 4 пробелов? Я не смог понять причину после прочтения описаний различных настроек. Другой ответ говорит об использовании, tabstop=4
что имеет немного больше смысла для меня.
tabstop
Опция контролирует ширину жесткого символа табуляции. Если вы хотите, чтобы ваши отступы состояли из 4 пробельных символов, а не одиночных символов табуляции, которые имеют ширину 4, тогда ширина символа табуляции не имеет значения - вроде . На практике вы, вероятно, хотите, чтобы ширина символов табуляции отличалась от ширины ваших отступов, чтобы уменьшить вероятность маскировки символов табуляции как правильных отступов. ( list
+ expandtab
может помочь и здесь) Кроме того, вкладки шириной 8 символов являются «стандартными» - ваш терминал, Python и многие другие инструменты по умолчанию используют вкладки шириной 8 символов.
Чтобы определить это на постоянной основе для текущего пользователя, создайте (или отредактируйте) .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
:retab
для преобразования существующих tab
в spaces
. vim.wikia.com/wiki/Converting_tabs_to_spaces
Есть несколько настроек, которые определяют, использовать ли пробелы или табуляции.
Итак, вот удобные функции, которые могут быть определены в вашем ~/.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для переключения настроек.
Я скопировал и вставил это в мой файл .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 пробела.
Не такой всеобъемлющий, как принятый ответ, но он может помочь людям, которые просто хотят что-то скопировать и вставить.
Поместите нужные параметры в ~ / .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' изменен.
Источник:
:help tabstop
:help tabstop
vim.
Еще одна вещь, используйте
:retab
для преобразования существующих tab
в spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
:set sw=4
Добавить строку
set ts=4
в
~/.vimrc
файл для каждого пользователя
или
/etc/vimrc
файл для всей системы
Мой базовый ~ / .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 >>
Постоянно для всех пользователей (когда вы один на сервере):
# echo "set tabstop=4" >> /etc/vim/vimrc
Обычно на новом сервере apt-get purge nano mc
и все остальное, чтобы сэкономить ваше время. В противном случае вы переопределите редактор git
и crontab
т. Д.
F10
in, nano
но я всегда делаю некоторые трюки с сохранением (возможно F10
, это решение). или это не работает screen
? Я не помню, просто ненавижу это)