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

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

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

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

Ответ 1

существует много способов, но здесь простой, понятный способ. добавьте эти строки в ~/.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

Ответ 2

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

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 tab символов с помощью :set list.
  • После правильной настройки параметров вкладки/пространства вы можете заставить vim восстановить файл (заменить пробелы на вкладки или наоборот) с помощью команды :retab!.

Ответ 3

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

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

Ответ 4

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

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

:autocmd BufReadPost * :DetectIndent 

Ответ 5

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

:set expandtab

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

:set tabstop=2

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