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| 介绍过了. ...
随机推荐
- ZendFramework-2.4 源代码 - 关于Module - 模块入口文件
<?php // /data/www/www.domain.com/www/module/Album/Module.php namespace Album; use Zend\ModuleMan ...
- 使用U盘给笔记本重做系统
**一.戴尔 Vostro 14 3000 Series **1. 开机时快速按F12进入BIOS界面 **2. 按照下图进行一系列的处理,把U盘被设置为第一启动项 **3. 插入U盘后进入老毛桃PE ...
- python语言介绍
Python诞生于1989年,作者是吉多.范罗苏姆,人称龟叔,由C语言实现的. 1999年,基于python的web框架Zope 1诞生,标志着python向web领域迈出了第一步,现在这个框架好像不 ...
- 4Sum II
https://leetcode.com/submissions/detail/153740275/ class Solution { public: int fourSumCount(vector& ...
- Air Pollution【空气污染】
Air Pollution Since the 1940s, southern California has had a reputation for smog. 自20世纪40年代以来,南加利福尼亚 ...
- (ADO.NET)SqlCommand参数化查询
string strcon = "Persist Security Info=False;User id=sa;pwd=lovemary;database=student;server=(l ...
- 3 ways of including JavaScript in HTML
Code written in JavaScript must be executed from a document written in HTML. There are three ways of ...
- package.json文件特殊符号含义
package.json文件里的^和~表示什么意思呢 In the simplest terms, the tilde matches the most recent minor version (t ...
- Python 拓展之特殊函数(lambda 函数,map 函数,filter 函数,reduce 函数)
写在之前 今天给大家介绍几个比较特殊的函数,他们具有函数式编程的特点,有人将它们视为 Python 可进行 "函数式编程" 的见证,至于什么是函数式编程,不是本篇文章的重点,感兴趣 ...
- 关于C++ STL标准库中map 的多元素应用
map的特性是,所有的元素会根据键值自动排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素被视为键值,第二个被视为实质piar 的定义 templat ...