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



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



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



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



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

600   11  

11 ответов:

вы правильно даете сценарий оболочки a

ответы до сих пор верны, что вы можете использовать расширение (например,.sh) или линия shebang (например #!/bin/bash) для определения типа файла. Если у вас нет одного из них, вы все равно можете указать тип файла вручную, используя комментарий modeline в верхней или нижней части файла.

например, если вы хотите определить сценарий без расширения как сценарий оболочки, вы можете добавить этот комментарий в верхнюю часть вашего файл:

# vim: set filetype=sh :

или

# vim: filetype=sh

это скажет vim обрабатывать файл как сценарий оболочки. (Вы также можете установить другие вещи в модельной линии. В vim тип :help modeline для получения дополнительной информации.)

Vim также может обнаруживать типы файлов, проверяя их содержимое (например, если первая строка содержит bash shebang), вот цитата из filetype.txt Help файл:

если ваш тип файла может быть обнаружен только путем проверки содержимого файла

создайте каталог среды выполнения пользователя. Вы обычно используете первый пункт опции '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 это страница руководства, которую я должен был найти; она объясняет это, и как вызвать выделение других ароматов оболочки.

vim можно обнаружить по верхнему комментарию

попробуйте эту строку в верхней части файла

#!/bin/sh

Как только вы добавите 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

    Ничего не найдено.