神器VIM配置文件进阶v1.0beta

这个世界上有三种人,一种是用VI的人,一种是使用Emacs的,剩下的就是第三种人.

本文原文来自于牛人Amir Salihefendic的VIM配置文档
(网站地址:
http://amix.dk/vim/vimrc.html)
      全英文的说明,而且说的模模糊糊的,可苦了我这样的英盲了.....,
      
      希望我的部分翻译可以给你们一些帮助,少走些弯路.大家可以去作者
的博客看一下.

      我翻译的这篇配置文档是2006年的,后面该牛人还进行过数次更新,
但是更新主要涉及到细节部分.所以建议大家仔细学习这个初始版本,
熟悉之后,再继续学习其它更复杂的部分

 

 

引用:
因为是一边学习,一边写的,所以更像一学习笔记,如果有错漏,请不吝指正.

废话说了很多,希望没有影响到兄弟们阅读的心情,开工
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"          _
"      __ | /
"     /   | /
"     /__ | /
" by Amix - http://amix.dk/
"
" Maintainer: Amir Salihefendic
" Version: 2.7
" Last Change: 12/10/06 00:09:21
"Amix的ASCII图真帅,我怎么也画不出来,唉~~
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

引用:
"VIM配置文档之中,是以英文的双引号作为注释的开始,请注意一下,
"以下配置文
件中的命令,我建议大家使用全称,一来只写一次,不要怕麻烦多
"几个字母,二来以后查阅的
时候对自己也方便,平时使用的时候才尽量简写
"提高效率
引用:
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"  Tip:
"   If you find anything that you can't understand than do this:
"   help keyword OR helpgrep keywords
"  Example:
"   Go into command-line mode and type helpgrep nocompatible, ie.
"   :helpgrep nocompatible
"   then press c to see the results, or :botright cw
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"译注:如果你有任何不明白的地方,请使用帮助文件,使用方法是:help 关键字
"VIM的命令在无修改状态下,以冒号开头,比如我不知道set命令的意思,就可以用
":help set或者简写的:h set
"这里给大家推荐一下学习VIM的最好教程
"http://man.chinaunix.net/newsoft/vi/doc/usr_toc.html#usr_toc.txt
"帮助文档中文速查:
"http://vimcdoc.sourceforge.net/doc/tags.html
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" General
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"译注:常规设置
引用:
set nocompatible
" 译注:nocompatible是为了和VI保持最大兼容,除非你经常用于远程终端,或者
"调试陌生的机器,否则就禁用掉好了,单机用户直接禁用好了
.
引用:
set history=400
" 译注:保留历史命令个数,Amir给的命令个数是400,太夸张了,我改到50了,实话
"说,200个命令以前,我用过什么命令,已经完全记不清了
引用:
filetype plugin on
"译注:为特定的文件类型允许插件文件的载入.在文件编辑时,相应的插件文件
"也会载入 (如果文件类型能检测到)。比如说,我载入了一个C源代码,而且我的
"VIM安装
了C的辅助插件,那么载入C源码文件的时候,对应的插件也会自动载
"入,比如代码识别,函
数自动补全等等
引用:
filetype indent on
"译注:文件缩进的支持,这个的意思是打开不同类型的文件,可能会自动匹配不同
"的格式,如
果已经做了设置的话.
引用:
set autoread
"译注:如果文件在外部被其它程序修改了,那么VIM里会自动读入这种修改,而
"不必关闭后
再打开,很实用的功能
引用:
set mouse=a
"译注:允许使用鼠标。只可用于特定终端 (xterm、MS-DOS、Win32 |win32-
"mouse|、"QNX pterm、带 sysmouse 的 *BSD 控制台 和带 gpm 的
"Linux 控制
台)。如果你"在桌面状态下使用,就不用管了,鼠标会一直处于可用
"状态,如果你在以上
列出的终端状态下使用,请务必打开
引用:
let mapleader = ","
let g:mapleader = ","
"译注:映射快捷键开始命令为","号, g: 表示全局设置.其使用方法见下
引用:
nmap w :w!
nmap f :find
"译注: nmap 表示在普通状态下,上面已经写过, mapleader 被映射为" , "号,
"那么这里可以
用, w 命令来代替 :w! 命令,亲自试一下,是不是方便多了,手不
"用再挪大半个键盘打几个键
了. mapleade r 可以自由设定
引用:
map s :source ~/vim_local/vimrc
"译注:VIM的配置文件名字就是 vimrc ,位于你的磁盘的某个位置,一般
"来说,Windows位
于安装位置或者你的个人配置文件夹,比如我的配置
"文件所在的绝对路径就是

" C:/Documents "and Settings/hongqr/ ,这段路径,可以直接用~来
"表示,我的这句配
置就可以写为
" map s :source ~/vimrc
"本句的意思是快速重读配置文件,这样,就不需要关闭文件重开一下来读入
"配置文档了,注
意本命令和 autoread 没有关系, autoread 是重读入外部被
"程序修改的文档,
source 是重 新执行指定的文件,不要弄混了
引用:
map e :e! ~/vim_local/vimrc
"译注:上面的那一句看懂了,这句就很简单了,这是快速打开配置文件
引用:
autocmd! bufwritepost vimrc source ~/vim_local/vimrc
"译注: autocmd 是自动执行命令,这句的意思是当配置文件被更改后重新
"读入,不需要你用
,w,s 重复操作了
"今天先写到这里,累死了,格式设置好麻烦,有兄弟有简单的方法吗?明天继续~~~
圣诞节快乐~~

回来了,继续更新~~~
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Colors and Fonts
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
syntaxenable
" 译注 : 语法高亮 , 不同的源码文件 , 会在语法关键字等位置显示不同的颜
"
, 代码编辑的时候 , 不是一般的方便啊
引用:
if MySys() == "mac"
   set gfn= Bitstream/ Vera/ Sans/ Mono:h14
   set nomacatsui
   set termencoding = macroman
elseif MySys()== "linux"
   set gfn= Monospace/ 11
endif
" 译注 : 这段是个小脚本 , 针对不同的系统 , 使用不同的字体 , 如果你使用了
"
不同的操作系统 , 这段脚本很有用 , 或者需要经常带着配置文件 , 调试不同
"
的机器 , 也有用 , 否则 , 就不需要了 ,GUI 版本可以直接在菜单里设置
引用:
if has("gui_running")
set guioptions-=T
  let psc_style='cool'
  colorscheme ps_color
else
set background=dark
colorscheme zellner
endif
GUI 界面下 ,set guioptions-=T 表示不显示工具栏 , 工具栏
"
确实没有什么大用处 .psc_style 没有查到是什么东东 , 看名字也应该是
"
个自定义的参数 .colorscheme 是配色方案 , 配色方案名称是 ps_color
"
如果你想更多配色方案选择 , 可以至官网下载
"
最后两句是默认设置的配色方案和背景 . 配色的选择 , 自己喜欢就好了 ,
"
不需要用作者的
引用:
map 1 :set syntax=cheetah
map 2 :set syntax=xhtml
map 3 :set syntax=python >
map 4 :set ft=javascript
map $ :syntax sync fromstart
"根据不同的文件类型
, 配置不同的语法文件 . 还记得吗 ? 前面
"
设置为 "," 号的 .syntax 表示语法 .syncbind 这个比较有趣 , 它表示强
"
制所有 'scrollbind' 窗口具有相同的相对偏移。即:当一个窗口滚
"
屏到了它缓冲区的顶部时,所有的 'scrollbind' 窗口都会滚屏到它们
"
缓冲区的顶部。这段设置 , 请根据你使用的程序做设置
"fromstart
我没有查到这个功能 , 根据意思 , 我估计为作者留下的给用户
"
算定配置的地方
引用:
autocmdBufEnter * :syntax syncbind fromstart
" 译注 : 自动匹配用户读入的程序文件

引用:
引用:
if has(" gui_running")
set cursorline
   hi cursorline guibg= #333333
   set cursorcolumn
   hi CursorColumn guibg= #333333
endif
" 保存一下 , 是不是超酷的效果啊 , 颜色请自行配置 , 一定要和背景色有反差
引用:
hi Pmenu guibg= #333333
hi PmenuSel guibg= #555555 guifg= #ffffff
" 译注 : 这两句我自己都没有加 , 没有什么用 , 设置菜单项颜色的 , 我还是觉得
"
原装色好 . 喜欢的兄弟 , 自己调着玩吧
~~今天就更新到这里,打字的时间赶不上设置格式的时间,好麻烦的说~~

27号继续更新,今天更新内容少点

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Fileformats
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
set ffs=unix,dos,mac
译注 : 设置文件类型 , UNIX 文件 ,DOS 文件还是 Mac 文件

引用:
nmap fd :se ff=dos
nmap fu :se ff=unix
译注 : 设置文件支持DOS文件格式或者UNIX文件格式,
"和上面的放在一起说,如果只是用Windows系统,那就可以无视这一小节
"了.如果你需要经常调试不同的系统,那么就需要这个了
12 28 号更新
今天下雨, 外面真是冷风嗖嗖啊~~

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"VIM
userinterface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
set scroloff =7
“译注: scrolloff光标上下两侧最少保留的屏幕行数,简单来说,就是把光标始终
"固定在屏幕大概约中间的位置,上下至少留七行,这样翻页的时候不会混乱,很实用的功能



12月30号更新,昨天懒的一点都不想动,所以没有更新,今天来继续

""""""""""""""""""""""""""""""
  "Statuslinee
""""""""""""""""""""""""""""""
引用:
set laststatus=2
“译注:默认情况下,只有两个以上的窗口才显示状态栏.其值定义为
“本选项的值影响最后一个窗口何时有状态行:
“0: 永不
“1: 只有在有至少两个窗口时
“2: 总是
“注意:本选项与前面的set ruler功能上有重叠,如果设置了本项,
”set ruler值将被遮住.可以选择使用.
“状态栏上显示的功能可以更复杂,更多,且中定制(当然可以包含行列数)
“所以我推荐使用该项而放弃set ruler,不过如果你喜欢更简单的显示,
“那就放弃本项
引用:
function ! CurDir()

let
curdir = substitute(getcwd(), '/Users/amir/', "~/", "g")

return curdir

endfunction

“译注:简单说一下其功能,设置了一个函数CurDir(),该函数调用了getcwd()
“函数,getcwd()的作用是返回当前路径这个值.
“这里注意一下,其实可以直接使用getcwd(),不用那么麻烦
“getcwd(), '/Users/amir/', "~/", "g"
“这一长串的意思是把/Users/amir/替换为~,是不是有点晕,呵呵,Amir就是作
“者的名字,就是把他的用户目录替换为~显示
“所以这一段可以完全舍弃
引用:
set statusline=/%F%m%r%h/ %w/ / CWD:/ %r%{CurDir()}%h/ / / Line:/ %l/%L:%c
“译注:状态栏的格式化.这一段有点乱,一点一点的看吧
“F    缓冲区的文件完整路径。
“m    修改标志位,若开始修改文本显示为 "[+]";若 'modifiable' 关闭则是 "[-]"。’modifialbe’也是一个选项.表示如果关闭,缓冲区的内容不能修改。
“r    只读标志位,文本是 "[RO]"
“h    帮助缓冲区标志位,文本是 "[help]"
“w    预览窗口标志位,文本是 "[Preview]"。
“%{CurDir()}调用前面的getcwd(),用于显示前面的完整路径,如果上一段舍弃了,这里
“直接用%{getcwd()}来代替.PS:我就是这样用的.
“l    行号
“c    列号。
“L    缓冲区里的行数
“数量繁多的”/ “是转义符,转义空格的.


元月10号更新,这几天在看壳的东西,更新速度放缓了.看我文章的人也没有几个,真的成了一个人的狂欢了
引用:
"译注:默认情况下,标签切换时,缓冲区中的文件并不能切换出来,需要使用
"专门的命令,这在使用的时候极不方便.这些配置可以快速操作或切换缓冲
"区内的文件.
"VIM里关于缓冲区操作的插件是必备的,我用的缓冲区操作的插件名字
"bufferexplore.这种插件的功能更强大,强烈建议与以下的配置混合使用
"达到更优的效果
引用:
map
bd :Bclose
"译注: ,bd命令快速关闭当前缓冲区文件
引用:
map bd
"译注:向下的方向键映射,bd也就是把上一个命令进一步简化
引用:
map :bn
"译注:右方向键切换到下一个缓冲区文件
引用:
map :bp
"译注:左方向键切换到上一个缓冲区文件
引用:
"这里我添加一个我写的语句,原文没有的,大家酌情使用
map     :ls !
"译注:向上方向键显示所有的缓冲区文件
元月15日更新,近日家中有事,更新速度放缓~
引用:
引用:
map tn :tabnew%
"译注:将当前内容在新标签中打开
引用:
map te :tabedit
"译注:打开空白新标签
引用:
map tc :tabclose
"译注:关闭当前标签
引用:
map tm :tabmove
"译注:移动当前标签,使用方法为
":tabmove [N]把当前标签页移到第N个标签页之后.
"用0使用当前标签页成为首个标签页.如果没有N,
"当前标签页成为最后一个.
引用:
try
    set switchbuf=usetab
    set showtabline=2
catch
endtry
"译注:try和endtry是成对出现的,可以简单理解为循环命令,
"主要功能是用来做错误
处理的.
"set switchbuf=usetab
"这里表示不断尝试在编译时跳到打开的包含指定缓冲区
"的窗口(如果有的话)。

"具体的使用方法,请参照quickfix.
"set showtabline=2
"这里表示永远显示带有标签页标签的行
"        本选项的值指定何时显示带有标签页标签的行:
"                0: 永远不会
"                1: 至少有两个标签页时才会
"                2: 永远会
引用:
imap $a
"译注:编辑模式下,使用Alt+$,可以立刻跳到编辑行的尾部继续编辑
引用:
imap 0i
"译注:编辑模式下,使用ALT+0,可以立刻跳到编辑行的首部继续编辑
"
imap $a和 imap 0i是Mac下的,意义相同
元月17日继续更新
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" General Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
map cd :cd %:p:h
"译注:切换到当前目录
元月19日更新,诸行无常
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Parenthesis/bracket expanding
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
引用:
vnoremap $1 `>a) `
"译注:vnoremap可视模式,为选中的内容添加成对出现的符号.下同.使用$1来输入()
引用:
vnoremap $2 `>a] `
"译注:使用$1来输入[]
引用:
vnoremap $3 `>a} `
"译注:使用$1来输入{}
引用:
vnoremap $$ `>a" `
"译注:使用$1来输入""
引用:
vnoremap $q `>a' `
"译注:使用$1来输入''
引用:
vnoremap $w `>a" `
"译注:PS:这里出现了错误,这一行和往上数的第三行重复了,估计是
"作者打错了,我猜测可能是<>,成对出现的符号也不多.所以,这一行应该为
"vnoremap $w `>a> ` ,或者,如果你编辑中文
"文本比较多
,还以为改为
"vnoremap
$w '>a” `
"用于编辑中文的前后双引号,自己编辑常用的成对符号时,一定要注意,
"前面的符号放在a后,不要反了
引用:
inoremap $1 () :let leavechar=")" i
"译注:inoremap,在插入模式下,下同.在输入(后,使用$1自动补全),并返回插入模式
引用:
inoremap $2 [] :let leavechar="]" i
"译注:在输入[后,使用$2自动补全],并返回插入模式
引用:
inoremap $4 { o} :let leavechar="}" O
"译注:在输入{后,使用$4自动补全},并返回插入模式
引用:
inoremap $3 {} :let leavechar="}" i
"译注:在输入{后,使用$3自动补全},并返回插入模式
引用:
inoremap $q '' :let leavechar="'" i
"译注:在输入'后,使用$q自动补全',并返回插入模式
引用:
inoremap $w "" :let leavechar='"' i
"译注:在输入"后,使用$q自动补全",并返回插入模式
引用:
au BufNewFile,BufRead *./(vim/)/@! inoremap """ :let leavechar='"' i
au BufNewFile,BufRead *./(txt/)/@! inoremap ''' :let leavechar="'" i
"译注:非常遗憾,实在没有弄明白这两行是什么意思,估计应该是在vim和txt格式文档
"被新建和读入时,输入"和'号后,自动进入编辑模式,并置于符号之间
"我给作者发了一封信,但是没有回应,估计是被当成垃圾邮件处理了.T_T怨念中...
引用:
imap :exec "normal f" . leavechar a
"译注:猜测这个意思是插入模式下,
"  执行Alt+l,跳转到同一行下一个相同字母处

"实在是查不到exec这个命令的用法了,而且这一行语法错误,无法继续.
引用:
imap :exec "normal f" .leavechar a
"译注:同上一行,Mac机用命令
2月23日继续更新,混乱仍然持续"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" General Abbrevs
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" General Abbrevs
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
iab mdate =strftime("%d/%m/%y %H:%M:%S")
iab mname hongqr
"译注:上面两行是由自己定制的个人信息
"iabc为插入模式删除所有的缩写
"mdate 为插入当前日期和时间
"mdate为插入自己的用户名
3月15日继续更新
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Editing mappings etc.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
map 0 ^
"译注:用0来替换^号,使跳到行首使用0命令
引用:
nmap mz:m+`z
nmap mz:m-2`z
"译注:普通模式下,调整当前行往下一行,调整当前行往上一行
引用:
vmap :m'>+`mzgv`yo`z
vmap :m'<-2`>my`"译注:可视模式下,调整当前行往下一行,调整当前行往上一行
"这两组四个命令,非常实用
引用:
if MySys() == "mac"
  nmap
  nmap
  vmap
  vmap
endif
"译注:以上脚本是为了Mac机与PC机兼容的,可以忽略
引用:
func! DeleteTrailingWS()
  exe "normal mz"
  %s//s/+$//ge
  exe "normal `z"
endfunc
autocmd BufWrite *.py :call DeleteTrailingWS()
"译注:为Python格式最后一个单词尾清理空白字符,ge,向后直到单词尾
引用:
set completeopt=menu
"译注:使用弹出菜单来显示可能的补全,命令行下弹出
3月18日继续更新,阳光灿烂,心情舒畅
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Command-line config
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
func! Cwd()
  let cwd = getcwd()
  return "e " . cwd
endfunc
"译注:设置函数Cwd().
引用:
func! DeleteTillSlash()
  let g:cmd = getcmdline()
  if MySys() == "linux" || MySys() == "mac"
    let g:cmd_edited = substitute(g:cmd, "//(.*/[//]//).*", "//1", "")
  else
    let g:cmd_edited = substitute(g:cmd, "//(.*/[]//).*", "//1", "")
  endif
  if g:cmd == g:cmd_edited
    if MySys() == "linux" || MySys() == "mac"
      let g:cmd_edited = substitute(g:cmd, "//(.*/[//]//).*/", "//1", "")
    else
      let g:cmd_edited = substitute(g:cmd, "//(.*/[/]//).*/[/]", "//1", "")
    endif
  endif
  return g:cmd_edited
endfunc
"译注:这段脚本实际上是为了下面的命令做准备的.很遗憾,不知道做什么用的,"猜测应该是处理不同的系统字符.
"substitute({expr}, {pat}, {sub}, {flags})
"返回等于 {expr} 的字符串,但其中第一个 {pat} 的匹配被替代成
                {sub}。
引用:
func! CurrentFileDir(cmd)
  return a:cmd . " " . expand("%:p:h") . "/"
endfunc
"译注:获得当前路径
引用:
cno $h e ~/
"译注:cno[remap] {lhs} {rhs}
   在映射命令作用的模式中把键序列 {lhs} 映射为 {rhs} 。禁止对映射后的 {rhs} 进行映射扫描。这个特性可以避免映射的嵌套和递归。通常用于重重定义一个命令。
"以上面的脚本为基础,这里重定义在命令行下,
"重定义 $h为 e ~/,也就是编辑当前文件夹命令
引用:
cno $d e ~/Desktop/
"译注: 命令行直接输出为编辑桌面命令
引用:
cno $j e ./
"译注:命令行直接输出编辑上一级目录命令
引用:
cno $q eDeleteTillSlash()
"译注:函数不明白,而且没有找到是什么意思,略过,有知道的兄弟请不吝赐教
cno $c e eCurrentFileDir("e")
cno $tc eCurrentFileDir("tabnew")
引用:
cno $th tabnew ~/
"译注:新建标签
引用:
cno $td tabnew ~/Desktop/
"译注:新建标签编辑文件 ,目录为桌面
引用:
cnoremap    
"译注:重定义
引用:
cnoremap    
"译注: 重定义
引用:
cnoremap    
"译注:重定义
3月28日继续更新,天气又冷了~
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Buffer realted
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
map :sb
"译注: :[N]sb[uffer] [N]                              *:sb* *:sbuffer*
"                分割窗口并编辑缓冲区列表中第 [N] 个缓冲区,如果没指定 [N],就编辑当前的缓冲区。
"分割时,适用'switchbuf'的"useopen"设置.这个命令同样可以编辑不在列表里的缓冲区,'buflisted' 不会因而被置位。

":[N]sb[uffer] {bufname}
"                分割窗口并编辑缓冲区列表中 {bufname} 对应的缓冲区。
"这个命令同样可以编辑不在列表里的缓冲区,'buflisted' 不会因而被置位。
引用:
map q :e f:/temp/buffer
"译注:在指定目录下创建一个临时文件
引用:
set viminfo='10,/"100,:20,%,n~/.viminfo
au BufReadPost * if line("'/"") > 0|if line("'/"") <= line("$")|exe("norm '/"")|else|exe "norm $"|endif|endif
"译注:恢复文件到上次编辑时的位置
引用:
map ggVGg?
"译注:对全文使用Rot13进行简单加密
"ROT13是一种简单的编码,它把字母分成前后两组,每组13个.
"编码和解码的算法相同,仅仅交换字母的这两个部分,
"即:[a..m] --> [n..z] 和 [n..z] --> [a..m] (--> Caesar 13)。
"这个就是简单的对英文加密的小玩意
引用:
command! Bclose call BufcloseCloseIt()
  "译注:删除一个缓冲区文件时,不关闭窗口
引用:
function! BufcloseCloseIt()
  let l:currentBufNum = bufnr("%")
  let l:alternateBufNum = bufnr("#")

if buflisted(l:alternateBufNum)
  buffer #
  else
  bnext
  endif

  if bufnr("%") == l:currentBufNum
  new
  endif

if buflisted(l:currentBufNum)
  execute("bdelete! ".l:currentBufNum)
  endif
  endfunction
4月8日更新
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Files and backups
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
set nobackup
"译注:backup或者bk,使用备份,nobackup或者nobk关闭备份.
"覆盖文件前创建一个备份。文件成功写入后保留该备份。
"如果你不想保留备份文件,但希望写入期间能有备份,
"复位该选项并置位 'writebackup' 选项(这是缺省行为)。
"如果你完全不想要备份文件,同时复位两个选项 (如果你的文 "件系统差不多满了,这会有用)。
引用:
set nowb
"译注:wb就是writebackup见上
引用:
set noswapfile
"译注:缓冲区不使用交换文件
4月9日
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Folding
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
set nofen
"译注:关闭折叠,这个功能,个人的看法不同,有人觉得折叠特别有用,
  "有人觉得这就是个废柴功能(比如作者),具体大家自己斟酌吧.
引用:
set fdl=0
"译注:  设置折叠级别: 高于此级别的折叠会被关闭。
"设置此选项为零关闭所有的折叠。更高的数字关闭更少的折叠。
4月10号更新
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Text options
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
set expandtab
"译注:插入模式里: 插入 时使用合适数量的空格。
"如果 'autoindent' 打开,'>' 和 '<' 命令使用空格进行缩进。
"'expandtab' 打开时,要插入实际的制表,可用 CTRL-V
引用:
set shiftwidth=2
"译注:设置自动缩进为2
引用:
map t2 :set shiftwidth=2
"译注:设置t2为自动缩进2格
引用:
map t4 :set shiftwidth=4
"译注:设置t4为自动缩进4格
引用:
au FileType html,python,vim,javascript setl shiftwidth=2
"译注:类似于 ":set",但只设置局部于当前缓冲区或者窗口的值。
"本句表示设置以下文件html,python,vim,javacript的自动缩进为2
引用:
au FileType html,python,vim,javascript setl tabstop=2
"译注:设置自动缩进为4,其余同上
引用:
au FileType java setl shiftwidth=4
"译注:设置java的自动缩进为4
引用:
au FileType java setl tabstop=4
"译注:设文件里的 代表的空格数为4.tabstop默认设置为8
引用:
set smarttab
"译注:如果打开,行首的 根据 'shiftwidth' 插入空白。
"'tabstop' 或'softtabstop' 用在别的地方。
" 删除行首 'shiftwidth' 那么多的空白。
"如果关闭(set nosmarttab),
" 总是根据 'tabstop' 或 'softtabstop' 决定插入空白的数
"目。'shiftwidth' 只用于文本左移或右移
引用:
set linebreak
"译注: 如果打开,Vim 会在 'breakat' 里的字符上,
"而不是在屏幕上可以显示的最后一个字符上回绕长行。
"和 'wrapmargin' 和 'textwidth' 不同,此处不会插入
",它只影响文件的显示方式,而不是其内容。
"'showbreak' 的值会出现在回绕行的前面。
引用:
set  textwidth=72
"译注:插入文本的最大宽度。更长的行会在空白之后截断,以达到此宽度。设为零关闭
此项功能。
""""""""""""""""""""""""""""""
   " Indent
   """"""""""""""""""""""""""""""
引用:
set autoindent
   "译注:开启新行时 (插入模式下输入
   "或者使用 "o" 或 "O" 命令),从当前行复制缩进距离。
引用:
set smartindent
   "译注:开启新行时使用智能自动缩进。
引用:
set cindent
   "译注:打开自动 C 程序缩进
引用:
set wrap
   "译注:该选项改变文本显示的方式。它不改变缓冲区里的文本,
   "'textwidth' 会。如果打开,超过窗口宽度的行会回绕,
   "并在下一行继续显示。如果关闭,行不会
   "回绕。长行只有一部分会显示。如果光标移动到不显示的部分,屏幕会水平滚
   "动。如果需要的话,行会在单词的中间断开。
4月11日更新,混乱着,前进着
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Spell checking
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
map sn ]s
"译注:]s表示移动到光标之后下一个拼写有问题的单词。
"命令前的计数可以用来重复。
引用:
map sp [s
"译注:[s与]s相反的搜索
引用:
map sa zg
"译注:zg表示把光标所在的单词作为一个好 (good) 词
"加入到 'spellfile'的第一个名字对应的文件。
引用:
map s? z=
"译注:z=表示 为光标所在/之后的单词提供正确拼写单词的建议。
"即使单词没有被高亮为坏词,它也可用来寻找替代的单词,
"比如当该单词之后的单词是坏词。
"可视模式下使用高亮文本作为要被替代的单词。
"结果按和被替代的单词的相似度排序。
"可能需时很久。
引用:
"译注:本小节用来做拼写检查,注意,暂时不支持中文,英文效果较好,
  "只检查单词拼写,不检查语法错误,所以我自己都关掉这个东东的,
  "不过如果有兄弟需要这方面的功能,需要首先打开拼写检查选项,以上设置才有效
:setlocal spell spelllang=en_us
"译注:这一行表示打开美式英文的拼写检查,如果需要添加其它语种文件,里
"请至以下地址下载
"ftp://ftp.gnu.org/gnu/aspell/dict/
"下载文件后,添加至安装目录的spell目录下
"如果想生成自己的拼写检查文件,请至首部的帮助文件地址查阅.
"安装目录下的spell目录下文件夹对应的语种,请至以下链接查阅
"ftp://ftp.gnu.org/gnu/aspell/dict/0index.html
4月13号更新,中间的Plugin configuration小节主要是针对插件进行的设置,因使用者而异,所以暂时不做教程了
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Filetype generic
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Todo
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
au BufNewFile,BufRead *.todo so ~/vim_local/syntax/amido.vim
"译注:在创建或读入todo为后缀的文件名时,执行amido.vim
"这句的意思表示,可以在创建或者读入某个特定类型的文件时,
"执行某个特定的vim脚本
引用:
""""""""""""""""""""""""""""""
" VIM
""""""""""""""""""""""""""""""
autocmd FileType vim map :w!:source %
"译注:文件类型为vim文件时,使用来代替保存和执行命令
"命令的第一个参数是 "",映射将只局限于当前的缓冲区内
""""""""""""""""""""""""""""""
   " HTML related
   """"""""""""""""""""""""""""""
引用:
   "译注:以下三行使用2HTML.vim脚本
   "2html.vim它本身并不是语法文件,只是一个把当前
   "窗口转换成 HTML 的脚本。Vim 打开一个新窗口,在那里它构造 HTML
   文件。转换方法详细请参阅首部的帮助文件相关
引用:
   let html_use_css = 1
    "译注:缺省情况生成为旧版本的浏览器优化的 HTML。
    "如果你希望使用层叠样式表 (CSS1) 来设置属性
    "(产生相当简洁且合法的 HTML 4 文件),就设置为1,这个必设了
    "相来也没有几个人还用旧版本的HTML文件了
引用:
   let html_number_lines = 0
   "译注:通过设置"html_number_lines" 为一非零值,
   "你可以让输出的 HTML 强制给行编号设置
   "1表示打开,设置0为强制关闭,行编号的主要目的就是查阅方便,
   "VIM已经自备了行号,所以这里就可以关闭了
引用:
   let use_xhtml = 1
   "译注:使用该脚本产生 XHTML (XML 兼容的 HTML)。
   "这可以通过设置 "use_xhtml"变量完成:
   ":let use_xhtml = 1
   "要关闭此选择,删除该变量:
   ":unlet use_xhtml
""""""""""""""""""""""""""""""
   " Ruby & PHP section
   """"""""""""""""""""""""""""""
引用:
autocmd FileType ruby map :w!:!ruby %
   "译注: 设置为保存Rbuy文件的快捷键
引用:
autocmd FileType php compiler php
   "译注:为 php 编译器设定相关选项。当没有 "!"时设定只作用于
   "当前缓冲区。如果使用 了 "!" 则修改全局选项的值。
   "在安装目录下的compiler文件夹中的对应VIM插件
   "为选择的编译器设定各种选项
引用:
   autocmd FileType php map cd:w:make %
   "译注:设置为切换到当前路径,保存,并自动编译php文件
2009年4月17日
""""""""""""""""""""""""""""""
" Python section
""""""""""""""""""""""""""""""
引用:
au FileType python so ~/vim_local/syntax/python.vim
译注:打开python类型文件时,自动执行python.vim插件
引用:
autocmd FileType python map :w!:!python %
"译注:打开python类型的文件时,映射为保存并运行
引用:
autocmd FileType python so ~/vim_local/plugin/python_fold.vim
"译注:打开python类型的文件时,自动执行python_fold.vim插件,本插件需要自行下载
引用:
"Set some bindings up for 'compile' of python
autocmd FileType python set makeprg=python/ -c/ /"import/ py_compile,sys;/ sys.stderr=sys.stdout;/ py_compile.compile(r'%')/"
autocmd FileType python set efm=%C/ %.%#,%A/ / File/ /"%f/"//,/ line/ %l%.%#,%Z%[%^/ ]%//@=%m
"译注:从解释上来看,这两行是绑定一些python的编译设置,
    "因为本人没有学习过python,不好意思.
引用:
au FileType python set cindent
au FileType python inoremap $r return
au FileType python inoremap $s self
au FileType python inoremap $c ####kla
au FileType python inoremap $i import
au FileType python inoremap $p print
au FileType python inoremap $d """"""O
"译注:python的键映射
引用:
    function! Python_Eval_VSplit() range
    let src = tempname()
let dst = tempname()
    execute ": " . a:firstline . "," . a:lastline . "w " . src
    execute ":!python " . src . " > " . dst
    execute ":pedit! " . dst
    endfunction
    au FileType python vmap :call Python_Eval_VSplit()
"译注:运行python解释器.
4月20日更新,昨天龙族挂了........
   """"""""""""""""""""""""""""""
   " Cheetah section
   """""""""""""""""""""""""""""""
引用:
   "译注:Cheetah,一个使用Python编写的模板引擎和代码生成工具,
   "(an open source  template engine and code generation tool,
   "written in Python)
   "官方网址: http://www.cheetahtemplate.org/
引用:
   autocmd FileType cheetah set ft=xml
   "译注:使用cheetah时设置格式为xml
引用:
   autocmd FileType cheetah set syntax=cheetah
   "译注:使用cheetah时设置语法为cheetah
4月21日更新
"""""""""""""""""""""""""""""""
" Vim section
"""""""""""""""""""""""""""""""
引用:
autocmd FileType vim set nofen
"译注:设置vim文件为不折叠.这个设置感觉可有可无的,是否折叠,由大家自己决定吧
4月22日更新,终于晴天了.......
"""""""""""""""""""""""""""""""
" Java section
"""""""""""""""""""""""""""""""
"译注:因为本人不熟悉Java,所以一些命令全部是直译
引用:
au FileType java inoremap System.out.println();hi
"译注:插入模式下,映射system.out.println();并退出以上模式,
    "左移一格,重新进入插入模式.
引用:
autocmd FileType java source ~/vim_local/macros/jcommenter.vim
"译注:文件格式为java的,自动执行~/vim_local/macros/jcommenter.vim
引用:
autocmd FileType java let b:jcommenter_class_author='Amir Salihefendic ( [email protected])'
"译注:文件格式为java的,自动添加类作者为Amir Salihefendic ( [email protected]) ,
    "这个内容请自行更改到自己的用户名.
引用:
autocmd FileType java let b:jcommenter_file_author='Amir Salihefendic ( [email protected])'
"译注:文件格式为java的,自动添加文件作者为Amir Salihefendic
( [email protected])
引用:
autocmd FileType java map :call JCommentWriter()
"译注:文件格式为java的,映射为调用命令JCommentWiter()
引用:
autocmd FileType java inoremap $pr private
autocmd FileType java inoremap $r return
autocmd FileType java inoremap $pu public
autocmd FileType java inoremap $i import
autocmd FileType java inoremap $b boolean
autocmd FileType java inoremap $v void
autocmd FileType java inoremap $s String
"译注:一系列的java键映射
引用:
function! JavaFold()
    setl foldmethod=syntax
    setl foldlevelstart=1
    syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend
    syn match foldImports //(/n/?import./+;/n/)/+/ transparent
    fold
引用:
function! FoldText()
    return substitute(getline(v:foldstart), '{.*', '{...}', '')
        endfunction
            setl foldtext=FoldText()
            endfunction
            au FileType java call JavaFold()
            "译注:文件类型为java时,调用上面写的javaFold()函数
引用:
au FileType java setl fen
            "译注:设置允许折叠
引用:
au BufEnter *.sablecc,*.scc set ft=sablecc
            "译注:文件类型*.sablecc和*.scc
            "进入缓冲区后。设置文件类型为sablecc
            "BuEnter选项,在文件类型进入缓冲区后,
            "可用来设定有关文件类型的选项。也在开始编
            "辑缓冲区时执行,它发生在 BufReadPost自动命令之后。
4月23日,天又阴了~~
""""""""""""""""""""""""""""""
" JavaScript section
"""""""""""""""""""""""""""""""
引用:
    au FileType javascript so ~/vim_local/syntax/javascript.vim
    "译注:文件格式为javascript时,自动执行对应的javascript.vim脚本文件
function! JavaScriptFold()
引用:
setl foldmethod=syntax
    "译注:foldmethod当前窗口使用的折叠方式,syntax表示语法高亮项目指定折叠
   
引用:
setl foldlevelstart=1
    "译注:foldlevelstart用于开始编辑时,
    "总是关闭所有的折叠 (值为零),关闭某些折叠 (1) 或者没有折叠 (99)
   
引用:
syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend
    "译注:
    "语法格式:sy[ntax] region {group-name} [{options}],定义区域
    "{group-name}为foldBraces
    "start={start_pattern}   定义区域开始的搜索模式

    "transparent如果给出 "transparent" (透明)参数,
    "本项目自身不会被高亮,但会使用包含它的外层 项目的高亮属性。
    "这对本身不需要特殊高亮但要用来跳过一段文本的语法项目有用。

    ""fold" 参数使得本项目的折叠级别加 1
    "keepend不允许被包含的匹配项目越过结束模式的匹配文本。
    "extend否决包含本区域的项目的 "keepend" 设置
引用:
function! FoldText()
    return substitute(getline(v:foldstart), '{.*', '{...}', '')
        endfunction
            setl foldtext=FoldText()
            endfunction
引用:
            au FileType javascript call JavaScriptFold()
            "译注:文件格式为javascript时调用javascriptfold()函数
引用:
            au FileType javascript setl fen
            "译注:文件格式为javascript时,设置折叠
引用:
            au FileType javascript imap console.log();hi
            "译注:文件格式为javascript时,
            "映射为执行console.log();h
i
引用:
            au FileType javascript imap alert();hi
            "译注:映射执行alert();hi
引用:
            au FileType javascript setl nocindent
            "译注:设置打开自动 C 程序缩进
引用:
            au FileType javascript inoremap $r return
            "译注:映射$r为return
引用:
au FileType javascript inoremap $d //////ka
            "译注:映射$d 为//////ka
引用:
au FileType javascript inoremap $c /****/ka
            "译注:映射$c 为/****/ka
4月24日继续更新,阴雨继续着
""""""""""""""""""""""""""""""
" HTML
"""""""""""""""""""""""""""""""
引用:
au FileType html,cheetah set ft=xml
"译注:格式为html,cheetah时,设置为xml格式
引用:
au FileType html,cheetah set syntax=html
"译注:格式为html,cheetah时,语法文件使用html对应的
4月26日更新
   """"""""""""""""""""""""""""""
   " C mappings
   """""""""""""""""""""""""""""""
引用:
   autocmd FileType c map :w:!gcc %
   "译注:格式为C时,自动调用gcc来进行编译
   "gcc为类UNIX系统下最常用的C语言编译工具,现在已经可以同时支持C与C++
4月27号更新
   """""""""""""""""""""""""""""""
   " SML
   """""""""""""""""""""""""""""""
引用:
autocmd FileType sml map cd:w:!sml %
   "译注:服务建模语言(SML)是用可扩展标记语言(XML)
   "用来描述计算机网络、应用、服务、存储和其他IT资源的“服务资源库”。
   "本句表示调用对应的sml文件来执行和前面的语法文件类似.
4月28日更新,心情郁闷中~
   """"""""""""""""""""""""""""""
   " Scheme bidings
   """"""""""""""""""""""""""""""
引用:
   "译注:Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,
   "参考文档: http://www.ibm.com/developerworks/cn/linux/l-schm/index1.html
   "Scheme语言概要.
   autocmd BufNewFile,BufRead *.scm map cd:w:!petite %
   "译注:执行scm文件时调用对应的编译程序
   autocmd BufNewFile,BufRead *.scm inoremap (pretty-print )i
   autocmd BufNewFile,BufRead *.scm vnoremap `>a)`

    "译注:以上三句没什么特别的,有兴趣学习的兄弟,请参考一下详细资料吧
4月29号更新
引用:
""""""""""""""""""""""""""""""
   " SVN section
   """""""""""""""""""""""""""""""
   map :new:read !svn diff:set syntax=diff buftype=nofilegg
   "译注:如果我没有理解错误的话,这里的SVN指的应该是Subversion,这是一个自由/开源的版本控制系统
   "介绍网址: http://www.subversion.org.cn/svnbook/1.4/svn.intro.whatis.html
5月3日更新,昨天喝高了~~
""""""""""""""""""""""""""""""
" Snippets
"""
引用:
""""""""""""""""""""""""""""
   "You can use to goto the next <++> - it is pretty smart ;)
   "译注:你可以使用跳转到下一个<++>
   """""""""""""""""""""""""""""""
   " Python
   """""""""""""""""""""""""""""""
   autocmd FileType python inorea cfun =IMAP_PutTextWithMovement("def <++>(<++>):/n<++>/nreturn <++>")
   autocmd FileType python inorea cclass =IMAP_PutTextWithMovement("class <++>:/n<++>")
   autocmd FileType python inorea cfor =IMAP_PutTextWithMovement("for <++> in <++>:/n<++>")
   autocmd FileType python inorea cif =IMAP_PutTextWithMovement("if <++>:/n<++>")
   autocmd FileType python inorea cifelse =IMAP_PutTextWithMovement("if <++>:/n<++>/nelse:/n<++>")
   "译注:用于Python语言的快捷键
5月4日更新,已经快写完了,后面基本都是语言类相关的了...
引用:
   """""""""""""""""""""""""""""""
   " JavaScript
   """""""""""""""""""""""""""""""
   autocmd FileType cheetah,html,javascript inorea cfun =IMAP_PutTextWithMovement("function <++>(<++>) {/n<++>;/nreturn <++>;/n}")
   autocmd filetype cheetah,html,javascript inorea cfor =IMAP_PutTextWithMovement("for(<++>; <++>; <++>) {/n<++>;/n}")
   autocmd FileType cheetah,html,javascript inorea cif =IMAP_PutTextWithMovement("if(<++>) {/n<++>;/n}")
   autocmd FileType cheetah,html,javascript inorea cifelse =IMAP_PutTextWithMovement("if(<++>) {/n<++>;/n}/nelse {/n<++>;/n}")
   "译注:同时设置文件为cheetah,html,javascript这几种格式的键映射
引用:
   imap
   "译注:插入模式下,替代
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Cope
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
map :noh
"译注:使用参数,表示在定义一个映射时不在命令行上回显该映射
"使用表示命令:noh,停止 'hlsearch' 选项的高亮显示。
"如果再执行查找命令或者设定 'hlsearch' 选项,高亮会自动打开。
引用:
map n :cn
"译注:
":[count]cn     显示含有文件名的列表中的往后第 [count] 个错误。如果没
"有文件名,则跳转到往后第 [count] 个错误。
引用:
map p :cp
"译注:和上一个命令相反,是向前跳转.
引用:
map c :botright cw 10
"译注::bo[tright] {cmd},  
"执行 {cmd}。如果包含一个分割窗口的命令,那么该窗口出现在底部,
"并且占据最大宽度。当垂直分割窗口时,窗口出现在最右边,并且占据
"最大高度。
"cw [height]命令,
"当存在可以识别的错误时,打开窗口。
"如果该窗口已经打开且没有可识别的错误,则将此窗口关闭。
"当存在可以识别的错误时,打开窗口。
"如果该窗口已经打开且没有可识别的错误,则将此窗口关闭。
"10表示高度
引用:
map :q:botright cw 10
"译注:映射以下一组命令
",前面映射过一次了,表示l
",表示j
":botright cw 10前面已介绍过了
5月9日更新,接近尾声了

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" MISC
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
noremap m mmHmt:%s///ge'tzt'm
"译注:本句的作用是移走Windows下的^M字符
"到窗口从顶部 (Home) 算第 [count] 行 (缺省: 窗口的第一行)
"并停在第一个非空白字符上。
"mmHmt,置位当前位置为m,移动到窗口顶部,置位t,
":%s///搜索并替换
"ge,"e" 标记通知 ":substitute" 命令找不到不是错误。
"zt[count] 命令 重绘,使第 [count] 行显示在窗口顶端
"(默认为光标所在的 行)。
"光标停留在那一列第一个非空白字符上。
引用:
set pastetoggle=
"译注:指定切换past模式的键,可以避免自动缩进带来的影响
"使用之后,INSERT模式会切换为INSERT(Paste)模式,
"即使使用了autoindent自动缩进,也不会影响
5月10日更新,没想到是这个日子基本结束的,呵呵~~
引用:
map :%s//s*$//g:noh''
"译注:在空行上移除缩进
"noh,前面介绍过,停止 'hlsearch' 选项的高亮显示
"  ''返回上一个标记点
引用:
"inoremap a:set pastemui+mv'uV'v=:set nopaste
"译注:超级粘贴,尤其是WIndows系统下使用时,VIM的粘贴只能用复杂来形容
"本命令使用Windows下的通用粘贴命令,极大的方便了Windows用户的习惯
"PS:这个命令写的真好,但是效果非常差,很抱歉我这样说,以上命令,如果
"粘贴行数过多,会在最下方出现一个计数器,然后数字减小到0时,粘贴完毕,
"如果超过上万行,你就可以泡杯茶等了......,所以这个命令,我很早就放弃了
引用:
"A function that inserts links & anchors on a TOhtml export.
" Notice:
" Syntax used is:
" Link
" Anchor
"译注:一个在TOhtml中把链接和锚点做成Html样式的小功能
function! SmartTOHtml()
   TOhtml
   try
    %s/"/s/+/*> /(./+/)/1    %s/"/(-/|/s/)/+/*> /(./+/)/2    %s/"/s/+=> /(./+/)/1   catch
   endtry
   exe ":write!"
   exe ":bd"
endfunction
"译注:该脚本基于TOhtml插件,如果删除或者没有安装的话,以上脚本不起作用,TOhtml默认安装....
"HTML 原代码          显示结果          描述
"<            <         小于号或显示标记
">                 >         大于号或显示标记
"&                 &         可用于显示其它特殊字符
""         "         引号
"                  一个空白位
"                  不断行的空白
"cyan青绿色
"测试方法:新建一个网页文件vim.html,输入内容
"http://amix.dk/
"这个时候,能看到显示文本部分是以类似网页里的链接形式出现的,仅仅是显示效果
"好,再回到配置文件部分,将以上脚本屏蔽,再刷新,这个时候,VIM中的链接文件全部变为普通文本了
元月5日更新,这一块后写的,不过位置还应该在Moving around tab前
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Visual
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
引用:
function! VisualSearch(direction) range
"译注:设置局部函数saved_reg
"执行寄存器的内容,双引号为寄存器名称,@"记录选中的值
let l:saved_reg = @"
"
"译注:执行vgvy
"gv 启动可视模式,重新选择上一次的选择区和相同模式。在可视模式下,
"该命令将交换当前和上一次选择区。
"在可视模式下使用 "p" 或 "P" 后,本命令选择被粘贴的文本。
execute "normal! vgvy"
"
"escape({string}, {chars})
"在 {string} 里用反斜杠转义 {chars} 里的字符。例如:
":echo escape('c:/program files/vim', ' /')
"返回:
"c://program/ files//vim
"///.*$^~[],该表达式表示除第一个/之外,后面的符号全部用/来转义
let l:pattern = escape(@", '///.*$^~[]')
"
"译注:删除/n. "", ""的意思.第一对""表示删除,第二对表示标志位为空
let l:pattern = substitute(l:pattern, "/n$", "", "")
if a:direction == 'b'
execute "normal ?" . l:pattern . "^M"
else
execute "normal /" . l:pattern . "^M"
endif
"
"译注:重新赋值,将旧值赋给@/,新值赋给@"
let @/ = l:pattern
let @" = l:saved_reg
endfunction


引用:
vnoremap * :call VisualSearch('f')
vnoremap # :call VisualSearch('b')
"译注:可视模式下搜索选中的项目,*向前,#向后

元月2号,继续更新,大家新年快乐~
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Moving around tab
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
引用:
map /
map
?
“译注: /和?这两个常用符号,使用起来比较别扭,这里可以在普通模式下,转换
“到不需要的空格键上
引用:
map j
map
k
map
h
map l
译注:窗口分割时,进行切换的按键热键需要连接两次,比如从下方窗口移动
"光标到上方窗口,需要k,非常麻烦,现在重映射为,切换的
"时候会变得非常方便.
引用:
set wildmenu
"译注: 命令行补全以增强模式运行.就是屏幕下方的命令行状态里,不设置时
“命令补全需要按Tab键,设置后不需要按Tab键,也会尽可能多的匹配对应项.

"使用方法,命令行,弹出命令补全之后 :


" 选择前项/后项匹配 (类似于 CTRL-P/CTRL-N)



" 文件名/菜单名补全中: 移进子目录和子菜单。


" 菜单补全中,如果光标在句号之后: 移进子菜单。


" 文件名/菜单名补全中: 上移到父目录或父菜单。
引用:
set ruler
译注 : 就是设置标尺 . 在右下角 , 无论何时都显示所在的行 , . 这个是必设的
"选项
, 和后面的一 个选项有重复 , 讲到的时候才说 .
引用:
set cmdheight =2
译注 : 默认方式下 , 命令行的高度是一行 , 为了看的清楚 , 这里设置为 2 .
引用:
set number
译注 : 设置左侧显示行号 . 必设项
引用:
set lazyredraw
“译注: lazyredraw. 执行宏、寄存器和其它不通过输入的命令时屏幕不会重画
引用:
set hidden
译注 : 设置后编辑结束时隐藏缓冲区 , 否则卸载 .
可以用 :ls! 看一下 , 即使现在只有一个窗口 , 可能也保留了数个编辑过而未保存
"的缓冲文件
, 果你试图关闭他们 , 修改过而未保存的文件会警告并拒绝 . 这个
"功能可以防止误关闭某文件
而导致的数据丢失等问题 .
"详细说明请参照缓冲区部分
引用:
set backspace =eol,start,indent
译注 : 默认情况下 ,backspace , 也就是我们常说的退格键 , 只能在本行进行移
"动
, 现在可以扩 展到影响以下参数了
“indent 允许在自动缩进上退格
"eol 允许在换行符上退格 (连接行)

“start 允许在插入开始的位置上退格;CTRL-W 和 CTRL-U 到达插入开始的位
“置时停留一次。
引用:
set whichwrap +=<,>,h,l
译注 : 和退格键一样 , 左右方向键默认也只能在本行移动 , 用起来会很别扭 , 这条设置过之后 ,
就没有限制了 , 使指定的左右移动光标的键在行首或行尾可以移到前一行或者后一行
“< > 是用来调整缩进的 .
引用:
set ignorecase
译注 : 搜索时忽略大小写
引用:
set incsearch
译注 : 搜索时高亮关键词
引用:
set magic
“译注:魔法配置. 改变搜索模式使用的特殊字符.默认就是打开的,加上只是预
“防误关闭.具体的使用,请参阅正则表达式.
引用:
set noerrorbells
“译注: 关闭错误信息响铃 (鸣叫或屏幕闪烁).除了让你头疼之外,作用实在不大
引用:
set novisualbell
“译注:关闭使用可视响铃代替鸣叫.
引用:
set t_vb=
“译注:上面两条里的错误铃声,其终端代码就是t_vb.置空之后,世界就清净了.
引用:
set showmatch
“译注: 插入括号时,短暂地跳转到匹配的对应括号.超级实用的功能,可以防止少输入半个
“括号.编程时更可以查看是否匹配错误的括号
引用:
set matchtime=2
译注 : 接上一条 , 短暂跳转到匹配括号的时间
引用:
set hlsearch
“译注: 搜索出之后,高亮关键词.必设项

if has(" gui_running")
   set cursorline
   hi cursorline guibg= #333333
hi CursorColumn guibg= #33333 3
endif
" 译注 : 光标所在行自动显示指定背景色 (16 进制的 333333), 非常酷的功能 .
"
这里注意一下 , 作者的配置文件 , 这里漏写了一块 .Cursorcolumn 是设置
"
列背景色的 , 但是该属性默认是关闭的 ( cursorline 一样 ), 也就是说 ,
"
直接使用的话 , 并不起效果 , 所以这段应该写成
引用:

因为时间关系,我会一点一点的增加内容,如果原文有的内容,我没有标记的,那是我看不懂了,如果有会的兄弟,请指点我.如果我弄明白之后,我会添加进去.

 

http://man.chinaunix.net/newsoft/vi/doc/usr_toc.html#usr_toc.txt

 

你可能感兴趣的:(Linux,study)