5

Vim 可以检测包含内容但还没有名称(尚未保存)的缓冲区的文件类型吗?:filetype detect没有多大作用。

4

4 回答 4

6

大多数文件类型是通过它们的文件名(和/或位置)来检测的,有些(主要是那些带有#!shebang 行的)是通过它们的内容来检测的。

如果您还不想保存缓冲区,但有检测,您可以通过:file name.ext. 然后,检测通孔:filetype detect将起作用。

如果您只想快速突出显示语法(和相应的文件类型设置),只需通过:setf name.

于 2012-06-08T20:10:32.303 回答
1

您可以手动执行此操作。

:set filetype=EXT

请注意,EXT 是您想要的文件类型的扩展名,不一定是语言本身的名称。

于 2012-06-10T06:53:18.040 回答
0

正如帮助vim所说,它在某些情况下有效,例如,如果您键入

#!/bin/sh

然后它将检测为sh脚本。

于 2012-06-08T19:54:21.627 回答
0

如果文件包含#!在线第一行,这很容易。

例如:

" finish if the filetype was detected
if did_filetype()
    finish
endif

" Ruby & Python ftplugins
if getline(1) =~ '^#!.*ruby'
    setfiletype ruby
elseif getline(1) =~ '^#!.*python'
    setfiletype python
endif
于 2012-06-08T19:57:05.887 回答