2

vim我没有加载任何东西就打开了:

vim -V -u NONE

并输入了一行:

<?xml?>

运行后:

:unlet did_load_filetypes
:filetype on

我检查当前缓冲区的文件类型:

:set ft?

它打印filetype=


如果我输入

:unlet did_load_filetypes
:filetype detect

然后:set ft?将打印filetype=xml.


在 vim 文档中:

Detail: The ":filetype on" command will load one of these files:                                    
                Amiga       $VIMRUNTIME/filetype.vim                                                
                Mac         $VIMRUNTIME:filetype.vim                                                
                MS-DOS      $VIMRUNTIME\filetype.vim                                                
                RiscOS      Vim:Filetype                                                            
                Unix        $VIMRUNTIME/filetype.vim                                                
                VMS         $VIMRUNTIME/filetype.vim                                                
        This file is a Vim script that defines autocommands for the                                 
        BufNewFile and BufRead events.  If the file type is not found by the                        
        name, the file $VIMRUNTIME/scripts.vim is used to detect it from the                        
        contents of the file.   

:filetype on和 和有什么区别:filetype detect
谢谢你的帮助。

4

2 回答 2

4

从手册:

To detect the file type again:
    :filetype detect
Use this if you started with an empty file and typed text that makes it
possible to detect the file type.
于 2012-06-01T04:26:35.110 回答
1

$VIMRUNTIME/filetype.vim仅定义BufNewFileBufRead事件的自动命令。

运行:filetype on命令后,没有任何事件被触发,所以没有发生任何事情。要触发事件,您可以使用 保存它:w filename,然后使用 重新打开它:e!

我猜,:filetype detect运行一些代码来触发BufNewFileorBufRead事件。

于 2012-06-01T04:24:44.127 回答