vim:特定于编程语言的设置:如何调用它们,如何检测它们,如何覆盖它们?

时间:2016-10-20 06:56:58

标签: vim

编辑器vim带有许多不同编程语言的语法高亮。问题:

(1)在Emacs中,语言特定的设置称为“模式”。但是,在vim中,术语“模式”指的是命令与插入模式。那么编程语言特定设置的vim术语是什么?

(2)文档的编程语言是根据文件扩展名还是从其内容确定的?

(3)如何找出vim所针对的编程语言特定模式?

(4)我怎样才能一劳永逸地覆盖某类文件呢?

2 个答案:

答案 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,其中详细描述了所有内容。