Vim: как установить filetype для ни одного файла расширения с помощью `#!`?

Как я могу установить файл с #! /usr/bin/env node filetype в javascript?

Ответы

Ответ 2

В vim, :e $VIMRUNTIME/scripts.vim. Это файл, который обнаруживает "скрипты" типа filetype, когда нет имени файла (например, расширение), которое сообщает vim о типе. Если вы ищете "#!" в этом файле вы увидите логику, которая делает это. Проблема в том, что это куча особых случаев, и нет точного мешка для того, что вы хотите сделать. Одной из возможностей было бы изменить этот файл scripts.vim, а также отправить свою модификацию обратно в Vim.

Если вы не хотите изменять файлы, которые поставляются вместе с vim, альтернативой является создание собственного scripts.vim в вашем личном пути выполнения (используйте :set rtp?, чтобы узнать, что он установил в вашей системе). Это будет выполняться в дополнение к тому, которое находится в $VIMRUNTIME. Вы можете включить свою логику для поиска первой строки и определения "node". Вероятно, вы захотите моделировать свой код после логики в $VIMRUNTIME/scripts.vim.

Ответ 3

autocommand можно использовать для проверки типов файлов (это как загружается $VIMRUNTIME/scripts.vim).

Вы можете указать команды, которые будут выполняться автоматически при чтении или записи файл, при входе или выходе из буфера или окна, а также при выходе из Vim.

...

ПРЕДУПРЕЖДЕНИЕ. Использование автокоманд очень мощное и может привести к неожиданной стороне последствия. Будьте осторожны, чтобы не разрушить текст.

Добавьте это в свой .vimrc - он будет вызываться при открытии нового файла:

autocmd BufNewFile,BufRead * if match(getline(1),"node") >= 0 | set filetype=javascript | endif