Мой автоматический Редактор Vim выделяет файлы PHP (vim file.php
), файлы HTML (vim file.html
) и так далее.
Но когда я ввожу: vim file
и в нем пишут сценарий Bash, это не выделяет его.
Как я могу сказать Vim выделять его как сценарий Bash?
Я начинаю вводить #!/bin/bash
наверху файла, но это не заставляет его работать.
Правильно ли вы даете сценарию оболочки расширение .sh
? Автоматический выбор синтаксиса Vim почти полностью основан на определении имени (расширения) файла. Если для файла не установлен синтаксис (или используется неправильный синтаксис), Vim не перейдет автоматически на правильный синтаксис только потому, что вы начали печатать скрипт на заданном языке.
В качестве временного обходного пути команда : set syn = sh
включит подсветку синтаксиса сценария оболочки.
Vim также может определять типы файлов, проверяя их содержимое (например, если первая строка содержит bash shebang), вот цитата из файла справки filetype.txt
:
Если ваш тип файла может быть обнаружен только путем проверки содержимого файла
Создайте пользовательский каталог времени выполнения. Обычно вы используете первый элемент опции runtimepath. Пример для Unix:
:!mkdir ~/.vim
Создайте для этого файл сценария vim. Пример:
if did_filetype() " filetype already set..
finish " ..don't do these checks
endif
if getline(1) =~ '^#!.*\<mine\>'
setfiletype mine
elseif getline(1) =~? '\<drawing\>'
setfiletype drawing
endif
Дополнительные примеры см. В $ VIMRUNTIME / scripts.vim. Запишите этот файл как "scripts.vim" в пользовательском каталоге времени выполнения. Например, для Unix:
:w ~/.vim/scripts.vim
Обнаружение будет работать сразу, перезапускать Vim не нужно.
Ваш scripts.vim загружается до проверки типов файлов по умолчанию, что означает, что ваши правила переопределяют правила по умолчанию в $ VIMRUNTIME / scripts.vim.