¿Cuál es la diferencia entre 'set ft =' y 'setfiletype'?

Pregunta:

Estoy usando vim 8.1. Cuando necesito cambiar el tipo de archivo predeterminado para la extensión .s a gas (que de forma predeterminada es asm ), primero busco el comando predeterminado para establecer el tipo de archivo en /usr/share/vim/vim81/filetype.vim . Contiene esta línea :

au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst   call dist#ft#FTasm()

Luego, traté de sobrescribir eso en mi vimrc con esto:

autocmd BufNewFile,BufRead *.s setfiletype gas

Pero no funciona. El tipo de archivo sigue asm cuando abro cualquier archivo *.s .

Entonces, cuando uso esto:

autocmd BufNewFile,BufRead *.s set ft=gas

Funciona.

Entonces, ¿cuál es la diferencia entre set ft=<filetype> setfiletype <filetype> set ft=<filetype> y setfiletype <filetype> ?

Respuesta:

Desde la ayuda de: :setfiletype :

:setf[iletype] [FALLBACK] {filetype}                    :setf :setfiletype
                     Set the 'filetype' option to {filetype}, but only if
                     not done yet in a sequence of (nested) autocommands.
                     This is short for:
                             :if !did_filetype()
                             :  setlocal filetype={filetype}
                             :endif
                     This command is used in a filetype.vim file to avoid
                     setting the 'filetype' option twice, causing different
                     settings and syntax files to be loaded.

                     When the optional FALLBACK argument is present, a
                     later :setfiletype command will override the
                     'filetype'.  This is to used for filetype detections
                     that are just a guess.  did_filetype() will return
                     false after this command.

Entonces :setfiletype no anula el tipo de archivo existente, cuando :set ft hace.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım