Установка параметров пробела Vim по типу файла

155

На моей работе я должен следовать домашнему стилю для отступов, который выглядит следующим образом:

  • 2 пробела при кодировании html и ruby
  • вкладки при кодировании JavaScript, рекомендуется с tabwidth = 4

Каков наилучший способ указать различные параметры пробелов для каждого типа файла?

nelstrom
источник
Все эти ответы только запутали меня. Проблема в том, что варианты до предпочтения. Принятый ответ имеет приятный синтаксис. Это было отличное руководство: vimcasts.org/transcripts/2/en
Микаэль Линдлоф,

Ответы:

245

Есть много способов, но вот простой, легкий для понимания способ. добавьте эти строки в ваш ~/.vimrc:

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4
Питер
источник
27
ts = 'количество пробелов, которые <Tab> в файле использует' sts = 'количество пробелов, которые <Tab> использует при редактировании' sw = 'количество пробелов, которые нужно использовать для (автоматического) шага отступа', подробности см. в: vimdoc.sourceforge .net / htmldoc / quickref.html # option-list
zdsbs
Мне нужно было добавить команду расширения как минимум для рубина, см. Здесь ответ «слишком много PHP»
Майкл Даррант
87

Ответ Питера достаточно прост, но, к сожалению, варианты не верны. Вместо этого вам нужно использовать следующие параметры:

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

Также обратите внимание:

  • Вы можете сделать символы табуляции vim show с помощью :set list.
  • После того, как вы правильно установили параметры табуляции / пробела, вы можете заставить vim восстановить файл (заменить пробелы табуляцией или наоборот) с помощью :retab!команды.
слишком много PHP
источник
2
Какие преимущества от expandtabболееsts=2
Джеймс McMahon
12
@JamesMcMahon expandtab расширяет все вкладки до пробелов. sts (softtabstop) вставляет пробелы и вкладки для отступов: столько вкладок, сколько поместится в отступ в зависимости от размера табуляции, а затем пробелов после этого. Конечно, если функция расширения включена, все вставляемые вкладки преобразуются в пробелы. stackoverflow.com/questions/1562336/… может помочь в дальнейшем. Без расширенной вкладки в ответе Питера будут вставлены вкладки шириной 2 символа, а не пробелы.
ajmccluskey
35

+1 к ответу Питера, но Vim предлагает и другое решение. Если вы хотите сделать что-то более сложное, чем одинsetlocal , например, настроить сразу несколько параметров, команд и отображений, тогда на помощь придет функция подключаемого модуля filetype в vim.

Вы должны иметь filetype plugin onили filetype plugin indent onв вашем .vimrc, а затем создать плагин для, например, ruby, который вы можете создать ~/.vim/ftplugin/ruby.vim. Технически вы можете использовать любые команды , как здесь, чтобы работать , когда файл рубин загружен, но рекомендуемые включает в себя setlocal, map <buffer>, command -buffer, и определяющие функциях. Много дополнительной информации в руководстве пользователя; если вы довольно хорошо знакомы со сценариями vim, тогда переходите к :help 41.11, иначе читайте :help usr_40и :help usr_41.

Hobbs
источник
10

Есть также хороший скрипт vim: DetectIndent, который пытается обнаружить отступ файла, который вы открываете. Это очень удобно, если вы работаете со многими файлами с разным стилем кодирования.

Я использую автокоманду в моем .vimrc :

:autocmd BufReadPost * :DetectIndent 
Бенедикт Вальдвогель
источник
0

Чтобы вставить пробел при каждом нажатии клавиши табуляции, установите параметр «expandtab»:

:set expandtab

Следующим шагом является контроль количества пробелов, которые будут вставлены при нажатии клавиши табуляции, установите параметр «табуляция». Например, чтобы вставить 2 пробела для вкладки, используйте:

:set tabstop=2

ссылка: http://vim.wikia.com/wiki/Converting_tabs_to_spaces

bartoindahouse
источник