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
VIM 的 modeline 和 autocmd的更多相关文章
- vim的modeline
vim的modeline可以让你针对每个文件进行文件级别的设置,这些设置是覆盖当前用户的vimrc中的设置的.vim默认关闭modeline,开启的话需要在你的home下的.vimrc文件中增加一行: ...
- Ubuntu下VIM的安装及其配置——Linux篇
一.Ubuntu系统默认内置: 实际上ubuntu默认没有安装老版本的vi,只装了vim.vi是vim.tiny(vim的最小化版本,不含 GUI,并且仅含有一小部分功能,并且默认与vi兼容.此软件包 ...
- Ubuntu 16.04 Vim安装及配置【转】
转自:http://www.cnblogs.com/ace-wu/p/6273031.html 安装VIM 默认已经安装了VIM-tiny acewu@acewu-computer:~$ locate ...
- Ubuntu 16.04 Vim安装及配置
安装VIM 默认已经安装了VIM-tiny acewu@acewu-computer:~$ locate vi | grep 'vi$' |xargs ls -al lrwxrwxrwx 1 root ...
- vim 安装
Ubuntu 16.04 下 Vim安装及配置 默认已经安装了VIM-tiny linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al lr ...
- 我的Vim配置(自动补全/树形文件浏览)
配置文件的下载路径在这里 http://files.cnblogs.com/files/oloroso/vim.configure.xz.gz 这实际上是一个 xz 格式的文件,添加的 gz 文件后 ...
- vim中如何引用自定义模板文件
我们在使用vim新建文件时可以引用自定义模板,来避免重复的数据格式处理花费太多时间. 实现方法很简单,只需要2步即可:1. 在.vim/template目录放入自己的模板文件(如shellconfig ...
- 用vim打开.py和.sh文件自动添加头
在~/.vimrc文件最后一行添加 "auto add pyhton header --start autocmd BufNewFile *.py 0r ~/.vim/template/py ...
- vim创建新的命令
转自:http://man.chinaunix.net/newsoft/vi/doc/usr_5F40.html#usr_40.txt *40.1* 键映射 简单的映射已经在 |05.3| 介绍过了. ...
随机推荐
- Centos7多内核情况下修改默认启动内核方法
1.1 进入grub.cfg配置文件存放目录/boot/grub2/并备份grub.cfg配置文件 [root@linux-node1 ~]# cd /boot/grub2/ [root@linux ...
- tp5依赖注入(自动实例化):解决了像类中的方法传对象的问题
app\index\Demo1.php namespace app\index\controller; /* 容器与依赖注入的原理 ----------------------------- 1.任何 ...
- 服务器常说的U是什么意思?
U是英文单词:unit 所说的1U和2U,是服务器的厚度,1U大概是相当于机柜的两个小格子,2U是四个格子.1U大概是4.45厘米(1U=1.75英寸,1英寸=2.54CM).以下这个是图片:
- Xenia and Bit Operations CodeForces - 339D
Xenia and Bit Operations CodeForces - 339D Xenia the beginner programmer has a sequence a, consistin ...
- unity安装记录
官网直接下载(http://unity3d.com/cn/) 下载完后,会要求输入账号密码.我是先在官网进行一个账号注册,然后登陆即可. 首先会要你输入一个已有的邮箱,进行认证.进入自己邮箱,点击链接 ...
- TCP/IP网络编程之多线程服务端的实现(一)
为什么引入线程 为了实现服务端并发处理客户端请求,我们介绍了多进程模型.select和epoll,这三种办法各有优缺点.创建(复制)进程的工作本身会给操作系统带来相当沉重的负担.而且,每个进程有独立的 ...
- data相关应用
文案参考:HTML5中的data-*属性和jQuery中的.data()方法使用 data属性选择器 $("li[data-id='1']")//选择li元素中data-id属性等 ...
- gulp基本入门
gulp用于自动化和提高工作流,类似于grunt.gulp适用于nodejs平台. gulp基础: gulp两个主要的功能是读取想要处理的文件,把处理好的文件放到指定的地方gulp.src()找出 ...
- 设计模式之第10章-桥接模式(Java实现)
设计模式之第10章-桥接模式(Java实现) “一入软件深似海,从此早睡是路人.黑夜给了我黑色的眼睛,我却用他去寻找八阿哥.”“怎么了,又来那么多的感慨啊.”“还能有什么啊,老板是说让换个APP做,这 ...
- OpenStack之Glance源码简析
Glance简介 OpenStack镜像服务器是一套虚拟机镜像发现.注册.检索. glance架构图: Glance源码结构: glance/api:主要负责接收响应镜像管理命令的Restful请求, ...