检测 vim 中新文件的语言(刷新语法高亮)

检测 vim 中新文件的语言(刷新语法高亮)

每当你打开一个文件时,vim 都会执行一系列检查来确定文件的语言并应用相关的语法突出显示;首先检查文件扩展名,然后查看文件本身。这里没什么新鲜的。

当您创建一个包含文件扩展名的新文件时,例如,test.sqlvim 会自动突出显示您输入的任何内容的 SQL 语法 - 同样,这里没有什么新东西。

但是,当您创建一个没有文件扩展名但包含shebang的新文件时,例如,#!/usr/bin/env python似乎有必要保存该文件并再次打开它,以便vim应用检查并确定这是一个python脚本。

我的问题是是否有一个 vim 命令可以触发这些检查,允许刷新新(无扩展名)文件中的突出显示,从而避免重新打开文件的需要。

查看 vim 的文档语法加载我以为我会找到一些与我的问题相关的有用信息——但不幸的是,我没有。

答案1

您可以通过以下 3 种不同的方式实现此目的:

  • :set ft=python。这种方法的缺点是您无法将其添加到键盘快捷键,因为它仅适用于一种文件类型(本例中为 python)
  • :w+:e这样做的缺点是您必须在运行命令之前保存文件,因为它会重新加载文件。
  • :filetype detect但是输入起来会比较长。

您可以将第二个或第三个选项添加为快捷方式,以便map <C-r> :filetype detect<CR>使用+.vimrc刷新文件ctrlr

答案2

根据@KNejad 的使用建议:filetype detect,这里有一个配置设置,当写入新文件时自动触发检测:

初始化.vim / .vimrc

au BufWritePost * if &syntax == '' | :filetype detect | endif

相关内容