Настройка параметров пробела 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