vimrc配置

    技术2022-05-19  28

     

    个人修改的.vimrc配置文件

    根据网上盛传的史上最强的vimrc文件 改编而来, 插入了很多vim7.2的官方文档, 对于刚刚接触vim的用户, 可以当成是教材来理解一下了

    “”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”" ” 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

    ” “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=7

    ” “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”,用 “

    转载请注明原文地址: https://ibbs.8miu.com/read-2216490.html

    最新回复(0)