Ответ 1
Используйте modeline.
Поместите следующую строку:
// vim: set ft=javascript:
Как я могу установить файл с #! /usr/bin/env node
filetype в javascript?
Используйте modeline.
Поместите следующую строку:
// vim: set ft=javascript:
В vim, :e $VIMRUNTIME/scripts.vim
. Это файл, который обнаруживает "скрипты" типа filetype, когда нет имени файла (например, расширение), которое сообщает vim о типе. Если вы ищете "#!" в этом файле вы увидите логику, которая делает это. Проблема в том, что это куча особых случаев, и нет точного мешка для того, что вы хотите сделать. Одной из возможностей было бы изменить этот файл scripts.vim, а также отправить свою модификацию обратно в Vim.
Если вы не хотите изменять файлы, которые поставляются вместе с vim, альтернативой является создание собственного scripts.vim
в вашем личном пути выполнения (используйте :set rtp?
, чтобы узнать, что он установил в вашей системе). Это будет выполняться в дополнение к тому, которое находится в $VIMRUNTIME. Вы можете включить свою логику для поиска первой строки и определения "node". Вероятно, вы захотите моделировать свой код после логики в $VIMRUNTIME/scripts.vim
.
autocommand
можно использовать для проверки типов файлов (это как загружается $VIMRUNTIME/scripts.vim
).
Вы можете указать команды, которые будут выполняться автоматически при чтении или записи файл, при входе или выходе из буфера или окна, а также при выходе из Vim.
...
ПРЕДУПРЕЖДЕНИЕ. Использование автокоманд очень мощное и может привести к неожиданной стороне последствия. Будьте осторожны, чтобы не разрушить текст.
Добавьте это в свой .vimrc
- он будет вызываться при открытии нового файла:
autocmd BufNewFile,BufRead * if match(getline(1),"node") >= 0 | set filetype=javascript | endif