Определить язык новых файлов в 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
Другие вопросы по тегам