Как выделить скрипты Bash в Vim?
мой Vim редактор автоматически выделяет PHP файлы (vim file.php), файлы HTML (vim file.html) и так далее.
но когда я типа: vim file и внутри него напишите сценарий Bash, он не выделяет его.
как я могу сказать Vim, чтобы выделить его как сценарий Bash?
Я начинаю набирать текст #!/bin/bash в верхней части файла, но это не делает его работы.
11 ответов:
ответы до сих пор верны, что вы можете использовать расширение (например,
.sh) или линия shebang (например#!/bin/bash) для определения типа файла. Если у вас нет одного из них, вы все равно можете указать тип файла вручную, используя комментарий modeline в верхней или нижней части файла.например, если вы хотите определить сценарий без расширения как сценарий оболочки, вы можете добавить этот комментарий в верхнюю часть вашего файл:
# vim: set filetype=sh :или
# vim: filetype=shэто скажет vim обрабатывать файл как сценарий оболочки. (Вы также можете установить другие вещи в модельной линии. В vim тип
:help modelineдля получения дополнительной информации.)
Vim также может обнаруживать типы файлов, проверяя их содержимое (например, если первая строка содержит bash shebang), вот цитата из
filetype.txtHelp файл:если ваш тип файла может быть обнаружен только путем проверки содержимого файла
создайте каталог среды выполнения пользователя. Вы обычно используете первый пункт опции '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.ВИМ дополнительные примеры. Запишите этот файл как " скрипты.ВИМ-Авиа" в свой каталог во время выполнения пользователей. Для например, для Unix:
:w ~/.vim/scripts.vimобнаружение будет работать сразу, нет необходимости перезапускать Vim.
скрипты.vim загружается до проверки по умолчанию типов файлов, которые означает, что ваши правила переопределяют правила по умолчанию в $VIMRUNTIME/скрипты.напор.
на самом деле подсветка синтаксиса является особенностью vim не vi. Попробуйте использовать команду vim, а затем сделать
:syntax on.
Я пришел к этому ответу, ища конкретно, как выделить
bashсинтаксис, а не оболочка POSIX. Просто делатьset ft=sh(или эквивалент) приведет к выделению файла для оболочки POSIX, что оставляет много синтаксиса, который действителен вbashвыделены красным цветом. Чтобы получить подсветку bash:" Set a variable on the buffer that tells the sh syntax highlighter " that this is bash: let b:is_bash = 1 " Set the filetype to sh set ft=shобратите внимание, что если
ftужеsh, вам все еще нужныsetкоманда; в противном случаеletне вступает в силу немедленно.вы можете сделать это глобальным по умолчанию, сделав переменную глобальной, т. е.
let g:is_bash = 1.
:help ft-sh-syntaxэто страница руководства, которую я должен был найти; она объясняет это, и как вызвать выделение других ароматов оболочки.
Как только вы добавите shebang в верхней части файла, сохраните его и перезагрузите (например,
:w|e) и синтаксис окраски может пнуть.см. также Vim непоследовательно подсветка синтаксиса bash files, принятый ответ также может помочь.
ВИМ уже распознает многие типы файлов по умолчанию. Большинство из них работает с расширениями файлов, но в таком случае vim также проанализирует содержимое файла, чтобы угадать правильный тип.
vim задает тип файла для конкретных имен файлов, таких как
.bashrc,.tcshrcи т. д. автоматически. Но файл с.shрасширение будет распознано как csh, ksh или bash script. Чтобы определить, какой именно это скрипт, vim читает первую строку файла, чтобы посмотреть #! линия.если первая строка содержит слово
bash, файл идентифицируется как сценарий bash. Обычно вы видите#!/bin/bashесли скрипт предназначен для непосредственного выполнения, но для файла конфигурации оболочки используется простой# bashбудет работать также.если вы хотите посмотреть на детали, это реализовано в
$VIMRUNTIME/filetype.vim.
вероятно, самый простой способ получить подсветку синтаксиса в новом файле-это просто перезагрузить его после записи строки shebang. Простой
:w:eвыпишет файл, перезагрузит его и интерпретирует строку shebang, которую вы только что написали, чтобы предоставить вам соответствующую подсветку синтаксиса.
Если вы уже знаете тип файла перед открытием скрипта или если вы создаете новый скрипт без расширения, которое является общим, вы можете передать его vim в командной строке следующим образом:
vim -c 'setfiletype sh' path/to/script vim -c 'setfiletype python' path/to/script
при создании нового файла в игру вступает только обнаружение имени файла; обнаружение содержимого (
#!/bin/bash) не применяется, если ввести его после создания нового буфера.- было бы разумно просто сделать
:set ft=bashв первый раз вокруг, и далее раз вы его редактируете, то#!/bin/bashавтоматически установит правильный тип файла.
Comments