Установка параметров пробела Vim по типу файла - PullRequest
142 голосов
/ 14 октября 2009

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

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

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

Ответы [ 5 ]

226 голосов
/ 14 октября 2009

Есть много способов, но вот простой, легкий для понимания способ. добавьте эти строки в ваш ~/.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
79 голосов
/ 14 октября 2009

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

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!.
33 голосов
/ 14 октября 2009

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

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

9 голосов
/ 16 октября 2009

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

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

:autocmd BufReadPost * :DetectIndent 
0 голосов
/ 09 июня 2015

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

:set expandtab

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

:set tabstop=2

ref: http://vim.wikia.com/wiki/Converting_tabs_to_spaces

...