![Linux 编辑器有没有什么方法可以不用文件扩展名来辨别编程语言?](https://linux22.com/image/1331974/Linux%20%E7%BC%96%E8%BE%91%E5%99%A8%E6%9C%89%E6%B2%A1%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E4%B8%8D%E7%94%A8%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%E6%9D%A5%E8%BE%A8%E5%88%AB%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%EF%BC%9F.png)
我在 Linux 上编辑一些没有语言文件扩展名的脚本,似乎编辑器,即六,纳米和编辑没有应用语法高亮,因为文件名不使用语言扩展。
是否有一些参数需要传递或者一些设置可以使它们识别语言?
更新:
经过一番谷歌搜索后,我意识到 bash 具有这种能力,至少可以进行一些解析或检查顶部的 shebang 来确定语言。默认情况下,Ubuntu 不会安装完整的vim包,所以安装后,shell 文件被识别。我不知道纳米或者编辑, 但六和它的图形对应部分就可以了。
答案1
这个问题无法得到普遍的回答,因为它适用于所有文本编辑器。
Vim 通过后缀识别文件。这是由其默认的启动脚本驱动的,您可以在 中自定义行为.vimrc
。
例如,我自己编写了一个名为的 C 程序autotab
,它查看文件的内容并根据文件的格式确定 Vim 的shiftwidth
和tabstop
设置。expandtab
当我在 Vim 中加载或重新加载文件时,该程序将分析内容,然后输出上述 Vim 参数,这些参数被插入到命令中set
并执行。例如,如果发现文件使用两个空格的缩进,但显然混合了空格和八个空格的硬制表符,则程序将输出tabstop=8 shiftwidth=2 noexpandtab
。
可以使用完全相同的方法来选择语法突出显示。编写一个脚本,查看文件的某些行,猜测类型,然后生成命令:set syntax ...
。
该file
实用程序可用作脚本的基础。该程序的“魔法”数据库包含检测某些编程语言file
的启发式方法。尝试在您的各种文件上运行并查看输出。您可能会惊讶于它识别内容的能力。因此策略可能是:file
在文件上运行,捕获输出,将其分析为各种情况并输出正确的 Vim 咒语。然后将其挂接到.vimrc
。
GIT 仓库autotab
:http://www.kylheku.com/cgit/c-snippets/tree/autotab.c