Определить язык новых файлов в vim (обновить подсветку синтаксиса)
Каждый раз, когда вы открываете файл, vim выполняет серию проверок для определения языка файла и применяет соответствующую подсветку синтаксиса; сначала проверяя расширение файла, затем заглядывая внутрь самого файла. Здесь нет ничего нового.
Когда вы создаете новый файл, включая расширение файла, например, test.sql
, vim автоматически выделяет синтаксис SQL для всего, что вы вводите - опять же, ничего нового здесь.
Однако, когда вы создаете новый файл без расширения файла, но содержащий шебанг, например, #!/usr/bin/env python
Похоже, что необходимо сохранить файл и открыть его снова, чтобы vim применил проверки и решил, что это скрипт на python.
Мой вопрос: есть ли команда vim, которая запускает эти проверки, позволяя обновить выделение в новых (без расширения) файлах, избегая необходимости повторного открытия файла.
Взглянув на документацию vim для загрузки синтаксиса, я подумал, что смогу найти что-то полезное в отношении моего запроса - к сожалению, я этого не сделал.
2 ответа
Вот 3 различных способа сделать это:
:set ft=python
, Недостатком этого подхода является то, что вы не можете добавить его к сочетанию клавиш, так как он будет работать только с одним типом файла (в данном примере python):w
+:e
Обратной стороной этого является то, что вы должны сохранить файл перед запуском команды, так как она перезагружает файл.:filetype detect
Это больше, чтобы напечатать хотя.
Вы можете добавить второй или третий вариант как ярлык с map <C-r>
:filetype detect<CR>
на ваш .vimrc
включить обновление файла с ctrl
+r
На основе предложения @KNejad об использовании:filetype detect
Вот настройка конфигурации, которая автоматически запускает обнаружение при записи нового файла:
init.vim/.vimrc :
au BufWritePost * if &syntax == '' | :filetype detect | endif