编辑器vim带有许多不同编程语言的语法高亮。问题:
(1)在Emacs中,语言特定的设置称为“模式”。但是,在vim中,术语“模式”指的是命令与插入模式。那么编程语言特定设置的vim术语是什么?
(2)文档的编程语言是根据文件扩展名还是从其内容确定的?
(3)如何找出vim所针对的编程语言特定模式?
(4)我怎样才能一劳永逸地覆盖某类文件呢?
答案 0 :(得分:2)
他们是如何被称为&如何检测它们
Vim使用filetype.vim文件,该文件用于确定文件的“类型”。因此,如果您正在编辑python文件“example.py”并使用命令:set ft?,则应显示 filetype = python 。使用文件类型VIM确定是否加载了任何插件缩进规则或与python相关的语法突出显示。
如何覆盖它们
您可以通过将这些设置放在vimrc中来编写自己的缩进规则,或语法突出显示以及编程语言的其他规则。使用名为VIML的vim语言,你可以在学习Vimscript中看到这个section作者检测到药水文件类型的困难方式。一旦检测到使用文件扩展名完成的文件类型,例如python文件是* .py或者erlang文件是* .erl,您就可以添加自己的语言特定设置。
答案 1 :(得分:2)
根据要求发布答案。
(1)在Emacs中,语言特定的设置被称为"模式"。然而,在vim中,术语"模式"指的是命令与插入模式。那么编程语言特定设置的vim术语是什么?
等效的Vim术语是filetype
。 Vim使用filetype
来应用特定于语言的选项,缩进,语法突出显示,键映射等。这将在帮助中详细介绍,请参阅:h filetype
。
要启用自动filetype
检测和处理,您通常会向vimrc
添加类似的内容:
filetype plugin indent on
syntax on
要覆盖Vim以这种方式提供的设置,您需要将覆盖添加到文件~/.vim/after/ftplugin/<filetype>.vim
(或等效文件)。有关详细信息,请参阅:h ftplugin
。
(2)文档的编程语言是根据文件扩展名还是从其内容确定的?
使用两种方法。 Vim在其运行时目录中的文件filetype
中进行了大多数filetype.vim
检测。要找出此文件的确切位置:
:echo $VIMRUNTIME.'/filetype.vim'
插件可以添加更多filetype
,和/或覆盖标准的检测和处理。
(3)如何找出vim所针对的编程语言特定模式?
来自Vim:
set ft?
(4)我怎样才能一劳永逸地覆盖某类文件呢?
要更改当前文件的filetype
:
:setf <new_filetype>
或
:setl ft=<new_filetype>
要使更改成为永久更改:从modeline
执行此操作(参见:h modeline
)。例如:
# vim: filetype=python
您也可以使用autocmd
来达到同样的效果:
autocmd BufRead,BufNewFile *.py setlocal filetype=python
请阅读:h filetype
,其中详细描述了所有内容。