Как изменить языковые плагины в vim?
Я пишу SML
программа и я пытаюсь изменить размер отступов. Если я добавлю следующее к моему .vimrc
файл
set tabstop=8
set shiftwidth=8
set expandtab
Это не отражено в моих реальных файлах. Я знаю это, потому что, когда я открываю .sml
файл и тип :set
это показывает, что shiftwidth=2
Я считаю, что Vim использует sml
плагин, потому что мой .vimrc
Файл (похожий на файл по умолчанию) имеет следующее:
if has("autocmd")
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
Во-первых, что значит if имеет ("autocmd")? И второе. Как настроить размер отступа по умолчанию для файлов.sml? Где я мог бы найти этот плагин (если это действительно проблема? Я все еще хочу сохранить остальные функции плагина sml.
2 ответа
autocmd
Это специальные команды, запускаемые для определенных событий или для определенных типов файлов. Они часто используются для установки параметров или определения отображений, которые имеют смысл на одном языке, но не на других.
поскольку autocmd
s широко используются для файловых типов, if has("autocmd")
это способ проверить, если autocmd
функция доступна и что мы можем идти дальше без особого риска.
Правильное расположение для хранения настроек, относящихся к типу файла: ~/.vim/after/ftplugin/<filetype>.vim
, поэтому вы должны написать свои настройки в:
~/.vim/after/ftplugin/sml.vim
Этот файл поставляется Vim после установленного по умолчанию ftplugin, так что вы можете, например, изменить только значение tabstop
и оставьте другие настройки.
Тем не менее, глядя на мою собственную среду выполнения Vim (/usr/share/vim/vim73
) похоже, что нет ftplugin для sml
, Это означает, что ~/.vim/ftplugin/sml.vim
будет одинаково правильным выбором места. Выберите тот, который вам нравится.
В этом файле просто добавьте нужные строки:
setlocal tabstop=8
setlocal shiftwidth=8
setlocal expandtab
и вы настроены
Typing :help autocmd
скажет вам, что делает autocmd. По сути это означает, что vim может автоматически выполнять команды при определенных событиях.
Вы можете напечатать :echo $VIMRUNTIME
чтобы увидеть, где vim хранит свои общесистемные плагины. Скорее всего, будет каталог синтаксиса, отступа и ftplugin с файлами, которые будут автоматически загружаться при загрузке соответствующего файла соответствующего типа.
В качестве альтернативы эти файлы будут находиться в тех же каталогах под вашим каталогом ~/.vim