@ heinrich5991 Я не понимаю. Мне не нужно 8 пробелов, чтобы понять, что строка имеет отступ, и больше, чем необходимо, означает ограничение символов, которые вы можете просматривать на длинной строке текста (по крайней мере, перед переносом). Но каждому свое. :)
weberc2
40
@ heinrich5991 Мой аргумент - «используйте как можно меньше, чтобы легко идентифицировать строку с отступом». По моей оценке, способность легко идентифицировать отступ быстро падает при <3 пробелах и перестает увеличиваться в 4 пробелах. Следовательно, отступ, превышающий 4 пробела, по моему опыту - пустая трата времени.
weberc2
7
@ weberc2 Не могу согласиться, приятель. Вот почему я чувствую себя так чертовски клаустрофобно, читая Ruby или «современный JavaScript», каждый из которых использует 2 пробела для отступов. Это на законных основаниях заставляет меня напрягать глаза, когда я пытаюсь следовать сильно вложенным структурам. Жесткие вкладки для проклятой победы.
Смотря что ты имеешь в виду. Вы хотите, чтобы фактические символы табуляции в вашем файле отображались шириной в 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'
Также важно убедиться, что в Makefiles всегда используются жесткие символы табуляции, в противном случае сборка не удастся! Я показал, как, на stackoverflow.com/questions/234564/…
Шервин Эмами
30
@ Не определено Это системные настройки vim. ~/.vimrcэто настройки пользователя vim. Большинство людей оставляют системные настройки в покое и просто редактируют пользовательские настройки. Обратите внимание, что ~/.vimrcне будет существовать, пока вы не создадите его в большинстве систем.
Лоуренс Гонсалвес
4
Пользователи Vim принимают к сведению эту set softtabstop=4функцию! Я устал от чтения вашего кода с помощью lessлюбого другого редактора, кроме как vimтолько для того , чтобы увидеть дурацкие отступы, потому что вы переопределили tab как произвольное количество пробелов (даже если остальная часть системы думает иначе)! :-)
Огрский псалом33
7
Может кто-нибудь помочь мне понять, почему этот ответ говорит использовать tabstop=8для отступов, которые состоят из 4 пробелов? Я не смог понять причину после прочтения описаний различных настроек. Другой ответ говорит об использовании, tabstop=4что имеет немного больше смысла для меня.
Кодос Джонсон
6
@KodosJohnson tabstopОпция контролирует ширину жесткого символа табуляции. Если вы хотите, чтобы ваши отступы состояли из 4 пробельных символов, а не одиночных символов табуляции, которые имеют ширину 4, тогда ширина символа табуляции не имеет значения - вроде . На практике вы, вероятно, хотите, чтобы ширина символов табуляции отличалась от ширины ваших отступов, чтобы уменьшить вероятность маскировки символов табуляции как правильных отступов. ( list+ expandtabможет помочь и здесь) Кроме того, вкладки шириной 8 символов являются «стандартными» - ваш терминал, Python и многие другие инструменты по умолчанию используют вкладки шириной 8 символов.
Лоуренс Гонсалвес
747
Чтобы определить это на постоянной основе для текущего пользователя, создайте (или отредактируйте) .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
Если у вас нет ~ / .vimrc, попробуйте с / etc / vim / vimrc. В моем случае на Ubuntu 16.04 есть файл конфигурации. Но имейте в виду, что изменение этого файла приведет к глобальному использованию конфигурации.
Есть несколько настроек, которые определяют, использовать ли пробелы или табуляции.
Итак, вот удобные функции, которые могут быть определены в вашем ~/.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):
" 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для переключения настроек.
" 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' изменен.
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т. Д.
Если вы установите EDITOR, большинство программ будут уважать его.
Д. Бен Кнобл
@ D.BenKnoble ты прав. я пробовал. сейчас я предпочитаю экономить свое время и нервы. не могу проверить, что именно работает с F10in, nanoно я всегда делаю некоторые трюки с сохранением (возможно F10, это решение). или это не работает screen? Я не помню, просто ненавижу это)
Ответы:
Смотря что ты имеешь в виду. Вы хотите, чтобы фактические символы табуляции в вашем файле отображались шириной в 4 пробела, или под «табулатурой» вы на самом деле подразумеваете отступ , генерируемый нажатием клавиши табуляции, в результате чего файл буквально содержит (до) 4 пробелов для каждую "вкладку" набираешь?
В зависимости от вашего ответа у вас должен работать один из следующих наборов настроек:
Для символов табуляции, которые появляются в 4 пробела :
Если вы используете реальный символ табуляции в исходном коде, вы, вероятно, также захотите эти настройки (на самом деле это настройки по умолчанию, но вы можете установить их для защиты):
Наконец, если вы хотите, чтобы отступ соответствовал одной вкладке, вы также должны использовать:
Для отступов, которые состоят из 4 пробелов, но вводятся с помощью клавиши табуляции:
Чтобы сделать вышеуказанные настройки постоянными, добавьте эти строки в ваш vimrc .
Если вам нужно внести коррективы или просто хотите понять, что означают все эти опции, вот разбивка того, что означает каждая опция:
Более подробную информацию о любом из них смотрите в 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 будут применены настройки вкладки.
источник
:retab
для преобразования существующихtab
вspaces
. vim.wikia.com/wiki/Converting_tabs_to_spacesили сокращение для vim modeline:
источник
Есть несколько настроек, которые определяют, использовать ли пробелы или табуляции.
Итак, вот удобные функции, которые могут быть определены в вашем
~/.vimrc
файле:Применение:
Чтобы использовать его для каждого расширения файла, можно использовать следующий синтаксис (добавленный в
.vimrc
):Смотрите также: Преобразование вкладок в пробелы .
Вот еще один фрагмент из Викия, который можно использовать для переключения между символами табуляции и пробелами :
Это позволяет использовать 4 пробела для каждой вкладки и отображение F9для переключения настроек.
источник
Я скопировал и вставил это в мой файл .vimrc:
Первые 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источник
См. Мастерство редактора VI
источник
Добавить строку
set ts=4
в
~/.vimrc
файл для каждого пользователяили
/etc/vimrc
файл для всей системыисточник
Мой базовый ~ / .vimrc с комментарием:
источник
Постоянно для всех пользователей (когда вы один на сервере):
Обычно на новом сервере
apt-get purge nano mc
и все остальное, чтобы сэкономить ваше время. В противном случае вы переопределите редакторgit
иcrontab
т. Д.источник
F10
in,nano
но я всегда делаю некоторые трюки с сохранением (возможноF10
, это решение). или это не работаетscreen
? Я не помню, просто ненавижу это)