Как выделить сценарии Bash в Vim?

Мой автоматический Редактор Vim выделяет файлы PHP (vim file.php), файлы HTML (vim file.html) и так далее.

Но когда я ввожу: vim file и в нем пишут сценарий Bash, это не выделяет его.

Как я могу сказать Vim выделять его как сценарий Bash?

Я начинаю вводить #!/bin/bash наверху файла, но это не заставляет его работать.

70
задан Mateusz Piotrowski 17 January 2016 в 04:34
поделиться

2 ответа

Правильно ли вы даете сценарию оболочки расширение .sh ? Автоматический выбор синтаксиса Vim почти полностью основан на определении имени (расширения) файла. Если для файла не установлен синтаксис (или используется неправильный синтаксис), Vim не перейдет автоматически на правильный синтаксис только потому, что вы начали печатать скрипт на заданном языке.

В качестве временного обходного пути команда : set syn = sh включит подсветку синтаксиса сценария оболочки.

79
ответ дан 24 November 2019 в 13:20
поделиться

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.

14
ответ дан 24 November 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: