• 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

  • 相关阅读:
    Design Pattern
    javascript summary
    nodejs template
    MVC---Case 1
    About js
    本地schemeApp扩展
    BNU4208:Bubble sort
    [置顶] think in java interview-高级开发人员面试宝典代码示例
    java+socket 简易聊天工具
    oracle 字段自增 两段代码搞定
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6871741.html
Copyright © 2020-2023  润新知