ftplugin.vim
文件,但它实际上是做什么的?是否设置选项(取决于文件类型)?如果我要在vimrc的开头包含这一行
filetype plugin indent on
和然后我在这行之后设置一些选项(例如autoindent,smartindent等),会与它们混淆吗?我怎么知道哪些选项受文件类型插件或缩进文件的影响?
#1 楼
在help filetype
中实际上有一个很好的描述。为文件类型定义的任何选项都将使用
setlocal
设置::setl[ocal] ... Like ":set" but set only the value local to the
current buffer or window. Not all options have [..]
例如
/usr/share/vim/vim80/ftplugin/javascript.vim
定义:setlocal commentstring=//%s
因为本地选项的优先级高于全局选项,所以您的
.vimrc
设置可能会被忽略。在这种情况下,您需要创建一个文件~/.vim/after/ftplugin/javascript.vim
(具有要更改的文件类型的名称),并在其中设置自己的setlocal
选项。查看设置哪些选项的最简单方法是:只需打开
/usr/share/vim/vim80/ftplugin
,../indent
和../syntax
中文件类型的文件即可。#2 楼
它定义了自动命令,当打开与给定模式匹配的文件时,将执行这些命令。这些自动命令source
依次与已识别的文件类型相关联的文件类型插件。在那些文件类型插件脚本中,您将能够找到/编写可放入vim脚本中的任何内容。优良作法不是永远不定义全局事物,而只定义局部事物。 ie:
带有
:setlocal opt=value
的本地选项带有
:[cnivsxot](nore)map <buffer> ...
的本地映射:iab-<buffer> ...
和co :command -b ...
带有
:let b:var = 42
的局部变量关于
菜单,您必须使用可模拟的插件本地菜单,请参阅Michael Geddes的插件或我的现代化fork;
功能,您可以将它们放在ftplugins中,但是最好在自动加载插件中定义它们。
评论
E492:不是编辑器命令:插件在[缩进相同]
–托尼
18年5月15日在1:23
这个答案的最后一句话是错误的。开启文件类型插件和开启文件类型缩进确实是单独的命令,但是可以将两者结合使用以产生文件类型插件缩进。
–俄罗斯
19-10-1在8:50
@Ruslan谢谢,我删除了那句话。
–laktak
19-10-1在13:33