VIM 的 modeline 和 autocmd

modeline

vim的modeline可以让你针对每个文件进行文件级别的设置,这些设置是覆盖当前用户的vimrc中的设置的。当vim打开一个包含了vim modeline注释行的文件时,会自动读取这一行的参数配置并调整自己的设置到这个配置。vim默认关闭modeline,开启的话需要在你的home下的.vimrc文件中增加一行:

set modeline

在文件的首行/尾行(必须),写一行当前这个文件里面语言所支持的注释,例如写shell就是#,写Python就是#,写php就//或/**/,然后在里面加上modeline识别的固定格式,举例:

# vim: set expandtab ts=4 sts=4 sw=4 :

上面的注释中,‘#‘后面、"vim:"前面的空格是必须的,结尾的‘:‘也是必须的,这些是modeline所识别的。中间就是熟悉的vimrc中的设置了。在不同的语言中,注释的语法也不一样,所有在其他语言中可能有不同写法。

在文家里面,可以用该文件标准的注解形式向 vim 下指令。譬如一个 reStructuredText 格式的文字档,你可以加上以下的 modeline,让 vim 在读它的时候自动把档案解释为 rst (以取得正确的语法高亮):

 .. vim: set ft=rst:

modeline 里可以放的指令不限一个,所以我.py 档案在档尾都有这麽一行的 modeline

 # vim: set ai et nu sw=4 ts=4 tw=79:

autocmd

只有自己会看的档案这麽作当然没什麽问题,但如果有别人会看的话,这位别人用的又也是 vim,我们设的 modeline 或许会有点扰人。不过,vim 这麽强大的软体,难道不能设定为根据档案型态决定统一的设定吗?当然可以,vim 可以针对指定的条件,在软体发生指定事件的时候执行指令。这个功能叫作 autocmd。假设我希望在开启每一个 .py 档的时候都执行上面 modeline 的那些指令,可以设定一个以下的 autocmd (写在你的 .vimrc 或 Windows 下的 vimrc 里)

 au BufRead *.py set ai et nu sw=4 ts=4 tw=79

如果我们写的程式要给别人看,希望留给别人的 vim 一点设定的空间,可以使用 autocmd 取代 modeline

时间: 2024-11-05 12:30:39

VIM 的 modeline 和 autocmd的相关文章

vim 安装

Ubuntu 16.04 下 Vim安装及配置 默认已经安装了VIM-tiny linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al lrwxrwxrwx 1 root root 17 12月 9 21:12 /etc/alternatives/vi -> /usr/bin/vim.tiny lrwxrwxrwx 1 root root 20 12月 9 21:13 /usr/bin/vi -> /etc/alternatives/

vim中如何引用自定义模板文件

我们在使用vim新建文件时可以引用自定义模板,来避免重复的数据格式处理花费太多时间. 实现方法很简单,只需要2步即可:1. 在.vim/template目录放入自己的模板文件(如shellconfig.sh. pythonconfig.py),内容可如图所示: 2. 在vim的.vimrc配置中加入对应该的模板文件引用,如下: autocmd BufNewFile *.sh 0r ~/.vim/template/shellconfig.sh autocmd BufNewFile *.py 0r

我的Vim配置(自动补全/树形文件浏览)

配置文件的下载路径在这里  http://files.cnblogs.com/files/oloroso/vim.configure.xz.gz 这实际上是一个 xz 格式的文件,添加的 gz 文件后缀是因为博客园上传文件的限制 .vimrc文件的内容如下 "========================================================================== "======================= 基本显示设置 ========

vim创建新的命令

转自:http://man.chinaunix.net/newsoft/vi/doc/usr_5F40.html#usr_40.txt *40.1* 键映射 简单的映射已经在 |05.3| 介绍过了.基本的概念是将一系列的键输入转换成为另外 一个键输入序列.这是一个很简单,但是很有效的机制. 最简单的形式是将一个键输入序列映射到一个键上.由于那些除了 <F1> 外的功能键 都没有预先定义的功能,选择它们作为映射对象是很有效的.例如: :map <F2> GoDate: <Es

不是最强大的vimrc

一直都是使用vim作为我的主要编辑器,它大大提高了我的代码编辑效率.vim的配置高度灵活.插件丰富,恐怕100个人就有99种配置方法,网上关于vim配置的所谓“最强大的vimrc”之类的文章不少,博人眼球,无可厚非,不过我相信,永远没有最强大的配置,只有更合理的配置.毕竟vim的学习曲线还是比较陡的,复杂的配置并不一定适合于新手的学习,另外,每个人对编辑器的功能需求是不一样的,使用vim的目的也因人而异,某些插件和功能对一个人很有用,对另一个人可能就毫无用处.审美需求和习惯也是多样化的,最典型的

My Vimrc

""""""""""""""""""""""""""""""" functions""""""""""

grep、ack、ag-搜索功能

今天在网上搜索关于grep的用法的时候,忽然看到其他更加高效的搜索方式.当然它们应该不存在所谓的谁更好.关键的是,在不同的场合使用不同的搜索命令,可以提高效率.其实,因为自己也没有使用过其他两种方法,目前还不能妄下结论.也就是参考网上的介绍,初步体验下罢了,等过一段时间,有了自己的心得体会再说吧. 这三个搜索命令,在终端下都是可以使用命令行进行安装的.其中,grep是随着ubuntu发布的,本身就有.其他两个,我们只需要在终端操作ack ag,系统就会给我们提示安装包跟安装命令,我们只需要按着提

vimrc易读精简版(100ms启动)

vimrc @bolun365 """""""""""""""""""""""""" " 非特定文件数据加载 """""""""""

代码编写与文件命名规范

文件命名规范 所有文件名均使用*小写字母*.文件名中不能包含_.所有类的文件名以.class.php结尾.类名和文件名的对应关系是 目录_目录_文件名 的形式. 例如Model_MySQLi_Abstract对应的就是model/mysqli/abstract.class.. 缩进规则与行书写规范 所有代码中,均使用4个空格作为缩进标准,不允许使用制表符(tab). 这样做的好处是:不管什么系统或者编辑器下看,代码都是整齐的.在使用SVN.CVS等工具或者查看diff时,不会对编码和阅读人员带来