zoukankan      html  css  js  c++  java
  • 我的_vimrc文件

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " User configuration
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " turn off nice effect on status bar title
    let performance_mode=0
    let use_plugins_i_donot_use=0

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => General
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "我们对Vim的描述都假设它是在增强模式下, 所以并不能完全与Vi兼容
    "所以首先确保关闭了 "compatible" 选项
    set nocompatible

    "定义当前的操作系统, 使用不同的系统时, 需要手动修改返回值
    "返回值可以为 "win32" / "unix"/ "mac"
    function! MySys()
        return "win32"
    endfunction

    "在Vim中执行一些过滤操作需要知道一些shell的有关情况
    "如果在使用过滤程序时遇到问题, 可以考虑检查下面一些选项的设置:
    "   "shell"         指定Vim用于运行过滤程序的shell
    "   "shellcmdflag"  该shell的参数
    "   "shellquote"    用于分隔shell与过滤程序时成对包围起过滤程序
    "                   的字符
    "   "shellxquote"   用于分隔shell与过滤程序和重定向符号时成对包
    "                   围起过滤程序和重定向符号的字符
    "   "shelltype"     shell的类型(只对Amiga有用
    "   "shellslash"    在命令中使用反斜杠(只对MS-Windows)这样的
    "                   系统有用
    "   "shellredir"    用于将命令输出重定向到文件的字符串
    "
    "在Unix上使用过滤程序很少会碰到问题, 因为有两种shell: 'sh'派和
    "'csh'派. Vim会检查 "shell" 选项看是否包含了'csh'并自动设置相关的
    "选项.
    "但在windows上,有很多不同的shell,所以你要手工调整这些选项来让过滤
    "功能正常动作.请查看上面这些相关选项的帮助以了解更多信息
    if MySys() == "unix" || MySys() == "mac"
        "在Unix和类Unix操作系统中使用 "bash" 作为 "shell"
        set shell=bash
    else
        "如果是在windows下使用cygwin, 则修改为cynwin的路径
        "set shell=E:cygwininsh
    endif

    "设置冒号命令和搜索命令的命令历史列表的长度
    "历史记录的基本思想是可以用上下箭头键来找回用过的命令.
    "
    "实际上有四个历史记录, 这里将要提到的是冒号命令历史记录和 "/"
    "及 "?" 的搜索命令历史记录, "/" 和 "?"都是搜索命令,所以它们共享
    "同一个历史记录, 另外的两类历史记录分别是关于表达式和input()
    "函数的输入内容的
    "
    "假设你用过一次 ":set" 命令, 接着用过10次其他的冒号命令之后又
    "想要重复这个 ":set" 命令,你可以按下 ':' 然后按10次上箭头键<Up>,
    "更快的办法是:
    "   ":set<Up>"
    "Vim会回到上一次你以'se'开头的命令去,这样你离':set'命令就更
    "近了一些,至少一不用按10次上箭头<Up>了(除非这中间的10个冒号
    "也都是':set'命令).
    "
    "上箭头键<Up>会根据目前的键入的命令部分去跟历史记录进行比较,
    "只有符合的才会被列出来.如果没有找到,你还可以用下箭头<Down>
    "回到刚才输入的部分命令进行修改,或者用Ctrl-U命令全部删除后
    "重来.
    "
    "要查看所有的历史记录,用命令:
    "   ":history"
    "列出的是冒号的历史记录,要查看搜索命令的历史记录,用:
    "   ":history /"
    "
    "Ctrl-P效果如同<Up>,唯一的不同是它不会根据你已经键入的部分区
    "遍历历史,类似地,<Down>对应物事Ctrl-N"和下箭头键.Ctrl-P代表
    "previous,Ctrl-N代表Next
    set history=400

    "这段命令开启了Vim的三种职能:
    "
    "1. 自动识别文件类型
    "你开始编辑一个文件时,Vim就会自动识别它是何种类型的文件,比
    "如说你打开了'main.c',Vim就会根据它的'.c'扩展名知道它是一个
    "类型为 "c" 的C语言源程序文件,当你编辑一个文件其第一行是
    "'#!bin/sh'时,Vim又可以据此判断它是一个类型为 "sh" 的shell脚
    "本文件
    "
    "2. 用文件类型plugin脚本
    "不同的文件类型需要搭配适合它的编辑选项.比如说你在编辑一个
    " "c" 文件,那么打开 "cindent" 新非常有用,这些对某种文件类型来
    "说最常用的选项可以放在一个Vim中交文件类型plugin的脚本里.
    "你还可以加上你自己写的,请参考 "write-filetype-plain".
    "
    "3. 使用缩进定义文件
    "编辑程序的时候,语句的缩进可以让它自动完成.Vim为众多不同的
    "文件类型提供了相应的缩进方案.请参考 "filetype-indent-on" 和
    " "indentexpr" 选项
    filetype on
    if has("eval") && v:version>=600
        filetype plugin on
        filetype indent on
    endif

    "设置当正在编辑的文件被外部的其它程序所修改后自动在Vim加载
    if exists("&autoread")
        set autoread
    endif

    "可以为不同模式分别打开鼠标:
    "   "n" 普通模式
    "   "v" 可视模式
    "   "i" 插入模式
    "   "c" 命令行模式
    "   "h" 编辑帮助文件时,所有前面的模式
    "   "a" 所有前面的模式
    "   "r" hit-enter 和 more-prompt 提示时
    if exists("&mouse")
        set mouse=a
    endif

    "定义 "mapleader"变量
    "要定义一个使用 "mapleader" 变量的映射,可以使用特殊字串
    " "<Leader>".它会被 "mapleader" 的字符串所替代.如果
    " "mapleader" 未设置或为空,则用反斜杠代替,例如:
    "   ":map <Leader>A oanother line<Esc>"
    "和下面一样:
    "   :map A oanother line<Esc>
    "但是当:
    "   :let mapleader = ","
    "时,又相当于:
    "   :map ,A oanother line<Esc>
    "
    "注意: "mapleader" 的值仅当定义映射时被使用.后来改变的
    " "mapleader" 不会影响到已定义的映射
    let mapleader = ","
    let g:mapleader = ","

    "设置快速保存
    "
    " "nmap"表示普通模式下的映射定义,
    " ":map" 和 ":map!" 命令为多个模式定义和回显映射.在 Vim 中你可
    "以使用 ":nmap", ":vmap", ":omap", ":cmap" 和 ":imap" 命令来对每
    "个不同的模式分别定义映射.
    "当列出映射时,前面两栏的字符表示 (可有多个):
    "   字 符       模 式
    "   "<Space>"   普通、可视、选择和操作符等待
    "    "n"         普通
    "    "v"         可视和选择
    "    "s"         选择
    "    "x"         可视
    "    "o"         操作符等待
    "    "!"         插入和命令行
    "    "i"         插入
    "   "l"         插入、命令行和 Lang-Arg 模式的 ":lmap" 映射
    "    "c"         命令行
    "
    " ":xa!" 保存所有修改过的缓冲区,甚至包括只读的,但后退出Vim.不过,
    "如果有无名或者其它元婴写入失败的缓冲区,Vim仍然不会退出.
    "
    " ":w!" 和 ":w" 类似,但即使 "readonly" 已置位或者有其他原因写入被拒
    "绝,还是强制写入.
    "注意:这可能会改变文件的权限和所有者,或者破坏(符号)连接.但在
    " "cpoptions" 里加上 "W" 标志位可以避免这一点.
    nmap <leader>x :xa!<cr>
    nmap <leader>w :w!<cr>

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Colors and Font
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "打开语法高亮:
    "   ":syntax enable"
    "实际上,它只是执行如下命令:
    "   ":source $VIMRUNTIME/syntax/syntax.vim"
    "
    " ":syntax enable" 命令会保持你当前的色彩设置.这样,不管在使用此
    "命令的前后,你都可以用 ":highlight" 命令设置你喜欢的颜色.如果你
    "希望Vim用缺省值覆盖你自己的,只要用:
    "   ":syntax on"
    if MySys()=="unix"
        if v:version<600
            if filereadable(expand("$VIM/syntax/syntax.vim"))
                syntax on
            endif
        else
            syntax on
        endif
    else
        syntax on
    endif

    "国际化设置
    " "multi_byte" 指韩国语和其他多字节语言支持
    if has("multi_byte")
        " "fileencodings" 缺省为 "ucs-bom",这是一个字符编码的列表,开始
        "编辑已存在的文件时,参考此选项.如果文件被读入,Vim尝试使用本
        "列表第一个字符编码.如果检测到错误,使用列表的下一个.如果找
        "到一个能用的编码,设置 "fileencoding" 为该值.如果全部失败,
        " "fileencoding" 设为空字符串,这意味着使用 "encoding" 的值.
        "
        "警告:转换可能导致信息的丢失!如果 "encoding" 为 "utf-8" (或者某
        "个其它的Unicode变种),那么转换的结果通过逆转换很有可能产生
        "相同的文本.相反,如果 "encoding" 不是 "utf-8",一些非ASCII的字符
        "可能会丢失.
        set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
       
        " "v:lang" 运行环境当前的消息locale设置.它使得Vim脚本能得到当
        "前使用的语言.技术细节:这就是LC_MESSAGES的值.该值和系统有关.
        "
        " "=~" 为匹配正则表达式,详细介绍如下表:
        "               使用 "ignorecase"    匹配大小写        忽略大小写 ~
        "等于                   "=="            "==#"            "==?"
        "不等于                 "!="            "!=#"           "!=?"
        "大于                   ">"             ">#"            ">?"
        "大于等于               ">="            ">=#"           ">=?"
        "小于                   "<"             "<#"            "<?"
        "小于等于               "<="            "<=#"           "<=?"
        "匹配正规表达式         "=~"            "=~#"           "=~?"
        "不匹配正规表达式       "!~"            "!~#"           "!~?"
        "相同实例               "is"
        "不同实例               "isnot"
        "
        "设置CJK环境的编码选择
        if v:lang =~ "^zh_CN"
            set encoding=cp936
            set termencoding=cp936
            set fileencoding=cp936
        elseif v:lang =~ "^zh_TW"
            set encoding=big5
            set termencoding=big5
            set fileencoding=big5
        elseif v:lang =~ "^ko"
            set encoding=euc-kr
            set termencoding=euc-kr
            set fileencoding=euc-kr
        elseif v:lang =~ "^ja_JP"
            set encoding=euc-jp
            set termencoding=euc-jp
            set fileencoding=euc-jp
        endif
       
        "在必要的时候,使用utf-8替代CJK的设置
        if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
            set encoding=utf-8
            set termencoding=utf-8
            set fileencoding=utf-8
        endif
    endif

    if has('gui_running')
        set guifont=InConsolata:h14
    endif

    " "ambiwidth" 缺省为 "single"
    "只有在 "encoding" 和 "utf-8" 或别的Unicode编码时才有效.告诉Vim怎
    "么处理东亚二义性宽度字符类(East Asian Width Class Ambiguous)(例
    "如欧元符号,注册记号,版权记号,希腊字母,西里尔字母等等)
    "
    "目前有两个可能的选择:
    " "single": 使用和US-ASCII字符相同的宽度.多数用户希望如此.
    " "double": 使用US-ASCII字符两倍的宽度
    "
    "在一些 CJK 字体里,这些字符的字形宽度完全由它们在传统的CJK编码
    "里占据字节的数目决定.那些编码中,欧元,注册记号,希腊/西里尔字母
    "等占据两个字节,因而它们在这些字体里用'宽'字形显示.这也包括文本
    "文件里制表用的一些画线字符.因此如果GUI Vim使用CJK字体,或者在使
    "用CJK字体的终端(模拟器)(包括带有 "-cjkwidth" 选项的xterm)里运
    "行Vim,应把该选项设为 "double",这样可以匹配这些字体里Vim实际看
    "到相关字形的宽度.在Windows 9x/ME 或 Windows 2k/XP 上,如果系统
    "locale 为 CJK locale,也应把本选项设为 "double"
    if exists("&ambiwidth")
        set ambiwidth=double
    endif

    " "guioptions" 选项只有在 Vim 的 GUI 版本才有效.它是字母的序
    " 列,分别描述 GUI 应该使用的部件和选项.
    " 建议使用 ":set" 的 "+=" 和 "-=" 特性,这可以避免未来版本增加
    " 新的标志位时出现的问题.

    "下面是合法的标志位字母:
    "   "a" 自动选择: 如果存在,无论什么时候启动可视模式或者扩展可
    "       视区域,Vim 都试图成为窗口系统全局选择区的拥有者.这意
    "       味着可以粘贴高亮的可视文本到其它应用程序甚至 Vim 自身.
    "       如果因为在文本之上进行了操作,或者应用程序需要粘贴选择
    "       区等原因使得可视区域被终止,高亮文本会被自动抽出到 "*"
    "       选择寄存器里.这样,即使在可视模式结束以后,选择区仍然可
    "       以被粘贴到别的应用程序.
    "       如果不存在,Vim 不会成为窗口系统的全局选择区,除非使用
    "       "*" 寄存器进行抽出和删除操作,这时该选择区被显式地占有.
    "       同样适用无模式的选择.
    "
    "   "A" 自动选择无模式的选择.类似于 "a",但仅限于无模式的选择.
    "       "guioptions"    自动选择可视    自动选择无模式
    "           ""              --              --
    "           "a"             是              是
    "           "A"             --              是
    "           "aA"            是              是
    "
    "   "c" 简单的选择使用控制台对话框而不是弹出式对话框.
    "
    "   "e" "showtabline" 要求时,加入标签页.
    "       "guitablabel" 可用来改变标签文本.
    "       如果没有 "e",可能使用非 GUI 标签页行.
    "       只有一些系统支持 GUI 标签页,现在包括 GTK, Motif,
    "       Mac OS/X 和 MS-Windows.
    "
    "   "f" 前台: 不用 fork() 从启动外壳分叉出本 GUI 进程.用于
    "       需要等待编辑器完成的程序 (例如,e-mail 程序).你也可
    "       以用 "gvim -f" 或 ":gui -f" 来在前台启动 GUI.
    "       注意: 在 vimrc 文件里设置本选项.读入 gvimrc 文件时
    "       分叉操作可能已经发生.
    "
    "   "i" 使用 Vim 图标.GTK 和 KDE 上它出现在窗口的左上角.在
    "       非 GTK 的环境上,因为 X11 的限制,它是黑白的.要得到
    "       彩色图标,见 "X11-icon"
    "
    "   "m" 使用菜单栏
    "
    "   "M" 不执行系统菜单脚本 "$VIMRUNTIME/menu.vim".
    "       注意:本标志位必须在    ".vimrc" 文件里加入,在打开语法
    "       或文件类型识别之前 (执行 "gvimrc" 文件时,系统菜单
    "       已经载入;而 ":syntax on" 和 ":filetype on" 命令同
    "       样会载入菜单).
    "
    "   "g" 灰色菜单项: 使得不活动的菜单项变灰.如果没有包含 "g",
    "       不活动的菜单项完全不显示.
    "       特例: Athena 总会使用灰色的菜单项.
    "
    "   "t" 包含可撕下的菜单项.目前只用于 Win32, GTK+ 和
    "       Motif 1.2 GUI.
    "
    "   "T" 包含工具栏.目前只用于 Win32, GTK+, Motif, Photon
    "       和 Athena GUI.
    "
    "   "r" 右边的滚动条总是存在.
    "
    "   "R" 如有垂直分割的窗口,右边的滚动条总是存在.
    "
    "   "l" 左边的滚动条总是存在.
    "
    "   "L" 如有垂直分割的窗口,左边的滚动条总是存在.
    "
    "   "b" 底部的 (水平) 滚动条总是存在.它的大小取决于最长的可
    "       见行,或者如果包含 'h' 标志位的话,光标所在的行.详情
    "       可见 "gui-horiz-scroll"
    "
    "   "h" 限制水平滚动条的大小为光标所在行的长度,以减少计算量.
    "       是的,如果你真的想要,左右两边都可以有滚动条.详情可见
    "       "gui-scrollbars"
    "
    "   "v" 对话框使用垂直的按钮布局.如果不包含,倾向使用水平布
    "       局,但如果空间不够,还是用垂直的布局.
    "
    "   "p" 使用 X11 GUI 的指针回调.有些窗口管理器需要.如果光标
    "       不闪烁或者在一定场合下变空,考虑增加此标志位.必须在
    "       启动GUI 之前完成.在你的 "gvimrc" 里设置.在 GUI 启动
    "       后增加或删除不会有任何效果.
    "
    "   "F" 增加信息页脚.只适用于 Motif.见 "gui-footer".
    if has("gui_running")
        set guioptions-=m   " 关闭菜单栏
        set guioptions-=T   " 关闭工具栏
        set guioptions-=l   " 关闭左边滚动条
        set guioptions-=L   " 关闭垂直分隔窗口左边滚动条
        set guioptions-=r   " 关闭右边滚动条
        set guioptions-=R   " 关闭垂直分隔窗口右边滚动条

        if MySys()=="win32"
            " "autocmd" / "au" 定义自动命令
            "注意: ":autocmd" 命令不能有其他命令紧跟其后,因为"|"
            "命令是该命令的一个组成部分.
            "
            " ":au[tocmd] [group] {event} {pat} [nested] {cmd}"
            "把 {cmd} 加到 Vim 在匹配 {pat} 模式的文件执行 {event}
            "事件时自动执行的命令列表.Vim 把 {cmd} 加到已有的自动
            "命令之后,从而使自动命令的执行顺序与其定义的顺序相同.
            "关于 [nested],参见 "autocmd-nested".

            "注意 ":autocmd" 的参数里的特殊字符 (例如, "%", "<cword>")
            "在定义时不会被扩展,而是在事件发生并执行 {cmd} 的时候才
            "进行.唯一的例外是 "<sfile>" 在定义时扩展.
            "
            " "GUIEnter" 成功启动 GUI 并打开窗口后自动命令事件.用
            " gvim 的时候,它在 VimEnter 之前发生.在 .gvimrc 里可用
            " 它来定位窗口:
            "   ":autocmd GUIEnter * winpos 100 50"
            "
            " "si" / "simalt" 模拟 Alt-{key} 组合键.
            " ":si[malt] {key}"
            " {仅适用 Win32 版本}
            "
            "正常情况下,为了增加键映射 (map) 的数量,Vim 控制所有
            "Alt-{key} 组合键.但是这样做可能与用 Alt-{key} 访问菜单
            "的标准方法冲突.一个快速的解决办法是:设置 "winaltkeys"
            "选项的值为 "yes".但是这样阻止了所有与Alt 键有关的映射.
            "另一个办法是:设置 "winaltkeys" 选项为 "menu".这样与菜
            "单有关的快捷键有 Windows 管理,其余的与 Alt 相关的映射
            "仍然好用.但这样又产生了对当前状态的依赖性.
            "要解决这个问题,就要用 ":simalt" 命令告诉 Vim
            "( "winaltkeys" 不要设置为 "yes") 虚拟一个 Windows 风
            "格的 Alt 按键行为.你可以用它来映射 Alt 组合键 (或者任
            "何其它键) 来产生标准的 Windows 操作.下面是一些例子:
            "   ":map <M-f> :simalt f<CR>"
            "这个命令通过把 Alt-F 映射为模拟按键的 Alt 和 F,使你按
            "下 Alt-F 时弹出 "文件" 菜单 (对于缺省的 Menu.vim 而言)
            "   ":map <M-Space> :simalt ~<CR>"
            "这个命令通过映射 Alt-Space 弹出 Vim 窗口的系统菜单.
            "注意: ~ 在 simalt 命令里代表 <Space> (空格).
            "   ":map <C-n> :simalt ~n<CR>"
            "把 CTRL-N 映射成 Alt-Space + N.也就是打开窗口的系统菜
            "单,然后按 N,最小化 Vim窗口
            "
            "这个选项是模拟弹出菜单中使用最大化的快捷键 "x"
            if has("autocmd")
                au GUIEnter * simalt ~x
            endif
        endif

        " "colorscheme" / "colo" 载入色彩方案
        " ":colo[rscheme] {name}"
        "载入色彩方案 {name}.
        "它会在 'runtimepath' 里搜索 "colors/{name}.vim",载入第一
        "个找到的文件.
        "要看到当前激活的色彩方案的名字 (如果有的话):
        "   ":echo g:colors_name"
        "它不能递归调用,所以你不能在色彩方案脚本里使用 ":colorscheme"
        "色彩方案载入后"激活 "ColorScheme" 自动命令事件.关于如何
        "编写色彩方案文件的信息:
        "   ":edit $VIMRUNTIME/colors/README.txt"
        if v:version > 601
            colorscheme torte
        endif
    else
        if v:version > 601
            colorscheme torte
        endif
    endif

    "当打开的文档中含有多种语言的时候,单一使用某一种文件类型的高亮
    "方式必然会非常难看,比如说一个介绍J2EE的文件,里面必然有Java的代
    "码,也会存在很多XML的代码,这个时候需要随时切换不同的高亮方案
    map <Leader>1 :set syntax=java<CR>
    map <Leader>2 :set syntax=c<CR>
    map <Leader>3 :set syntax=xhtml<CR>
    map <Leader>4 :set syntax=python<CR>
    map <Leader>5 :set ft=javascript<CR>
    map <Leader>0 :syntax sync fromstart<CR>

    "用 "cursorline" 高亮光标所在的屏幕行.用于方便定位光标.屏幕刷新
    "会变慢.
    "激活可视模式时,为了容易看到选择的文本,不使用此高亮.
    if has("gui_running")
        if exists("&cursorline")
            set cursorline
        endif
    endif

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Fileformat
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " "fileformats" / "ffs"
    "给出换行符(<EOL>)的格式,开始编辑新缓冲区或者读入文件到已有的缓
    "冲区时,尝试这些格式:
    "   -   如果为空,总是使用 "fileformat"定义的格式.不自动设置该选项.
    "   -   如果设为一个名字,总是为打开的新缓冲区使用该格式,也为该缓
    "       冲区相应地设置 "fileformat".文件读入已有的缓冲区时,使用
    "       "fileformats" 给出的名字,不管该缓冲区设定的 "fileformat"
    "       是什么.
    "   -   如果给出多于一个以逗号分隔的名字,读入文件时会进行自动
    "       <EOL>检测.
    "       开始编辑文件时,这样检查 <EOL>:
    "       1.  如果所有行都以 <CR><NL> 结尾,而 "fileformats" 包含
    "           "dos" 的话, "fileformat" 设为 "dos".
    "       2.  如果找到一个<NL>而 "fileformats" 包含 "unix"的话,
    "           "fileformat"设为 "unix".注意 如果找到的 <NL> 没有前
    "           导 <CR>, "unix" 比 "dos" 优先.
    "       3.  如果 "fileformats" 包含 "mac". "fileformat" 设为 "mac".
    "           这意味着 "mac" 只有在没有给出 "unix" 或者在文件里没有
    "           找到 <NL>,并且没有给出 "dos" 或者没有在文件里找到
    "           <CR><NL> 时才会使用.如果先选择 "unix",但第一个 <CR> 出
    "           现在第一个 <NL> 之前,而文件里的 <CR> 比 <NL> 多的话,
    "           "fileformat" 也设为 "mac".
    "       4.  如果还是不能设置 "fileformat",使用 "fileformats" 的第
    "           一个名字.
    "   读入文件到已有的缓冲区时,完成相同的步骤,但如同 "fileformat"
    "   已经为该文件合适地设置过,不改变该选项.
    "如果置位 "binary",不使用 "fileformats" 的值.
    "
    " 对于使用 DOS 类型的 <EOL> (<CR><NL>) 的系统来说,读入待执行的脚本
    "( ":source" ) 或者 vimrc 文件时,可能进行自动 <EOL> 的检测:
    "   -   如果 "fileformats" 为空,没有自动检测.使用 DOS 格式.
    "   -   如果 "fileformats" 设为一到多个名字,进行自动检测.它基于文
    "       件中的第一个 <NL>: 如果在它之前有一个 <CR>,使用 DOS 格式,
    "       不然,使用 Unix格式.
    "   另见 |file-formats|.
    "为了后向兼容: 如果设置此选项为空字符串或者单一格式 (没有包含逗号),
    "复位 "textauto",否则置位 "textauto".
    "注意: 如果置位 "compatible",本选项被设为 Vi 的缺省值.相反,如果复位
    " "compatible",本选项被设为 Vim 的缺省值.
    set fileformats=unix,dos,mac

    "给出当前缓冲区的 <EOL> 格式,用于从文件读入缓冲区和把缓冲区写回文件:
    "   "dos"       <CR> <NL>
    "   "unix"      <NL>
    "   "mac"       <CR>
    "
    "MS-DOS,MS-Windows,OS/2 的缺省: "dos",
    "Unix 缺省: "unix",
    "Macintosh 缺省: "mac"
    "
    "如果使用 "dos",文件尾的 CTRL-Z 被忽略.
    "见 "file-formats" 和 "file-read|"
    "文件使用的字符编码见 "fileencoding".
    "如果设置 "binary",忽略 "fileformat" 的值.文件输入/输出如同它被设为
    " "unix" 那样.
    "文件开始编辑时,如果 'fileformats' 非空而 'binary' 关闭,本选项被
    "自动设置.
    "开始编辑文件后,如果设置该选项, "modified" 选项被置位,因为文件被认为
    "和当初写入时已经不同.
    "本选项在 "modifiable" 关闭时不能改变.
    "
    "为了后向兼容: 如果本选项设为 "dos",置位 "textmode",否则,复位之.
    "
    "这里的意思是定义快速转换文件格式的快捷键映射
    nmap <leader>fd :set ff=dos<cr>
    nmap <leader>fu :set ff=unix<cr>
    nmap <leader>fm :set fm=unix<cr>

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => VIM userinterface
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " "scrolloff" / "so"    (缺省为 0) 光标上下两侧最少保留的屏幕行数
    "这使你工作时总有一些可见的上下文.我们这里设置的主要用处其实是
    "可以用鼠标单击屏幕的前N行或者后N行来直接进行屏幕的上下滚动.对
    "于习惯了鼠标操作的用户来说将会非常的方便.
    "
    "如果你设置此选项为很大的值 (比如 999),光标所在的行将总定位在
    "窗口的中间位置 (除非你非常靠近文件开始或者结束的地方,或者有长
    "行回绕).
    "水平滚动见 'sidescrolloff'.
    "注意: 如果置位 'compatible',该选项被设为 0.
    set so=0

    " "wildmenu" / "wmnu"   (缺省关闭) 命令行补全以增强模式运行
    " {仅当编译时加入 "+wildmenu" 特性才有效}
    " "wildmenu" 打开时,命令行补全以增强模式运行,按下 "wildchar"
    " (通常是 <Tab>) 启动补全.这时,在命令行的上方显示可能的匹配,
    " 然后高亮首个匹配 (如果有状态行,覆盖之).显示前项/后项匹配的
    " 热键,如 <Tab> 或 CTRL-P/CTRL-N,移动高亮到合适的匹配上.
    "
    " 使用 "wildmode" 时,指定 "full" 会启用 "wildmenu" 模式.
    " "longest" 和 "list" 则不会启动 "wildmenu" 模式.
    "
    " 如果多个匹配超过一行,在右侧显示 ">" 和/或在左侧显示 "<".需
    " 要的话,滚动状态行.
    "按下不用于选择补全项的键时,放弃 "wildmenu" 模式.
    "
    " "wildmenu" 激活时,下面的键有特殊含义:
    "   "<Left>" / "<Right>"    选择前项/后项匹配 (类似于
    "                           CTRL-P/CTRL-N)
    "   "<Down>"                文件名/菜单名补全中: 移进子目录
    "                           和子菜单.
    "   "<CR>"                  菜单补全中,如果光标在句号之后:
    "                           移进子菜单.
    "   "<Up>"                  文件名/菜单名补全中: 上移到父目
    "                           录或父菜单.
    "
    "这使得控制台上有菜单可用 "console-menus"
    "如果你喜欢 <Left> 和 <Right> 键移动光标而不是选择不同的匹
    "配,用:
    "   ":cnoremap <Left> <Space><BS><Left>"
    "   ":cnoremap <Right> <Space><BS><Right>"
    "
    " "WildMenu" 高亮用于显示当前匹配 "hl-WildMenu".
    set wildmenu

    " "ruler" / "ru" (缺省关闭) 标尺
    " {仅当编译时加入 "+cmdline_info" 特性才有效}
    "显示光标位置的行号和列号,逗号分隔.如果还有空间,在最右端显
    "示文本在文件中的相对位置:
    "   "Top"   首行可见
    "   "Bot"   末行可见
    "   "All"   首末两行都可见
    "   "45%"   文件中的相对位置
    "如果设置 "rulerformat",它决定标尺的内容.
    "每个窗口都有自己的标尺.如果窗口有状态行,标尺在那里显示.否
    "则,它显示在屏幕的最后一行上.如果通过 "statusline" 给出状
    "态行 (亦即,非空),该选项优先于 "ruler" 和 "rulerformat".
    "如果显示的字符数不同于文本的字节数 (比如,TAB 或者多字节字
    "符),同时显示文本列号 (字节数) 和屏幕列号,以连字符分隔.
    "空行显示 "0-1"
    "空缓冲区的行号也为零: "0,0-1"
    "如果置位 "paste" 选项,本选项被复位.
    "如果你不想一直看到标尺但想知道现在在哪里,使用 "g CTRL-G"
    "注意: 如果置位 "compatible",该选项被复位
    set ruler

    " "cmdheight" / "ch" (缺省为 1)    命令行使用的屏幕行数
    "有助于避免 "hit-enter" 提示.
    "此选项值保存在每个标签页里,从而每个标签页可有不同的值.
    set cmdheight=2

    " ":nu" / ":number" 显示行号
    " ":[range]nu[mber] [count] [flags]"
    "和 ":print" 相同,但每行之前显示行号 (也参见 "highlight"
    "和 "numberwidth" 选项).
    set nu

    " "lazyredraw" / "lz"   (缺省关闭)
    "如果置位本选项,执行宏,寄存器和其它不通过输入的命令时屏
    "幕不会重画.另外,窗口标题的刷新也被推迟.要强迫刷新,使用
    " ":redraw".
    set lz

    " "hidden" / "hid"  (缺省关闭)
    "如果关闭, "abandon" 放弃时卸载缓冲区.如果打开, "abandon"
    "放弃时隐藏缓冲区.当然,如果缓冲区仍然在别的窗口里显示,
    "它不会被隐藏.
    "在缓冲区列表里移动的命令有时会隐藏缓冲区,即使关闭 "hidden"
    "选项也是如此,条件是: 缓冲区被修改过, "autowrite" 关闭
    "或者不能写入,并且使用 "!" 标志位.另见 "windows.txt".
    "
    "如果只想隐藏一个缓冲区,使用 "bufhidden" 选项.
    " ":hide {command}" 为单个命令关闭本选项 ":hide".
    "警告: 对隐藏缓冲区的修改很容易忘记. ":q!" 或 ":qa!" 时
    "三思而后行!
    set hid

    " "backspace" / "bs" (缺省为 "")
    "影响 <BS>,<Del>,CTRL-W 和 CTRL-U 在插入模式下的工作方
    "式.它是逗号分隔的项目列表.每个项目允许一种退格删除的内
    "容:
    "   值            效果
    "   "indent"    允许在自动缩进上退格
    "   "eol"       允许在换行符上退格 (连接行)
    "   "start"     允许在插入开始的位置上退格;CTRL-W 和
    "               CTRL-U 到达插入开始的位置时停留一次.
    "
    "如果该值为空,使用 Vi 兼容的退格方式.
    "
    "为了和 5.4 及更早的版本后向兼容:
    "   值          效果
    "   "0"         等同于 ":set backspace=" (Vi 兼容)
    "   "1"         等同于 ":set backspace=indent,eol"
    "   "2"         等同于 ":set backspace=indent,eol,start"
    "
    "如果你的 <BS> 或 <Del> 键不合你的期望,见 ":fixdel".
    "注意: 如果置位 "compatible",该选项被设为 "".
    set backspace=eol,start,indent

    " "whichwrap" / "ww"    (Vim 缺省: "b,s",Vi 缺省: "")
    "使指定的左右移动光标的键在行首或行尾可以移到前一行
    "或者后一行.连接这些字符,可以让所有指定的键都有此功能:
    "       字符    键          模式
    "       "b"    <BS>         普通和可视
    "       "s"    <Space>      普通和可视
    "       "h"    "h"          普通和可视 (不建议)
    "       "l"    "l"          普通和可视 (不建议)
    "       "<"    <Left>       普通和可视
    "       ">"    <Right>      普通和可视
    "       "~"    "~"          普通
    "       "["   <Left>        插入和替换
    "       "]"    <Right>      插入和替换
    "只允许光标键进行回绕.
    "如果移动键和删除和改变操作符一起使用时,<EOL> 也被看作一个
    "字符.这使得光标跨过行尾时, "3h" 和 "3dh" 效果不同."这也适
    "用于 "x" 和 "X",因为它们分别和 "dl" 以及 "dh" 相同.如果这
    "么用,你可能想用映射 ":map <BS> X"来使退格"键删除光标之前的
    "字符.
    "如果包含 'l',位于行尾时如果在操作符之后使用它,不会移动到下
    "一行.这样 "dl", "cl", "yl" 等都能正常工作.
    "注意: 如果置位 "compatible",本选项被设为 Vi 的缺省值.相反,
    "如果复位 "compatible",本选项被设为 Vim 的缺省值.
    set whichwrap+=<,>,h,l

    " "incsearch" / "is"    (缺省关闭)
    "{仅当编译时加入 "+extra_search" 特性才有效}
    "输入搜索命令时,显示目前输入的模式的匹配位置.
    "匹配的字符串被高亮.如果该模式不合法或者没有匹配,不显示任何
    "东西.屏幕会经常刷新,所以只有对快速终端,这才有意义.
    "注意:会显示匹配,但如果找不到匹配和按 <Esc> 的时候,光标会回
    "到原来的位置.你仍然需要用 <Enter> 完成搜索命令才会移动光标
    "到匹配位置.
    "编译时加入 "+reltime" 特性时,Vim 只会搜索大概半秒钟.如果模
    "式太过复杂和/或有很多文本存在,不一定能找到匹配.这是为了避免
    "Vim 在输入模式的时候挂起.
    "
    "可以用 "highlight" 的 "i" 标志位设置高亮.另见: "hlsearch".
    "   "CTRL-L" 可用来在命令行上给当前匹配之后增加一个字符.
    "   "CTRL-R" / "CTRL-W" 可用来在当前匹配的尾部增加单词,排除
    "                       已经输入的部分.
    "注意: 如果置位 "compatible",该选项被复位.
    set incsearch

    "某些字符在模式中是按本义出现的.它们匹配自身.然而,当前面有一
    "个反斜杠时,这些字符具有特殊的含义.
    "
    "另外一些字符即使没有反斜杠也代表特殊的意思,它们反而需要一个
    "反斜杠来匹配按本义出现的自身.
    "
    "一个字符是否按本义出现取决于 "magic" 选项以及下面将解释的条
    "目.
    "使用 "m" 会使得其后的模式的解释方式就如同设定了 "magic" 选
    "项一样.而且将忽略 "magic" 选项的实际值.
    "使用 "M" 会使得其后的模式的解释方式就如同设定了 "nomagic"
    "选项一样.
    "
    "使用 "v" 会使得其后的模式中所有 '0'-'9','a'-'z','A'-'Z'
    "和 '_' 之外的字符都当作特殊字符解释.
    "使用 "V" 会使得其后的模式中只有反斜杠有特殊的意义.
    "
    "示例:
    "在这之后:  v      m      M      V      匹配
    "                 'magic' 'nomagic'
    "           $       $       $       $      匹配行尾
    "           .       .       .      .      匹配任何字符
    "           *       *       *      *      前面匹配原的任意次重复
    "           ()      ()    ()    ()    组成为单个匹配原
    "           |       |      |      |      分隔可选分支
    "           a      a      a      a      字母字符
    "           \      \      \      \      反斜杠 (按本义)
    "           .      .      .       .       英文句号 (按本义)
    "           {      {       {       {       '{' (按本义)
    "           a       a       a       a       'a' (按本义)
    "
    "{仅 Vim 支持 m,M,v 和 V}
    "
    "建议始终将 "magic"选项保持在缺省值 - "magic".这可以避免移
    "植性的麻烦.要使模式不受该选项值的影响,在模式前面加上 "m"
    "或 "M".
    set magic

    "设置Vim静音
    " "errorbells" / "eb" (缺省关闭)
    "错误信息响铃 (鸣叫或屏幕闪烁).只有对错误信息有意义.很多没有消息的错误
    "也会使用该响铃 (比如,普通模式里按 <Esc>).
    "
    " "visualbell" / "vb" (缺省关闭)
    "使用可视响铃代替鸣叫.显示可视响铃的终端代码由 "t_vb" 给出.如果既不想
    "要响铃也不想要闪烁,使用 ":set vb t_vb=".
    "注意: GUI 启动时,'t_vb' 复位为缺省值.你可能想在 |gvimrc| 里再次设置之.
    "在 GUI 里, "t_vb" 缺省为 "<Esc>|f",反转显示 20 毫秒.如果你想使用别的
    "时间,可设 "<Esc>|40f",其中 40 是毫秒计的时间.
    "在 Amiga 上没有用,你总会得到屏幕闪烁.
    set noerrorbells
    set novisualbell
    set t_vb=

    " "showmatch" / "sm"    (缺省关闭)
    "插入括号时,短暂地跳转到匹配的对应括号.只有在屏幕上能看到匹配时才会进
    "行跳转.显示匹配的时间用 "matchtime" 设置.
    "如果没有匹配会响铃 (和匹配能否看到无关).置位 "paste" 时,复位本选项.
    "如果 "cpoptions" 里没有 "m" 标志位,接着输入字符会立即把光标移动到它应
    "该在的位置.
    " "guicursor" 的 "sm" 域说明显示匹配时,如何设置光标形状和闪烁.
    " "matchpairs" 选项可指定显示匹配所用的字符.用 "rightleft" 和 "revins"
    "查找反方向的匹配.
    "移动时要高亮匹配,另见 matchparen 插件 "pi_paren.txt".
    set showmatch

    " "matchtime" / "mat"   (缺省为 5)
    "如果置位 'showmatch',显示配对括号的十分之一秒数.
    "注意 这不是毫秒数.
    set mat=4

    " "hlsearch" / "hls"    (缺省关闭)
    "{仅当编译时加入 "+extra_search" 特性才有效}
    "如果有上一个搜索模式,高亮它的所有匹配.使用高亮的类型可以用 "highlight"
    "选项的 "l" 位设置.缺省,使用 "Search" 高亮组.
    "注意: 只有匹配的文本被高亮,位移此处不予考虑.
    "另见: "incsearch" 和 ":match".
    "
    "如果你厌倦总是看到高亮匹配,用 ":nohlsearch" 或者 ":noh" 可以暂时关闭.
    "一旦使用搜索命令,高亮会重新出现.
    "
    " "redrawtime" 指定寻找匹配会花费的最大时间.
    "如果搜索模式可以匹配换行符,Vim 会试图高亮所有的匹配文本.不过,这依赖
    "于搜索从哪里开始.如果是窗口的第一行,或者关闭折叠之下的第一行,那么从
    "它们不会显示的上一行开始的匹配不会在新显示的行上继续.
    "注意: 如果置位 "compatible",该选项被复位.
    set hlsearch

    """"""""""""""""""""""""""""""
    " => Statusline
    """"""""""""""""""""""""""""""
    "格式化状态栏
    if performance_mode
    else
        " "laststatus" / "ls" (缺省为 1)
        "本选项的值影响最后一个窗口何时有状态行:
        "   "0" 永不
        "   "1" 只有在有至少两个窗口时
        "   "2" 总是
        "如果你有多个窗口,有状态行会使屏幕看起来好一些,但它会占据一个屏幕行.
        set laststatus=2

        " "statusline" / "stl"  (缺省为空)
        "{仅当编译时加入 "+statusline" 特性才有效}"
        "如果非空,本选项决定状态行的内容.另见 "status-line"
        "
        "此选项包含 printf 风格的 '%' 项目,中间可以间杂普通文本.每个状态行项
        "目有如下形式:
        "   "%-0{minwid}.{maxwid}{item}"
        "除了 {item} 以外,每个字段都是可选的.单个百分号可以用 "%%" 给出.最多
        "可给出 80 个项目.
        "
        "如果此选项以 "%!" 开始,它用作表达式.计算此表达式的结果用作选项值.例
        "如:
        "   ":set statusline=%!MyStatusLine()"
        "返回值可以包含 %{} 项目,它还会被继续计算下去.
        "
        "如果计算选项时有错误,会把它清空以防将来继续出错.否则屏幕更新会陷入循
        "环.
        "
        "注意 如果设置本选项 (并且 "laststatus" 为 2 的话), "ruler" 的唯一效
        "果是控制 "CTRL-G" 的输出.
        "
        "   域          含义
        "   "-"            左对齐项目.如果 minwid 大于项目的长度,缺省是右对齐.
        "   "0"         数值项目前面用零填补. '-' 更优先.
        "   "minwid"    项目的最小宽度,以 '-' 和 '0' 补空.该值不能超过 50.
        "   "maxwid"    项目的最大宽度.如果超过,在文本项目的左侧截短,以'<'代
        "               替.数值项目则往下移到 maxwid-2 个数位,然后跟 '>'number,
        "               其中的 number 是丢失的数位,这非常类似于指数记法.
        "   "item"      单个字符的代码,下面给出描述.
        "
        "下面是可能状态行项目的描述.其中,"项目" 的第二个字符代表类型:
        "   "N" 代表数值型
        "   "S" 代表字符串型
        "   "F" 代表下面描述的标志位
        "   "-" 不适用
        "
        "项目   含义
        "f S    缓冲区的文件路径,保持输入的形式或相对于当前目录.
        "F S    缓冲区的文件完整路径.
        "t S    缓冲区的文件的文件名 (尾部).
        "m F    修改标志位,文本是 "[+]";若 "modifiable" 关闭则是 "[-]".
        "M F    修改标志位,文本是 ",+" 或 ",-".
        "r F    只读标志位,文本是 "[RO]".
        "R F    只读标志位,文本是 ",RO".
        "h F    帮助缓冲区标志位,文本是 "[help]".
        "H F    帮助缓冲区标志位,文本是 ",HLP".
        "w F    预览窗口标志位,文本是 "[Preview]".
        "W F    预览窗口标志位,文本是 ",PRV".
        "y F    缓冲区的文件类型,如 "[vim]".见 "filetype".
        "Y F    缓冲区的文件类型,如 ",VIM".见 "filetype'".
        "       {仅当编译时加入 "+autocmd" 特性才有效}
        "k S    "b:keymap_name" 的值或使用 ":lmap" 映射时的 "keymap":
        "       "<keymap>".
        "n N    缓冲区号.
        "b N    光标所在字节的值.
        "B N    同上,以十六进制表示.
        "o N    光标所在字节在文件中的字节偏移,第一个字节为 1.
        "       助记: 从文件开始的偏移 (Offset) (加上 1)
        "       {仅当编译时加入 "+byte_offset" 特性才有效}
        "O N    同上,以十六进制表示.
        "N N    打印机页号.(只用于 'printheader" 选项.)
        "l N    行号.
        "L N    缓冲区里的行数.
        "c N    列号.
        "v N    虚拟列号.
        "V N    虚拟列号,表示为 -{num}.如果等于 "c" 的值,不显示.
        "p N    行数计算在文件位置的百分比,如同 "CTRL-G" 给出的那样.
        "P S    显示窗口在文件位置的百分比,类似于 "ruler" 描述的百分比.长度
        "       总是为 3.
        "a S    参数列表状态,就像缺省标题里的那样.({current} of {max})
        "       如果参数列表里的文件数为零或一,空字符串.
        "{ NF   计算 "%{" 和 "}" 之间的表达式,并返回其结果替代.注意 结束的
        "       "}" 之前没有 "%".
        "( -    项目组的开始.可以用来为某组项目设置宽度和对齐.后面某处必须有
        "       "%)".
        ") -    项目组的结束.不能指定宽度域.
        "T N    用于 'tabline': 标签页 N 标签的开始.最后一个标签之后用 "%T".
        "       鼠标点击时用此信息.
        "X N    用于 "tabline": 关闭标签页 N 标签的开始.最后一个标签之后用
        "       "%T".
        "       例如: "%3Xclose%X",用 "%999X" 来代表 "关闭当前标签页" 那个符
        "       号.鼠标点击时用此信息.
        "< -    如果行过长,在什么地方截短.缺省是在开头.不能指定宽度域.
        "= -    左对齐和右对齐项目之间的分割点.不能指定宽度域.
        "# -    设置高亮组.必须后面跟名字,然后又是 "#".这样, "%#HLname#" 代
        "       表高亮组 HLname.包括非当前窗口的状态行都使用相同的高亮组.
        "* -    设置高亮组为 User{N},其中的 {N} 取自 minwid 域,比如 %1*.用
        "       %* 或者 %*0 可以恢复 normal 高亮.User{N} 和 StatusLine 的区
        "       别也会应用到非当前窗口的状态行使用的 StatusLineNC 上.
        "       数字 N 必须从 1 到 9.见 "hl-User1..9"
        "
        "显示标志位时,如果它紧跟在普通文本之后,Vim 删除之前的前导逗号.这使得
        "下面例子里使用的标志位显示看起来很舒服.
        "
        "如果组内的所有项目都是空字符串 (比如,标志位没有设置) 而该组没有设置
        "minwid,整个组成为空字符串.这使得下面这样的组完全从状态行上消失,如果
        "没有标志位被置位的话.
        "   ":set statusline=...%( [%M%R%H]%)..."
        "要小心,每次显示状态行时都要计算此表达式.当前缓冲区和当前窗口会临时设
        "为目前要显示的状态行所属的窗口 (缓冲区),而表达式会使用此上下文计算.
        "变量 "actual_curbuf" 被设为实际的当前缓冲区的 "bufnr()" 号.
        "
        "可能在沙盘 "sandbox" 里计算 "statusline" 选项.见 "sandbox-option".
        "
        "计算 "statusline" 时不允许修改文本或者跳到其它窗口 "textlock".
        "
        "如果状态行在你希望时没有更新 (如在设置完表达式里使用的某变量之后),设
        "置选项可以强制进行更新而无须更改其值.例如:
        "   ":let &ro = &ro"
        "
        "如果结果全是数字,用作显示时把它作为数值处理.否则结果作为文本,并应用
        "上面描述的规则.
        "
        "小心表达式里的错误.它们可能使 Vim 不可用!
        "如果你被困住,按住 ':' 或 'Q' 来得到提示,然后退出并用 "vim -u NONE"
        "来编辑 .vimrc 或者别的什么地方,以修正问题.
        "
        "示例:
        "模拟 "ruler" 设置的标准状态行
        "   ":set statusline=%<%f %h%m%r%=%-14.(%l,%c%V%) %P"
        "类似,但加上光标所在字符的 ASCII 值 (类似于 "ga")
        "   ":set statusline=%<%f%h%m%r%=%b 0x%B %l,%c%V %P"
        "显示字节偏移和字节值,用红色标记已修改标志位.
        "   ":set statusline=%<%f%= [%1*%M%*%n%R%H] %-19(%3l,%02c%03V%)%O'%02b'"
        "   ":hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red"
        "如果载入的是压缩文件,显示 ,GZ 标志
        "   ":set statusline=...%r%{VarExists('b:gzflag',' [GZ]')}%h..."
        "并在 |:autocmd| 里:
        "   ":let b:gzflag = 1"
        "或:
        "   ":unlet b:gzflag"
        "还要定义此函数:
        "   ":function VarExists(var, val)"
        "   ":    if exists(a:var) | return a:val | else | return '' | endif"
        "   ":endfunction"
        set statusline=
        set statusline+=%2*%-3.3n%0*   "缓冲器名
        set statusline+=%f             "文件名
        set statusline+=%h%1*%m%r%w%0*  "标记符
        set statusline+=[
        if v:version >= 600
            set statusline+=%{strlen(&ft)?&ft:'none'},  "文件类型
            set statusline+=%{&encoding},               "编码类型
        endif
        set statusline+=%{&fileformat}]                 "文件格式
        if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim"))
            set statusline+= %{VimBuddy()}             "添加VimBuddy插件
            "这个插件会在状态栏上加一个笑脸,鼻子会随着光标移动而改变
        endif
        set statusline+=%=                              "左右对齐的分割点
        set statusline+=%F                             "文件的完整路径
        set statusline+=%2*0x%-8B                      "16进制表示当前字符
        set statusline+=%-14.(%l,%c%V%) %<%P           "偏移量

        " special statusbar for special windows
        if has("autocmd")
            au FileType qf
                        if &buftype == "quickfix" |
                        setlocal statusline=%2*%-3.3n%0* |
                        setlocal statusline+= [Compiler Messages] |
                        setlocal statusline+=%=%2* %<%P |
                        endif

            fun! FixMiniBufExplorerTitle()
                if "-MiniBufExplorer-" == bufname("%")
                    setlocal statusline=%2*%-3.3n%0*
                    setlocal statusline+=[Buffers]
                    setlocal statusline+=%=%2* %<%P
                endif
            endfun

            if v:version>=600
                au BufWinEnter *
                            let oldwinnr=winnr() |
                            windo call FixMiniBufExplorerTitle() |
                            exec oldwinnr . " wincmd w"
            endif
        endif

        " "titlestring" (缺省为 "") 设置窗口标题栏
        "{仅当编译时加入 "+title" 特性才有效}
        "如果此选项不为空,用来设置窗口的标题.只有在 "title" 选项打开时才会发
        "生.
        "只有终端支持设置窗口标题时才可用 (目前有 Amiga 控制台,Win32 控制台,
        "所有的 GUI 版本和带有非空的 "t_ts" 选项的终端).
        "如果 Vim 编译时定义 HAVE_X11,在可能的情况下恢复原来的标题 "X11".
        "如果本选项包含 printf 风格的 "%" 项目,依照 "statusline" 使用的规则
        "进行扩展.
        "例如:
        "   ":auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p")"
        "   ":set title titlestring=%<%F%=%l/%L-%P titlelen=70"
        " "titlelen" 的值用来在可用空间的中间或右侧对齐项目.
        "有的人喜欢文件名放在前面:
        " ":set titlestring=%t%( %M%)%( (%{expand("%:~:.:h")})%)%( %a%)"
        "注意 "%{ }" 的使用,以及用于得到不含文件名的文件名路径的表达式.只有在
        "必要时, "%( %)" 构造才会加入分隔的空格.
        "注意: "titlestring" 使用特殊字符可能会使显示引起混乱 (比如,如果它包含
        "CR 或者 NL 字符的话).
        "{仅当编译时加入 "+statusline" 特性才有效}
        if has('title') && (has('gui_running') || &title)
            set titlestring=
            set titlestring+=%f                "文件名
            set titlestring+=%h%m%r%w           "标记符
            set titlestring+= - %{v:progname} "程序名
        endif
    endif

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Moving around and tab
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Map space to /
    map <space> /

    "为窗口跳转重新定义键映射
    map <C-j> <C-W>j
    map <C-k> <C-W>k
    map <C-h> <C-W>h
    map <C-l> <C-W>l


    "Tab configuration
    map <leader>tn :tabnew %<cr>
    map <leader>tc :tabclose<cr>
    map <leader>tm :tabmove

    if v:version>=700
        set switchbuf=usetab
    endif

    if exists("&showtabline")
        set stal=2
    endif

    "Moving fast to front, back and 2 sides ;)
    imap <m-$> <esc>$a
    imap <m-0> <esc>0i
    imap <D-$> <esc>$a
    imap <D-0> <esc>0i

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => General Autocommand
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Switch to current dir
    map <leader>cd :cd %:p:h<cr>


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Parenthesis/bracket expanding
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    vnoremap $1 <esc>`>a)<esc>`<i(<esc>
    ")
    vnoremap $2 <esc>`>a]<esc>`<i[<esc>
    vnoremap $3 <esc>`>a}<esc>`<i{<esc>
    vnoremap $$ <esc>`>a"<esc>`<i"<esc>
    vnoremap $q <esc>`>a'<esc>`<i'<esc>
    vnoremap $w <esc>`>a"<esc>`<i"<esc>

    "Map auto complete of (, ", ', [
    "http://www.vim.org/tips/tip.php?tip_id=153
    "

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => General Abbrev
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Comment for C like language
    if has("autocmd")
        au BufNewFile,BufRead *.js,*.htc,*.c,*.tmpl,*.css ino $c /**<cr> **/<esc>O
    endif

    "My information
    ia xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>
    "iab xname Amir Salihefendic

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Editing mappings etc.
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Remap VIM 0
    map 0 ^

    "Move a line of text using control
    nmap <M-j> mz:m+<cr>`z
    nmap <M-k> mz:m-2<cr>`z
    vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
    vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z

    if MySys() == "mac"
        nmap <D-j> <M-j>
        nmap <D-k> <M-k>
        vmap <D-j> <M-j>
        vmap <D-k> <M-k>
    endif


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Buffer realted
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Fast open a buffer by search for a name
    "map <c-q> :sb

    "Open a dummy buffer for paste
    map <leader>q :e ~/buffer<cr>

    "Restore cursor to file position in previous editing session
    set viminfo='10,"100,:20,%,n~/.viminfo

    "用 "rot13" 编码整个文件
    " "gg" 到文件首行首字符, "V" 进入Visual-Line模式, "G"到文件末行首字符,
    "这样就选中了整篇文章,然后 "g?" 就是用 "rot13" 编码整个文件
    "
    "关于 "rot13":
    " "ROT13" 是一种简单的编码,它把字母分成前后两组,每组13个,编码和译码的
    " 算法相同,仅仅交换字母的这两个部分,即:
    "   [a..m] --> [n..z] 和 [n..z] --> [a..m]
    " "ROT13" 用简易的手段使得信件不能直接被识别和阅读,也不会被搜索匹配程
    " 序用通常的方法直接找到.经常用于 USENET 中发表一些攻击性或令人不快的
    " 言论或有简单保密需要的文章.
    " 由于 "ROT13" 是自逆算法,所以,译码和编码是同一个过程.
    map <F9> ggVGg?

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Files and backup
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " "backup" / "bk"   (缺省关闭)  覆盖文件前创建一个备份.
    "文件成功写入后保留该备份.如果你不想保留备份文件,但希望写入期间能有备
    "份,复位该选项并置位 "writebackup" 选项(这是缺省行为).如果你完全不想
    "要备份文件,同时复位两个选项 (如果你的文件系统差不多满了,这会有用).更
    "多的解释可见 "backup-table".
    "如果匹配 "backupskip" 模式,无论如何都不会建立备份.
    "如果设置 "patchmode",备份文件会换名成为文件的旧版本.
    "注意: 如果置位 "compatible",该选项被复位.
    "
    " "writebackup" / "wb" (有 "+writebackup" 特性时缺省打开,否则缺省关闭)
    "覆盖文件前建立备份.文件成功写入后,除非 "backup" 选项也被打开,删除该备
    "份.如果你的文件系统几乎已满,复位此选项. "backup-table" 还有相关的解释.
    "如果 "backupskip" 模式匹配,无论如何都不会建立备份.
    "注意: 如果置位 "compatible", 该选项被设为缺省值.
    set nobackup
    set nowritebackup

    " "swapfile" / "swf"    (缺省打开)
    "缓冲区使用交换文件.如果不想为特定缓冲区使用交换文件,可以复位本选项.
    "例如,包含即使 root 也不应得到的机密信息.要小心: 所有的文本都在内存:
    "   - 不要在大文件里使用.
    "   - 无法恢复!
    "交换文件只有在 "updatecount" 不为零并且置位 "swapfile" 时才会存在.
    "复位 "swapfile" 时,立即删除当前缓冲区的交换文件.如果置位 "swapfile"
    "并且 "updatecount" 非零,立即建立交换文件.
    "另见 "swap-file"和 "swapsync".
    "
    "此选项可以和 "bufhidden" 和 "buftype" 一起使用,指定特殊类型的缓冲区.
    "见 "special-buffers"
    set noswapfile

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Folding
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " "foldenable" / "fen"  (缺省打开)
    "{仅当编译时加入 "+folding" 特性才有效}
    "如果关闭,所有的折叠都被打开.本选项用于在文本显示的完全打开折叠和保留
    "折叠之间 (包括手动打开或关闭的折叠) 快速切换."zi" 命令切换本选项.
    "如果 "foldenable" 关闭, "foldcolumn" 会保持空白.
    "建立新折叠或者关闭折叠的命令置位本选项.见 "folding".
    "
    "折叠方法
    "可用选项 "foldmethod" 来设定折叠方法.
    "设置选项 "foldmethod" 为非 "manual" 的其它值时,所有的折叠都会被删除并
    "且创建新的.如果设置成 "manual",将不去除已有的折叠.可以利用这一点来先
    "自动定义折叠,然后手工调整.
    "
    "有 6 种方法来选定折叠:
    "   "manual"    手工定义折叠
    "   "indent"    更多的缩进表示更高级别的折叠
    "   "expr"      用表达式来定义折叠
    "   "syntax"    用语法高亮来定义折叠
    "   "diff"      对没有更改的文本进行折叠
    "   "marker"    对文中的标志折叠
    "
    "选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了,由于我使用
    " "indent" 稍微多一些,故以它的使用为例:
    "如果使用了 "indent"方式,vim会自动的对大括号的中间部分进行折叠,我们可
    "以直接使用这些现成的折叠成果.
    "在可折叠处(大括号中间):
    "   "zc"    折叠
    "   "zC"    对所在范围内所有嵌套的折叠点进行折叠
    "   "zo"    展开折叠
    "   "zO"    对所在范围内所有嵌套的折叠点展开
    "   "[z"    到当前打开的折叠的开始处
    "   "]z"    到当前打开的折叠的末尾处
    "   "zj"    向下移动.到达下一个折叠的开始处.关闭的折叠也被计入.
    "   "zk"    向上移动到前一折叠的结束处.关闭的折叠也被计入."
    if exists("&foldenable")
        set fen
        set foldmethod=indent
    endif

    " "foldlevel" / "fdl"   (缺省: 0)   设置代码折叠级别
    "{仅当编译时加入 "+folding" 特性才有效}
    "设置折叠级别: 高于此级别的折叠会被关闭.
    "设置此选项为零关闭所有的折叠.更高的数字关闭更少的折叠.
    " "zm", "zM" 和 "zR" 等命令设置此选项.
    "见 "fold-foldlevel".
    if exists("&foldlevel")
        set fdl=0
    endif


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Text option
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " "expandtab" / "et"    (缺省关闭)
    "插入模式里: 插入 <Tab> 时使用合适数量的空格.如果 "autoindent" 打开,
    " ">" 和 "<" 命令使用空格进行缩进. "expandtab" 打开时,要插入实际的制
    "表,可用 CTRL-V<Tab>.另见 ":retab" 和 "ins-expandtab".
    "注意: 如果置位 "compatible",该选项被复位.
    set expandtab

    " "shiftwidth" / "sw"   (缺省为 8)
    "(自动) 缩进每一步使用的空白数目.用于 "cindent", ">>", "<<" 等.
    set shiftwidth=4

    " "softtabstop" / "sts" (缺省为 0)
    "执行编辑操作,如插入 <Tab> 或者使用 <BS> 时,把 <Tab> 算作空格的数目.
    "感觉上,你就像使用单个 <Tab> 一样,而实际上使用的是空格和 <Tab> 的混
    "合.这可以用来维持 "ts" 的设置为标准值 8 不变,但编辑时感觉就像它被设
    "为 "sts" 那样.不过, "x" 这样的命令仍然会在实际的字符上操作.
    "如果 "sts" 为零,关闭此特性.
    "
    "如果置位 "paste" 选项, "softtabstop" 被设为 0.
    "另见 "ins-expandtab". 如果没有置位 "expandtab",通过使用 <Tab>,使空
    "格数目减到最小.
    " "cpoptions" 里的 "L" 标志位改变制表在 "list" 置位时的使用方式.
    "注意: 如果置位 "compatible",该选项被设为 0.
    set softtabstop=4

    " "tabstop" / "ts"  (缺省为 8)
    "文件里的 <Tab> 代表的空格数.另见 ":retab" 命令和 "softtabstop" 选项.
    "
    "注意: 设置 "tabstop" 为不同于 8 的值可能使你的文件在很多地方看起来不
    "正确 (比如,打印时).
    "
    "Vim 里有四个主要的使用制表的方法:
    "1. 总是保持 "tabstop" 为 8,设置 "softtabstop" 和 "shiftwidth" 为 4
    "   (或 3 或任何你想要的) 然后用 "noexpandtab".这时,Vim 使用制表和空
    "   格的混合,但输入 <Tab> 或 <BS> 键就像每个制表占用 4 (或 3) 个字符
    "   一样.
    "2. 设置 "tabstop" 和 "shiftwidth" 为想要的任何值,然后用 "expandtab".
    "   这样,你总是插入空格.改变 "tabstop" 时绝不会影响排版.
    "3. 设置 "tabstop" 和 "shiftwidth" 为想要的任何值,然后用 "modeline",
    "   再次编辑时就会重新设置这些值.这只适用于总是使用 Vim 进行文件编辑
    "   的情况.
    "4. 永远把 "tabstop" 和 "shiftwidth" 设为相同的值,并用 "noexpandtab".
    "   这样,就可以 (只适用于行首的缩进) 使用任何别人的制表位设置.不过,
    "   如果你这么做,最好在第一个非空白字符之后想插入制表时以空格代替.否
    "   则,改变 "tabstop" 时,注释等的对齐会不正确.
    set tabstop=4

    " "smarttab" / "sta"    (缺省关闭)
    "如果打开,行首的 <Tab> 根据 "shiftwidth" 插入空白. "tabstop" 或
    " "softtabstop" 用在别的地方.<BS> 删除行首 "shiftwidth" 那么多的空白.
    " 如果关闭,<Tab> 总是根据 "tabstop" 或 "softtabstop" 决定插入空白的数
    " 目. "shiftwidth" 只用于文本左移或右移 "shift-left-right".
    " 插入空白的具体方式 (制表还是空格) 取决于 "expandtab" 选项.另见
    " "ins-expandtab".如果没有置位 "expandtab",通过使用 <Tab>,使空格数目
    " 减到最小.
    " 注意: 如果置位 "compatible",该选项被复位.
    set smarttab

    " "linebreak" / "lbr"   (缺省关闭)
    "{仅当编译时加入 "+linebreak" 特性才有效}
    "如果打开,Vim 会在 "breakat" 里的字符上,而不是在屏幕上可以显示的最后
    "一个字符上回绕长行.和 "wrapmargin" 和 "textwidth" 不同,此处不会插入
    "<EOL>,它只影响文件的显示方式,而不是其内容. "showbreak" 的值会出现在
    "回绕行的前面.
    "
    "如果 "wrap" 选项关闭或 "list" 打开,不使用本选项.
    "注意 <EOL> (屏幕上的) 之后的 <Tab> 字符在多数情况下.不会显示正确数量
    "的空格.
    set lbr

    """"""""""""""""""""""""""""""
    " => Indent
    """"""""""""""""""""""""""""""
    " "autoindent" / "ai" (缺省关闭) 启用自动缩进
    "开启新行时 (插入模式下输入 <CR>,或者使用 "o" 或 "O" 命令),从当前行复
    "制缩进距离.如果你在新行除了 <BS> 或 CTRL-D 以外不输入任何东西,然后输
    "入 <Esc>,CTRL-O 或 <CR>,缩进又被删除.移动光标到其它行也有同样的效果,
    "除非 "cpoptions" 里包含 'I' 标志位.
    "如果打开自动缩进,排版 (用 "gq" 命令或者插入模式下到达了 "textwidth")
    "使用第一行的缩进距离.
    "打开 "smartindent" 或 "cindent" 时,缩进的修改方式有所不同.
    "置位 "paste" 选项时, "autoindent" 选项被复位.
    "{Vi 稍有不同: Vim 里输入 <Esc> 或 <CR> 删除缩进后,上下移动把光标放在
    "删除的缩进之后;Vi 则把光标放在已删除的缩进的某处}.
    set autoindent

    " "smartindent" / "si"  (缺省关闭)  开启新行的自动缩进
    "{仅当编译时加入 "+smartindent" 特性才有效}
    "开启新行时使用智能自动缩进.适用于 C 这样的程序,但或许也能用于其它语
    "言. "cindent" 类似,它多数情况下更好,但更严格,见 "C-indenting".如果
    "打开 "cindent", 置位 "si" 没有效果.
    " "indentexpr" 是更高级的替代方案.
    "通常,使用 "smartindent" 时也应该打开 "autoindent".
    "
    "在这些情况下自动插入缩进:
    "   - "{"           结束的行后.
    "   - "cinwords"    中的某个关键字开始的行后.
    "   - "}"           开始的行前 (只有使用 "O" 命令才会).
    "在新行第一个输入的字符如果是 "}",该行使用匹配的 "{" 相同的缩进.
    "在新行第一个输入的字符如果是 "#",该行的缩进被删除, "#" 被放到第一列.
    "下一行上,恢复原来缩进.如果你不想这么做,使用下面的映射:
    "   ":inoremap # X^H#"
    "其中的 ^H 用 CTRL-V CTRL-H 输入.
    "使用 ">>" 命令时,'#' 开始的行不右移.
    "注意: 如果置位 "compatible",复位 "smartindent".如果置位 "paste",关
    "闭这里的智能缩进功能.
    set si

    " "cindent" / "cin" (缺省关闭) 打开自动 C 程序的缩进
    "{仅当编译时加入 "+cindent" 特性才有效}
    " "cinkeys" 说明如何设置插入模式下启动重新缩进的热键, "cinoptions"
    "说明如何设置你喜欢的缩进风格.
    "如果 "indentexpr" 非空,它否决 "cindent" 的设置.
    "如果没有打开 "lisp",而 "indentexpr" 和 "equalprg" 都为空, "=" 操作
    "符使用本算法缩进,而不调用外部程序.
    "见 "C-indenting".
    "
    "如果你不喜欢 'cindent' 的工作方式,可以试试 "smartindent" 选项或者
    " "indentexpr".
    " 如果置位 "paste",不使用本选项.
    " 注意: 如果置位 "compatible",本选项被复位.
    if has("cindent")
        set cindent
    endif

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Spell checking
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    map <leader>sn ]
    map <leader>sp [
    map <leader>sa zg
    map <leader>s? z=


    """"""""""""""""""""""""""""""
    " => VIM
    """"""""""""""""""""""""""""""
    if has("autocmd") && v:version>600
        au BufRead,BufNew *.vim map <buffer> <leader><space> :w!<cr>:source %<cr>
    endif

    """"""""""""""""""""""""""""""
    " => HTML related
    """"""""""""""""""""""""""""""
    " HTML entities - used by xml edit plugin
    let xml_use_xhtml = 1
    "let xml_no_auto_nesting = 1

    "To HTML
    let html_use_css = 0
    let html_number_lines = 0
    let use_xhtml = 1

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => MISC
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Windows系统的换行符为 ,而Linux/Unix系统则为 .因此,在Windows里编辑
    "过的文本文件到了Linux/Unix里,每一行都会多出一个^M.
    "命令中的 "^M" 是通过键入 <ctrl-v><enter> 或 <ctrl-v><ctrl-m> 生成的.
    "可以在用以下命令清除该字符:
    "noremap <leader>m :%s/ //g<CR>

    "设置 'omnifunc' 选项。如:
    if has("autocmd")
        au Filetype java setlocal omnifunc=javacomplete#Complete
        au Filetype html setlocal omnifunc=htmlcomplete#CompleteTags
        au FileType css setlocal omnifunc=csscomplete#CompleteCSS
        au FileType c setlocal omnifunc=ccomplete#Complete
        au FileType php setlocal omnifunc=phpcomplete#CompletePHP
        au FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
    endif

    "进行Tlist的设置
    "TlistUpdate可以更新tags
    map <F3> :silent! Tlist<CR>
    let Tlist_Ctags_Cmd=""C:\Program Files (x86)\Vim\vim74\ctags.exe""
    let Tlist_Use_Right_Window=1
    let Tlist_Show_One_File=0
    let Tlist_File_Fold_Auto_Close=1
    let Tlist_Exit_OnlyWindow=1
    let Tlist_Process_File_Always=1
    let Tlist_Inc_Winwidth=0
    let g:showfuncctagsbin = ""C:\Program Files (x86)\Vim\vim74\ctags.exe""

    "进行NerdTree的设置
    map <F4> :silent! NERDTree<CR>

    " 按F8按钮,在窗口的左侧出现taglist的窗口,像vc的左侧的workpace
    "nnoremap <silent> <F8> :TlistToggle<CR><CR>
    nnoremap <F10> :silent! TlistToggle<CR>
    " :Tlist              调用TagList
    let Tlist_Show_One_File=0                    " 只显示当前文件的tags
    let Tlist_Exit_OnlyWindow=1                  " 如果Taglist窗口是最后一个窗口则退出Vim
    let Tlist_Use_Right_Window=1                 " 在右侧窗口中显示
    let Tlist_File_Fold_Auto_Close=1             " 自动折叠


    "Paste toggle - when pasting something in, don't indent.
    "set pastetoggle=<F3>

    "移除空行的缩进
    map <F2> :%s/s*$//g<cr>:noh<cr>''

    "Super paste
    ino <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr>

    "To hex modle 转化为16进制方式显示
    let s:hexModle = "N"
    function! ToHexModle()
    if s:hexModle == "Y"
        %!xxd -r
        let s:hexModle = "N"
    else
        %!xxd
        let s:hexModle = "Y"
    endif
    endfunction

    map <leader>h :call ToHexModle()<CR>

    "Fast reloading of the _vimrc 快速重load配置文件
    map <silent> <leader>ss :source c:Program Files (x86)Vim\_vimrc<CR>
    "Fast editing of the _vimrc 快速打开编译配置文件
    map <silent> <leader>ee :e c:Program Files (x86)Vim\_vimrc<CR>
    "When _vimrc is edited, reload it
    autocmd! bufwritepost _vimrc source c:Program Files (x86)Vim\_vimrc

    "matchit 匹配%操作
    :source C:Program Files (x86)Vimvim74macrosmatchit.vim
    "可视化的buffer操作
    let g:bufExplorerDefaultHelp=1
    let g:bufExplorerDetailedHelp=1
    map <leader>be :BufExplorer <CR>
    map <leader>bs :BufExplorerHorizontalSplit <CR>
    map <leader>bv :BufExplorerVerticalSplit <CR>

    "html.vim设置
    :let g:html_indent_script1 = "inc"
    :let g:html_indent_style1 = "inc"
    :let g:html_indent_inctags="html,body,head,tbody,p"

    "mapping 全能补全
    "如果下拉菜单弹出,回车映射为接受当前所选项目,否则,仍映射为回车
    "inoremap <expr> <CR>    pumvisible()? "<C-Y>":"<CR>"
    "如果下拉菜单弹出,CTRL-J映射为在下拉菜单中向下翻页,否则映射为CTRL-X CTRL-O
    "inoremap <expr> <C-J>   pumvisible()? "<PageDown><C-N><C-P>":"<C-X><C-O>"
    "如果下拉菜单弹出,CTRL-K映射为在下拉菜单中向上翻页,否则不变
    "inoremap <expr> <C-K>   pumvisible()? "<PageUp><C-P><C-N>":"<C-K>"
    set completeopt=longest,menu,preview

    "SuperTab插件设置
    let g:SuperTabDefaultCompletionType="<C-X><C-O>"

    "vundle设置 这是一个用于自动下载、安装、管理、清除vim插件的工具
    set nocompatible                " be iMproved
    filetype off                    " required!

    set rtp+=~/vimfiles/bundle/vundle
    let path='~/vimfiles/bundle'
    call vundle#rc(path)

    "let Vundle manage Vundle
    "required! <br>
    Bundle 'gmarik/vundle'

    "original repos on github<br>Bundle 'mattn/zencoding-vim'

    "vim-scritps repos
    Bundle 'L9'
    Bundle 'FuzzyFinder'
    Bundle 'Mark'
    Bundle 'bufexplorer.zip'
    Bundle 'The-NERD-tree'
    Bundle 'taglist.vim'
    Bundle 'matrix.vim'
    Bundle 'The-NERD-Commenter'
    Bundle 'matchit.zip'
    "Bundle 'AutoComplPop'
    Bundle 'jsbeautify'
    Bundle 'YankRing.vim'
    Bundle 'autoclose'
    "Bundle 'supertab'
    Bundle 'csharp.vim'
    Bundle 'sharp-Plugin-Added'
    Bundle 'sharp-Indent'
    Bundle 'python.vim'
    Bundle 'Pydiction'

    filetype plugin indent on       "required!

    "save session file
    set sessionoptions-=curdir
    set sessionoptions+=sesdir
    noremap <F7> :mks! WorkingSession.vim<CR>:wviminfo Working.viminfo<CR>
    noremap <F6> :source WorkingSession.vim<CR>:rviminfo Working.viminfo<CR>

    "对搜索的设置
    "map ft :call Search_Word()<CR>:cw<CR>
    "function Search_Word()
        "let w = expand("<cword>") " 在当前光标位置抓词
        "execute "vimgrep " w " **"
    "endfunction
    "

    "for Pydiction
    let g:pydiction_location = '~/vimfiles/bundle/Pydiction/complete-dict'

  • 相关阅读:
    sql笔记
    虚函数和抽象类笔记
    构造函数和静态构造函数 笔记
    在与sql server 建立连接时出现与网络相关的或特定于实例的错误
    类型转换 笔记
    test
    document.body和document.documentElement比较
    sql2005 存储过程实现分页
    新闻发布用到的存储过程和触发器
    SQL数据查询实例1
  • 原文地址:https://www.cnblogs.com/bicker/p/3616460.html
Copyright © 2011-2022 走看看