Как заставить Vim определять тип файла по строке shebang? - PullRequest
37 голосов
/ 17 января 2012

Иногда я пишу сценарии без расширения имени файла.Например:

#!/usr/bin/env node

console.log('hello world!');

Я надеюсь, что Vim сможет определить тип файла по строке shebang (например, #!/usr/bin/env node - это javascript).Что я должен положить в filetype.vim?

Ответы [ 4 ]

30 голосов
/ 17 января 2012

Следуя инструкциям, перечисленным в :help new-filetype-scripts, создайте файл scripts.vim в пользовательской директории времени выполнения (~/.vim в Unix-подобные системы) и напишите в нем следующий скрипт.

if did_filetype()
    finish
endif
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
    setfiletype javascript
endif
10 голосов
/ 17 января 2012

создать этот файл ~/.vim/ftdetect/node.vim с этим содержанием

fun! s:DetectNode()
    if getline(1) == '#!/usr/bin/env node'
        set ft=javascript
    endif
endfun

autocmd BufNewFile,BufRead * call s:DetectNode()
0 голосов
/ 15 августа 2018

Если вы заинтересованы в плагине, он существует для этого:

https://github.com/vitalk/vim-shebang

Содержит шаблон для выделения node -> javascript.

AddShebangPattern! javascript ^#!.*\s\+node\>
0 голосов
/ 31 мая 2014

Немного опоздал на вечеринку, но Node.vim обрабатывает обнаружение таких файлов JavaScript для вас.А потом некоторые.: -)

...