Vim 可以检测包含内容但还没有名称(尚未保存)的缓冲区的文件类型吗?:filetype detect没有多大作用。
			
			2842 次
		
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   回答