Определить язык новых файлов в vim (обновить подсветку синтаксиса)

861
Javier Arias

Каждый раз, когда вы открываете файл, vim выполняет серию проверок, чтобы определить язык файла, и применяет соответствующую подсветку синтаксиса; сначала проверяя расширение файла, затем заглядывая внутрь самого файла. Здесь нет ничего нового.

Когда вы создаете новый файл, включающий расширение файла, например, test.sqlvim автоматически выделяет синтаксис SQL для всего, что вы вводите - опять же, ничего нового здесь.

Тем не менее, когда вы создаете новый файл без расширения файла, но содержащий шебанг, например, #!/usr/bin/env pythonкажется, что необходимо сохранить файл и открыть его снова, чтобы vim применил проверки и решил, что это скрипт Python.

У меня вопрос, есть ли команда vim, которая запускает эти проверки, позволяя обновить выделение в новых (без расширения) файлах, избегая необходимости повторного открытия файла.

Взглянув на документацию vim для загрузки синтаксиса, я подумал, что смогу найти что-то полезное в отношении моего запроса - к сожалению, я этого не сделал.

1
Я подозреваю: set ft = python будет работать для вас в этом случае. Josh English 6 лет назад 1

1 ответ на вопрос

3
KNejad

Вот 3 различных способа сделать это:

  • :set ft=python, Недостатком этого подхода является то, что вы не можете добавить его к сочетанию клавиш, так как он будет работать только с одним типом файла (в данном примере python)
  • :w+ :eНедостатком является то, что вы должны сохранить файл перед запуском команды, так как он перезагружает файл.
  • :filetype detect Это больше, чтобы напечатать хотя.

Вы можете добавить вторую или третью опцию в качестве ярлыка map <C-r> :filetype detect<CR>для вашего, .vimrcчтобы включить обновление файла с ctrl+r

`: filetype обнаружить` это именно то, что я искал - я не против печатать - большое спасибо! Javier Arias 6 лет назад 0