﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-程序人生-文章分类-vim/gvim</title><link>http://www.cppblog.com/liu1061/category/5738.html</link><description>生活和工作都要充满激情,否则你无法体会到淋漓尽致的快乐与痛苦</description><language>zh-cn</language><lastBuildDate>Wed, 22 Oct 2008 14:31:59 GMT</lastBuildDate><pubDate>Wed, 22 Oct 2008 14:31:59 GMT</pubDate><ttl>60</ttl><item><title>VIM 函数跳转快键 来自FLW</title><link>http://www.cppblog.com/liu1061/articles/64700.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Wed, 22 Oct 2008 08:13:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/64700.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/64700.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/64700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/64700.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/64700.html</trackback:ping><description><![CDATA[此外还有<br>[[<br>]]<br>[]<br>再加上<br>][<br>一共是 4 个在段落（对于 C 来讲就是函数）间跳转的命令。<br><br>总结是：<br>1，相同就跳到函数的开头：（如果都是左括号或者都是右括号），不同就跳到函数的结尾：<br>&nbsp; &nbsp;&nbsp;&nbsp;{ 和 } 用来跳到函数的开头。<br>&nbsp; &nbsp;&nbsp;&nbsp;[] 和 ][ 用来跳到函数的结尾。<br>2，左右左右，&#8220;左&#8221;在前面。前后前后，&#8220;前&#8221;也在前面。因此左括号打头则表示向前，右括号打头则表示向后：<br>&nbsp; &nbsp;&nbsp;&nbsp;[[ 和 [] 用来向前跳<br>&nbsp; &nbsp;&nbsp;&nbsp;]] 和 ][ 用来向后跳<br><br>结合起来就是：<br>[[ 用来跳到光标前面的一个函数开始处。如果光标在函数体内的话，那就是所在函数的开始处。<br>][ 用来跳到光标后面的一个函数结尾处。如果光标在函数体内的话，那就是所在函数的结尾处。<br>]] 用来跳到光标后面的一个函数开始处。如果光标在函数体内的话，那就是下一个函数的开始处。<br>[] 用来跳到光标前面的一个函数结尾处。如果光标在函数体内的话，那就是上一个函数的结尾处。 <br><br>1，先想是想往前跳，还是往后跳？<br>如果是想往前，就摁 [，如果是想往后，就摁 ]，然后指头别松开。<br>2，再想是想到开始处，还是结尾处？<br>如果是开始处，就再摁一下。如果是结尾处，就摁另一个键。
<img src ="http://www.cppblog.com/liu1061/aggbug/64700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2008-10-22 16:13 <a href="http://www.cppblog.com/liu1061/articles/64700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>_vimrc (转)</title><link>http://www.cppblog.com/liu1061/articles/62349.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Sat, 20 Sep 2008 06:28:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/62349.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/62349.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/62349.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/62349.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/62349.html</trackback:ping><description><![CDATA[""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 一般设定 <br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 设定默认解码 <br>set fenc=utf-8 <br>set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 <br><br>" 不要使用vi的键盘模式，而是vim自己的 <br>set nocompatible <br><br>" history文件中需要记录的行数 <br>set history=100 <br><br>" 在处理未保存或只读文件的时候，弹出确认 <br>set confirm <br><br>" 与windows共享剪贴板 <br>set clipboard+=unnamed <br><br>" 侦测文件类型 <br>filetype on <br><br>" 载入文件类型插件 <br>filetype plugin on <br><br>" 为特定文件类型载入相关缩进文件 <br>filetype indent on <br><br>" 保存全局变量 <br>set viminfo+=! <br><br>" 带有如下符号的单词不要被换行分割 <br>set iskeyword+=_,$,@,%,#,- <br><br>" 语法高亮 <br>syntax on <br><br>" 高亮字符，让其不受100列限制 <br>:highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white <br>:match OverLength '\%101v.*' <br><br>" 状态行颜色 <br>highlight StatusLine guifg=SlateBlue guibg=Yellow <br>highlight StatusLineNC guifg=Gray guibg=White <br><br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 文件设置 <br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 不要备份文件（根据自己需要取舍） <br>set nobackup <br><br>" 不要生成swap文件，当buffer被丢弃的时候隐藏它 <br>setlocal noswapfile <br>set bufhidden=hide <br><br>" 字符间插入的像素行数目 <br>set linespace=0 <br><br>" 增强模式中的命令行自动完成操作 <br>set wildmenu <br><br>" 在状态行上显示光标所在位置的行号和列号 <br>set ruler <br>set rulerformat=%20(%2*%&lt;%f%=\ %m%r\ %3l\ %c\ %p%%%) <br><br>" 命令行（在状态行下）的高度，默认为1，这里是2 <br>set cmdheight=2 <br><br>" 使回格键（backspace）正常处理indent, eol, start等 <br>set backspace=2 <br><br>" 允许backspace和光标键跨越行边界 <br>set whichwrap+=&lt;,&gt;,h,l <br><br>" 可以在buffer的任何地方使用鼠标（类似office中在工作区双击鼠标定位） <br>set mouse=a <br>set selection=exclusive <br>set selectmode=mouse,key <br><br>" 启动的时候不显示那个援助索马里儿童的提示 <br>set shortmess=atI <br><br>" 通过使用: commands命令，告诉我们文件的哪一行被改变过 <br>set report=0 <br><br>" 不让vim发出讨厌的滴滴声 <br>set noerrorbells <br><br>" 在被分割的窗口间显示空白，便于阅读 <br>set fillchars=vert:\ ,stl:\ ,stlnc:\ <br><br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 搜索和匹配 <br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 高亮显示匹配的括号 <br>set showmatch <br><br>" 匹配括号高亮的时间（单位是十分之一秒） <br>set matchtime=5 <br><br>" 在搜索的时候忽略大小写 <br>set ignorecase <br><br>" 不要高亮被搜索的句子（phrases） <br>set nohlsearch <br><br>" 在搜索时，输入的词句的逐字符高亮（类似firefox的搜索） <br>set incsearch <br><br>" 输入:set list命令是应该显示些啥？ <br>set listchars=tab:\|\ ,trail:.,extends:&gt;,precedes:&lt;,eol:$ <br><br>" 光标移动到buffer的顶部和底部时保持3行距离 <br>set scrolloff=3 <br><br>" 不要闪烁 <br>set novisualbell <br><br>" 我的状态行显示的内容（包括文件类型和解码） <br>set statusline=%F%m%r%h%w\ [FORMAT=%{&amp;ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} <br><br>" 总是显示状态行 <br>set laststatus=2 <br><br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 文本格式和排版 <br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 自动格式化 <br>set formatoptions=tcrqn <br><br>" 继承前一行的缩进方式，特别适用于多行注释 <br>"set autoindent <br><br>" 为C程序提供自动缩进 <br>set smartindent <br><br>" 使用C样式的缩进 <br>set cindent <br><br>" 制表符为4 <br>set tabstop=4 <br><br>" 统一缩进为4 <br>set softtabstop=4 <br>set shiftwidth=4 <br><br>" 不要用空格代替制表符 <br>set noexpandtab <br><br>" 不要换行 <br>set nowrap <br><br>" 在行和段开始处使用制表符 <br>set smarttab <br><br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" CTags的设定 <br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 按照名称排序 <br>let Tlist_Sort_Type = "name" <br><br>" 在右侧显示窗口 <br>let Tlist_Use_Right_Window = 1 <br><br>" 压缩方式 <br>let Tlist_Compart_Format = 1 <br><br>" 如果只有一个buffer，kill窗口也kill掉buffer <br>let Tlist_Exist_OnlyWindow = 1 <br><br>" 不要关闭其他文件的tags <br>let Tlist_File_Fold_Auto_Close = 0 <br><br>" 不要显示折叠树 <br>let Tlist_Enable_Fold_Column = 0 <br><br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" Autocommands <br>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" <br>" 只在下列文件类型被侦测到的时候显示行号，普通文本文件不显示 <br><br>if has("autocmd") <br>&nbsp; &nbsp;autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number <br>&nbsp; &nbsp;autocmd FileType xml,html vmap &lt;C-o&gt; &lt;ESC&gt;'&lt;i&lt;!--&lt;ESC&gt;o&lt;ESC&gt;'&gt;o--&gt; <br>&nbsp; &nbsp;autocmd FileType java,c,cpp,cs vmap &lt;C-o&gt; &lt;ESC&gt;'&lt;o/*&lt;ESC&gt;'&gt;o*/ <br>&nbsp; &nbsp;autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 <br>&nbsp; &nbsp;autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim <br>&nbsp; &nbsp;autocmd BufReadPost * <br>&nbsp; &nbsp; &nbsp; \ if line("'\"") &gt; 0 &amp;&amp; line("'\"") &lt;= line("$") | <br>&nbsp; &nbsp; &nbsp; \&nbsp; &nbsp;exe "normal g`\"" | <br>&nbsp; &nbsp; &nbsp; \ endif <br>endif " has("autocmd") <br><br>" F5编译和运行C程序，F6编译和运行C++程序 <br>" 请注意，下述代码在windows下使用会报错 <br>" 需要去掉./这两个字符 <br><br>" C的编译和运行 <br>map &lt;F5&gt; :call CompileRunGcc()&lt;CR&gt; <br>func! CompileRunGcc() <br>exec "w" <br>exec "!gcc % -o %&lt;" <br>exec "! ./%&lt;" <br>endfunc <br><br>" C++的编译和运行 <br>map &lt;F6&gt; :call CompileRunGpp()&lt;CR&gt; <br>func! CompileRunGpp() <br>exec "w" <br>exec "!g++ % -o %&lt;" <br>exec "! ./%&lt;" <br>endfunc <br><br>" 能够漂亮地显示.NFO文件 <br>set encoding=utf-8 <br>function! SetFileEncodings(encodings) <br>&nbsp; &nbsp; let b:myfileencodingsbak=&amp;fileencodings <br>&nbsp; &nbsp; let &amp;fileencodings=a:encodings <br>endfunction <br>function! RestoreFileEncodings() <br>&nbsp; &nbsp; let &amp;fileencodings=b:myfileencodingsbak <br>&nbsp; &nbsp; unlet b:myfileencodingsbak <br>endfunction <br><br>au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single <br>au BufReadPost *.nfo call RestoreFileEncodings() <br><br>" 高亮显示普通txt文件（需要txt.vim脚本） <br>au BufRead,BufNewFile *&nbsp; setfiletype txt <br><br>" 用空格键来开关折叠 <br>set foldenable <br>set foldmethod=manual <br>nnoremap &lt;space&gt; @=((foldclosed(line('.')) &lt; 0) ? 'zc' : 'zo')&lt;CR&gt; <br><br>" minibufexpl插件的一般设置 <br>let g:miniBufExplMapWindowNavVim = 1 <br>let g:miniBufExplMapWindowNavArrows = 1 <br>let g:miniBufExplMapCTabSwitchBufs = 1 <br>let g:miniBufExplModSelTarget = 1 <br>
<img src ="http://www.cppblog.com/liu1061/aggbug/62349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2008-09-20 14:28 <a href="http://www.cppblog.com/liu1061/articles/62349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ctags中文手册!(转)</title><link>http://www.cppblog.com/liu1061/articles/55056.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Tue, 01 Jul 2008 08:49:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/55056.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/55056.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/55056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/55056.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/55056.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: [译序]&nbsp;&nbsp;&nbsp;&nbsp; (Easwy) First of all, I would like to thank the author of Exuberant Ctags, Darren Hiebert,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; without his he...&nbsp;&nbsp;<a href='http://www.cppblog.com/liu1061/articles/55056.html'>阅读全文</a><img src ="http://www.cppblog.com/liu1061/aggbug/55056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2008-07-01 16:49 <a href="http://www.cppblog.com/liu1061/articles/55056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最佳vim技巧</title><link>http://www.cppblog.com/liu1061/articles/54940.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Mon, 30 Jun 2008 02:34:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/54940.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/54940.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/54940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/54940.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/54940.html</trackback:ping><description><![CDATA[原作者：d.j.rayner (zzapper)<br>翻译：hmisty (<a href="mailto:
<script%20language="javascript'%20type='text/javascript'>%20<!--%20var%20prefix%20=%20'ma'%20+%20'il'%20+%20'to';%20var%20path%20=%20'hr'%20+%20'ef'%20+%20'=';%20var%20addy31103%20=%20'lqy99'%20+%20'@';%20addy31103%20=%20addy31103%20+%20'mails'%20+%20'.'%20+%20'tsinghua'%20+%20'.'%20+%20'edu'%20+%20'.'%20+%20'cn';%20document.write(%20'<a%20'%20+%20path%20+%20'/''%20+%20prefix%20+%20':'%20+%20addy31103%20+%20'/'>'%20);%20document.write(%20addy31103%20);%20document.write(%20'<//a>'%20);%20//-->%20</script>
<noscript>%20此邮件地址受spam%20bots保护，需要使用%20Javascript%20功能来查阅。</noscript>">
<script language=JavaScript type=text/javascript><!--
var prefix = '&#109;a' + 'i&#108;' + '&#116;o';
var path = 'hr' + 'ef' + '=';
var addy31103 = 'lqy99' + '&#64;';
addy31103 = addy31103 + 'm&#97;&#105;ls' + '&#46;' + 'ts&#105;ngh&#117;&#97;' + '&#46;' + '&#101;d&#117;' + '&#46;' + 'cn';
document.write( '<a ' + path + '\'' + prefix + ':' + addy31103 + '\'>' );
document.write( addy31103 );
document.write( '<\/a>' );
//--></script>
<font color=#56662d></font><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#113;&#121;&#57;&#57;&#64;&#109;&#97;&#105;&#108;&#115;&#46;&#116;&#115;&#105;&#110;&#103;&#104;&#117;&#97;&#46;&#101;&#100;&#117;&#46;&#99;&#110;"><font color=#56662d>lqy99@mails.tsinghua.edu.cn</font></a><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#113;&#121;&#57;&#57;&#64;&#109;&#97;&#105;&#108;&#115;&#46;&#116;&#115;&#105;&#110;&#103;&#104;&#117;&#97;&#46;&#101;&#100;&#117;&#46;&#99;&#110;"><font color=#56662d>lqy99@mails.tsinghua.edu.cn</font></a><noscript>
此邮件地址受spam bots保护，需要使用 Javascript 功能来查阅。
</noscript></a>)<br>2003-3-23
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">[转贴]最佳vim技巧<br>文件原网址： BBS 水木清华站 smth.org<br>--------------------------------------------------------------------------------<br>&nbsp;<br>&nbsp;<br>原作者：d.j.rayner (zzapper)<br>翻译：hmisty (<a href="mailto:
<script%20language="javascript'%20type='text/javascript'>%20<!--%20var%20prefix%20=%20'ma'%20+%20'il'%20+%20'to';%20var%20path%20=%20'hr'%20+%20'ef'%20+%20'=';%20var%20addy31103%20=%20'lqy99'%20+%20'@';%20addy31103%20=%20addy31103%20+%20'mails'%20+%20'.'%20+%20'tsinghua'%20+%20'.'%20+%20'edu'%20+%20'.'%20+%20'cn';%20document.write(%20'<a%20'%20+%20path%20+%20'/''%20+%20prefix%20+%20':'%20+%20addy31103%20+%20'/'>'%20);%20document.write(%20addy31103%20);%20document.write(%20'<//a>'%20);%20//-->%20</script>
<noscript>%20此邮件地址受spam%20bots保护，需要使用%20Javascript%20功能来查阅。</noscript>">
<script language=JavaScript type=text/javascript><!--
var prefix = '&#109;a' + 'i&#108;' + '&#116;o';
var path = 'hr' + 'ef' + '=';
var addy31103 = 'lqy99' + '&#64;';
addy31103 = addy31103 + 'm&#97;&#105;ls' + '&#46;' + 'ts&#105;ngh&#117;&#97;' + '&#46;' + '&#101;d&#117;' + '&#46;' + 'cn';
document.write( '<a ' + path + '\'' + prefix + ':' + addy31103 + '\'>' );
document.write( addy31103 );
document.write( '<\/a>' );
//--></script>
<font color=#56662d></font><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#113;&#121;&#57;&#57;&#64;&#109;&#97;&#105;&#108;&#115;&#46;&#116;&#115;&#105;&#110;&#103;&#104;&#117;&#97;&#46;&#101;&#100;&#117;&#46;&#99;&#110;"><font color=#56662d>lqy99@mails.tsinghua.edu.cn</font></a><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#113;&#121;&#57;&#57;&#64;&#109;&#97;&#105;&#108;&#115;&#46;&#116;&#115;&#105;&#110;&#103;&#104;&#117;&#97;&#46;&#101;&#100;&#117;&#46;&#99;&#110;"><font color=#56662d>lqy99@mails.tsinghua.edu.cn</font></a><noscript>
此邮件地址受spam bots保护，需要使用 Javascript 功能来查阅。
</noscript></a>)<br>2003-3-23</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 最佳vim技巧<br>----------------------------------------<br># 信息来源<br>----------------------------------------<br><a href="http://www.vim.org/" rel=nofollow><font color=#56662d>www.vim.org</font></a> : 官方站点<br>comp.editors : 新闻组<br><a href="http://www.newriders.com/books/opl/ebooks/0735710015.html" rel=nofollow><font color=#56662d>http://www.newriders.com/books/opl/ebooks/0735710015.html</font></a> : Vim书籍<br><a href="http://vimdoc.sourceforge.net/cgi-bin/vim2html2.pl" rel=nofollow><font color=#56662d>http://vimdoc.sourceforge.net/cgi-bin/vim2html2.pl</font></a> : 关于vim的可查询文档<br><a href="http://vimdoc.sourceforge.net/vimfaq.html" rel=nofollow><font color=#56662d>http://vimdoc.sourceforge.net/vimfaq.html</font></a> : VIM FAQ<br>----------------------------------------<br># 基础<br>----------------------------------------<br>* # g* g# : 寻找光标处的狭义单词(&lt;cword&gt;) (前向/后向)<br>% : 括号配对寻找 {}[]()<br>matchit.vim : 使得 % 能够配对标记&nbsp; <br>&lt;script&gt; &lt;?php 等等<br>&lt;C-N&gt;&lt;C-P&gt; : 插入模式下的单词自动完成<br>&lt;C-X&gt;&lt;C-L&gt; : 行自动完成(超级有用)<br>/&lt;C-R&gt;&lt;C-W&gt; : 把狭义单词 &lt;cword&gt; 写到 搜索命令 行<br>/&lt;C-R&gt;&lt;C-A&gt; : 把广义单词 &lt;cWORD&gt; 写到 搜索命令 行<br>:set ignorecase : 搜索时忽略大小写<br>:syntax on : 在 Perl,HTML,PHP 等中进行语法着色<br>:h regexp&lt;C-D&gt; : 按下 control-D 键即可得到包含有 regexp 的帮助主题的列表<br>: (使用TAB可以实现帮助的自动补齐)<br>----------------------------------------<br># 使更新 _vimrc 更容易<br>:nmap ,s :source $VIM/_vimrc<br># 译释：nmap 是绑定一个在normal模式下的快捷键<br>:nmap ,v :e $VIM/_vimrc<br># 译释：在normal模式下，先后按下 ,s 两个键执行_vimrc，而 ,v 则是编辑_vimrc<br>----------------------------------------<br># visual 模式 (例子是：轻松添加其它的 HTML Tags)<br>:vmap sb "zdi&lt;C-R&gt;z&lt;ESC&gt; :在visual模式下选中的文字前后分别加上和<br># 译释：vmap 是绑定一个在visual模式下的快捷键</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 译释：原理：在visual模式下，"zd 把一个选中的区域命名为z 然后删除，<br># i 进入插入模式，输入，&lt;C-R&gt;z 撤销刚才的删除,然后再写入，<br># 最后&lt;ESC&gt;返回normal模式</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 译释："z 命令创建一个选中的区域为register，并把它命名为z</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 译释：更令人开心的有：在visual模式下选中几行，然后输入 2&gt; ,<br># 则选中的行会全部缩进两个tab<br># 555,偶一开始还是用 :xx,xx s/^/\t\t/，好傻啊！</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:vmap st "zdi&lt;?= &lt;C-R&gt;z ?&gt;&lt;ESC&gt; :在visual模式下选中的文字前后分别加上&lt;?= 和 ?&gt;<br>----------------------------------------<br># 文件浏览<br>:Ex : 开启目录浏览器，注意首字母E是大写的<br>:Sex : 在一个分割的窗口中开启目录浏览器<br>:ls : 显示当前buffer的情况<br>:cd .. : 进入父目录<br>:args : 显示目前打开的文件<br>:lcd %:p:h : 更改到当前文件所在的目录<br># 译释：lcd是紧紧改变当前窗口的工作路径，% 是代表当前文件的文件名,<br># 加上 :p扩展成全名（就是带了路径），加上 :h析取出路径</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:autocmd BufEnter * lcd %:p:h : 自动更改到当前文件所在的目录<br># 译释：autocmd指定一个自动命令，BufEnter指定一个事件，* 指定事件的对象，<br># lcd %:p:h 指定一个动作<br># hehe,好象和写记叙文差不多<br>----------------------------------------<br># 缓冲区(buffer)浏览器 (第三方的一个最流行的脚本)<br># 需要下载 bufexplorer.vim ，<a href="http://www.vim.org/script.php?script_id=42" rel=nofollow><font color=#56662d>http://www.vim.org/script.php?script_id=42</font></a> 上就有<br>\be : 在缓冲区浏览器中打开缓冲区列表<br>\bs : 以分割窗口的形式打开缓冲区浏览器<br>----------------------------------------<br># 大小写转换<br>guu : 行小写<br>gUU : 行大写<br>g~~ : 行翻转（当然指大小写啦）<br># 译释： g 是大小写转换命令(greate)，u/U/~是三种转换形式(小写/大写/翻转)，<br># 最后一个重复则表示该转换是对于一行而言的</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">guw : 字大写(狭义字) 译注：建议对比iw<br>gUw : 字小写(狭义字)<br>g~w : 字翻转(狭义字)<br># 译释：最后一个w 表示该转换是对于一个字而言的，由于是在normal模式下，<br># 所以这个w 表示一个狭义字&lt;cword&gt; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">vEU : 字大写(广义字)<br>vE~ : 字翻转(广义字)<br># 译释：vE 这个指令组合会进入visual模式，然后选择一个广义字&lt;CWORD&gt;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">ggguG : 把整个文章全部小写（ft!bt!）<br>gf : 取当前光标处的广义字作为文件名，然后试图打开它！<br># 译释：为什么是广义字呢？因为这样可以方便的取到路径啊，像/var/www/html/index.htm</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">ga : 显示光标处字符的ascii,hex,oct,...晕菜的一堆转换<br>ggVGg? : 用rot13编码整个文件（晕！）<br># 译释：gg到文件首行首字符，V进入Visual-Line模式，G到文件末行首字符，<br># 这样就选中了整篇文章，然后g?就是用rot13编码整个文件啦<br># <br># 【关于rot13——谁让英文是偶数个字母啊】<br># ROT13 是一种简单的编码，它把字母分成前后两组，每组13个，编码和译码<br># 的算法相同，仅仅交换字母的这两个部分，即：[a..m] --&gt; [n..z] 和 [n..z]<br># --&gt; [a..m] 。 ROT13 用简易的手段使得信件不能直接被识别和阅<br># 读，也不会被搜索匹配程序用通常的方法直接找到。经常用于 USENET 中发表一<br># 些攻击性或令人不快的言论或有简单保密需要的文章。<br># 由于 ROT13 是自逆算法，所以，译码和编码是同一个过程。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">&lt;C-A&gt;,&lt;C-X&gt; : 增加,减少 光标处的狭义字所表示的数字<br>:（,仅仅是分割了这两个命令，不是命令的一部分）<br>: Win32的用户可能需要重新定义一下Ctrl-A，呵呵<br># 译注：good guy, 令人不得不想到perl的数字符串</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">&lt;C-R&gt;=5*5 : 插入25 (这是一个迷你计算器耶！)<br>----------------------------------------<br># 好玩的东东<br>:h 42 : 也可以访问 <a href="http://www.google.com/search?q=42" rel=nofollow><font color=#56662d>http://www.google.com/search?q=42</font></a><br>: 第一个结果就是 News. Douglas Adams 1952 - 2001. <br>: Floor 42 extends its deepest sympathies to<br>: the family, friends, and fans of Douglas Adams.<br>:h holy-grail<br>:h!<br>----------------------------------------<br># 标记和移动<br>'. : 跳到最后修改的那一行 (超级有用)(ft,怎么又是这个评价)<br>`. : 不仅跳到最后修改的那一行，还要定位到修改点<br>&lt;C-O&gt; : 依次沿着你的跳转记录向回跳 (从最近的一次开始)<br>&lt;C-I&gt; : 依次沿着你的跳转记录向前跳<br>:ju(mps) : 列出你跳转的足迹<br>:help jump-motions<br>:history : 列出历史命令记录<br>:his c : 命令行命令历史<br>:his s : 搜索命令历史<br>q/ : 搜索命令历史的窗口<br>q: : 命令行命令历史的窗口<br>:&lt;C-F&gt; : 历史命令记录的窗口<br>----------------------------------------<br># 缩写和键盘映像(原文中文件举例都用了c:/aaa/x，偶全给他改成/path/file了，哼唧)<br>:map &lt;f7&gt; :'a,'bw! /path/file<br># 译释：map是映像一个normal模式下的键<br># 这里是把F7键映像成把标记a到标记b中间的内容另存为一个文件/path/file<br># 标记(mark)的方法：把光标移动到需要标记的地方，输入m，然后输入标记名，例如a</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 引用标记的方法：'a ，即：单引号加标记名</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:map &lt;f8&gt; :r /path/file<br># 译释：把F8键映像成在当前位置插入文件/path/file的内容<br>:map &lt;f11&gt; :.w! /path/file2&lt;CR&gt;<br># 译释：.（点号）表示当前行<br># 所以F11就是把当前行存为/path/file2<br># 最后的&lt;CR&gt;表示一个回车<br>:map &lt;f12&gt; :r /path/file2&lt;CR&gt;<br>:ab php : 列出php表示的缩写<br># 译释：定义一个缩写使用：:iab hm hmisty<br># 一个有趣的现象是，它列出的会是php和它的前子串开头的缩写<br># 例如，有这么几个缩写：<br># h =&gt; hmisty1 , hm =&gt; hmisty2 , hmi =&gt; hmisty3, m =&gt; hmisty4<br># 那么使用 :ab hm会显示这么几个缩写：hm 和 h<br># 而不是你想象中的 hm 和 hmi</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:map , : 列出以逗号开始的键盘映像<br># 译释：一般而言，我们称这些逗号开始的组合键为「逗号命令」<br># 不过hmisty更喜欢用;构成「分号命令」<br># 而且不是用map,而是用imap<br># 因为偶懒么，懒得按&lt;Esc&gt;,所以直接在insert模式下就执行命令了<br># 为什么用分号呢？因为我最常用它写程序啊<br># perl/C/C++/object pascal/java，都是用分号结束一个语句<br># 我们一般很少在分号后面连续写其它字符<br># 所以用「分号＋其它键」就很少会在输入的时候造成冲突</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 在键盘映像中常用的表示<br>&lt;CR&gt; : 回车<br>&lt;ESC&gt; : Esc<br>&lt;LEADER&gt; : 转义符号 \<br>&lt;BAR&gt; : 管道符号 |<br>----------------------------------------<br># 列出寄存器(Registers)<br>:reg : 显示所有当前的registers<br>"1p : "表示引用register，1表示一个名字叫做1的register，<br>: p就是粘贴（paste）命令<br># 译释："也用来定义register<br># 先输入 ",表示定义register<br># 然后输入名字，如0~9,a~z<br># 然后执行删除或复制命令，如dd或y，<br># 或者是visual模式下的d(删除选中的部分)或y(复制选中的部分)<br># 则被删除或复制的部分就被存入了这个命名的register<br>#<br># 观察：一个特殊的register, "" ，里面存储了一个匿名的删除/复制<br># 在你执行dd或y的时候，被作用的部分被存到了""中<br># 这些和perl是多么像啊<br>----------------------------------------<br># Useful trick<br>"<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#121;&#121;&#64;&#97;"><font color=#56662d>ayy@a</font></a> : 把当前行作为一个Vim命令来执行<br># 译释："ayy 是定义当前行到register a，然后@a是执行register a中存储的指令<br># yy: 复制一行<br># 10yy: 复制从此向下的10行</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">yy@" : 用上面所提到的那个匿名register<br>----------------------------------------<br># 从其它程序获取输出 (需要外部程序)<br>:r!ls.exe : 读取ls的输出到当前位置<br>!!date : 读取date的输出 (但是会替换当前行的内容)<br># 译释：其实你输入了!!后，vim就自动转换到 :.! 等待你继续输入</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 使用外部程序sort进行排序(sort是Unix标准命令，ls,date也是)<br>:%!sort -u : 使用sort程序排序整个文件（用结果重写文件）<br># 译释：%表示整个文件的所有行<br># !sort表示执行外部命令sort<br># -u是sort的参数，man sort看看，这个参数的意义是合并相同的行<br># u就是unique,如果两行内容相同，则结果中只保留一行的说</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:'a,'b!sort -u : 对mark a 到mark b中间的内容进行排序<br>!1} sort -u : 排序当前段落 (只能在normal模式下使用!!)<br># 译释：!表示使用filter，1}表示filter的对象是从当前行开始向后数一段<br># 段落指到空行处结束，不包括空行<br># 其实你一旦输入 !1}，vim就自动计算当前段落应该到那一行(eg.+5)，然后生成<br># :.,.+5! 等待之后输入sort -u，回车，完成操作<br># .表示当前行，.+5当然就是当前行向后数5行<br>----------------------------------------<br># 多文檔操作 (基础)<br># 译注：用 :ls! 可以显示出当前所有的buffer<br>:bn : 跳转到下一个buffer<br>:bp : 跳转到上一个buffer<br>:wn : 存盘当前文件并跳转到下一个(又是「超级......」,ft!)<br>:wp : 存盘当前文件并跳转到上一个<br>:bd : 把这个文件从buffer列表中做掉<br>:bun : 卸掉buffer (关闭这个buffer的窗口但是不把它从列表中做掉)<br>:badd file.c : 把文件file.c添加到buffer列表<br>:b 3 : 跳到第3个buffer<br>:b main : 跳到一个名字中包含main的buffer,例如main.c <br>: (ultra，这个怎么翻译？:()<br>:sav php.html : 把当前文件存为php.html并打开php.html<br>:sav! %&lt;.bak : 换一个后缀保存<br>:e! : 返回到修改之前的文件(修改之后没有存盘)<br>:w /path/% : 把文件存到一个地儿<br>:e # : 编辑标记为#的buffer(这个buffer必须含有一个可编辑的文件)<br>: 用ls命令就能看到哪一个buffer有#<br>: %a表示当前正在编辑的buffer<br>: u 表示不能编辑或者已经被做掉的buffer<br>:e #3 : 编辑编号为3的buffer(这个buffer必须含有一个可编辑的文件)<br>:rew : 回到第一个可编辑的文件<br>:brew : 回到第一个buffer<br>:sp fred.txt : 在一个水平分割的窗口中打开文件fred.txt<br># 译注：vs fred.txt可以实现垂直分割<br>:sball : 把当前所有含有可编辑文件的buffer显示到一个分割窗口中<br>: (偶该考虑把super翻译成 高级指令 了,ft)<br>:map &lt;F5&gt; :ls&lt;CR&gt;:e # : 在normal模式下按F5键，则会显示所有含有一个</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">: 可编辑文件的buffer，然后提示你输入buffer的序号，<br>: 输入后回车，则编辑这个buffer<br># 译注：这是一个键盘绑定</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:set hidden : 允许不保存buffer而切换buffer (w/o=without)<br>----------------------------------------<br># 在分割窗口中快速切换<br>:map &lt;C-J&gt; &lt;C-W&gt;j&lt;C-W&gt;_<br># 译注：原文此处有误，前面应该加上冒号<br># 这是一个键盘绑定，把Ctrl-J定义成切换到下一个窗口并最大化<br>:map &lt;C-K&gt; &lt;C-W&gt;k&lt;C-W&gt;_<br>----------------------------------------<br># 命令录制 (最佳技巧，ft)<br>qq #录制到q<br>.. #输入一系列复杂的指令<br>q #再次按q停止录制<br>@q #执行q中存储的指令<br>@@ #重复执行<br># 编辑register/录制<br>"ap #把register a中的内容贴到当前位置<br>.. #现在你可以修改它了<br>"add#删除之，重新存入register a <br>@a #执行register a中的指令<br>----------------------------------------<br># _vimrc基础<br>:set incsearch : 实时匹配你输入的内容<br>:set wildignore=*.o,*.obj,*.bak,*.exe : tab键的自动完成现在会忽略这些<br>:set shiftwidth=4 : 现在自动缩进将是4个字符<br># 译注：一个tab位通常是8个字符<br># 所以，我们还要设定 :set tabstop=4，这样，所有的缩进都是4字符了<br># emacs默认就是4字符缩进吧？<br>:set vb t_vb=". : 沉默方式(不要叫beep！)<br>----------------------------------------<br># 加载windows iexplorer来浏览(我想这只有在windows下用gvim才能用到)<br>:nmap ,f :update&lt;CR&gt;:silent !start c:\progra~1\intern~1\iexplore.exe <a href="http://ipng.besti.edu.cn/file://%:p/"><font color=#56662d>file://%:p</font></a><br># 译释：nmap是做一个normal模式下的键盘绑定<br># 这里绑定了一个逗号命令 ,f<br># :update是写这个文件，与:w不同，它只有当文件被修改了的时候才写<br># :silent别让弹出窗口报告执行结果<br># !...后面就是执行windows命令了。呵呵，去问bill gates什么意思吧。<br># 不过偶用gvim 6.1试过了，好用！</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:nmap ,i :update&lt;CR&gt;: !start c:\progra~1\intern~1\iexplore.exe &lt;cWORD&gt;&lt;CR&gt;<br>----------------------------------------<br># 用VIM编辑ftp文件<br>:cmap ,r :Nread <a href="http://ipng.besti.edu.cn/ftp://209.51.134.122/public_html/index.html"><font color=#56662d>ftp://209.51.134.122/public_html/index.html</font></a><br>:cmap ,w :Nwrite <a href="http://ipng.besti.edu.cn/ftp://209.51.134.122/public_html/index.html"><font color=#56662d>ftp://209.51.134.122/public_html/index.html</font></a><br># 译注：原文丢失了开头的冒号<br># cmap是命令(command)模式绑定</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">gvim <a href="http://ipng.besti.edu.cn/ftp://209.51.134.122/public_html/index.html"><font color=#56662d>ftp://209.51.134.122/public_html/index.html</font></a><br># 这一句就是开始编辑一个ftp远程的文件，ft<br>----------------------------------------<br># 附加到一个register (就是用大写的register名字啦！)<br>"a5yy #复制5行到a中<br>10j #下移10行<br>"A5yy #再添加5行到a中<br>----------------------------------------<br>[I : 显示光标处的狭义字可以匹配的行(高级指令)<br># 译注：# 可以全文查找与光标处的狭义字相匹配的字，<br># 这在查找函数原型和实现，或者变量使用的时候很有用<br>----------------------------------------<br># 常规缩进<br>:'a,'b&gt;&gt;<br># 译释：把mark a到mark b之间的内容进行两次缩进</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 在visual模式下缩进 (无限可重复)<br>:vnoremap &lt; &lt;gv<br># 译释：:vnoremap 重定义了visual模式下 &lt; 符号的含义<br># 把它定义成 &lt;gv<br># 即：先&lt;向外缩进，然后gv重新选择上一次选择了的区域<br># 这样在visual模式下就可以实现连续按&lt;而连续缩进了<br>:vnoremap &gt; &gt;gv<br># 同里，内缩<br>----------------------------------------<br># 查找（译注：建议先学习正则表达式）<br># 译注：查找命令不用进入:命令模式，直接按/就可以了<br># 如果没有修饰，可以不要右边的/<br># 和smth bbs差不多啦，呵呵<br>/joe/e : 光标停留在匹配单词最后一个字母处<br>/joe/e+1 : 光标停留在匹配单词最后一个字母的下一个字母处<br>/joe/s : 光标停留在匹配单词第一个字母处<br>/^joe.*fred.*bill/ : ft,标准正则表达式<br>/^[A-J]\+/ : 找一个以A~J中一个字母重复两次或以上开头的行<br>/forum\(\_.\)*pent : 多行匹配<br>/fred\_s*joe/i : 中间可以有任何空白，包括换行符\n<br># 译注：这个和perl不太一样的哦<br>/fred\|joe : 匹配FRED或JOE<br>/\&lt;fred\&gt;/i : 匹配fred,fred必须是一个独立的单词，而不是子串<br># 译注：这和perl也不太一样，perl是用\b做单词定界符的<br>/\&lt;\d\d\d\d\&gt; : 匹配4个数字<br>\&lt;\d\{4}\&gt; : 也是匹配4个数字<br># 在visual模式下查找<br>:vmap g/ y/&lt;C-R&gt;"&lt;CR&gt; : 匹配选中的高亮文字<br># 译释：vmap是在visual模式下的键盘映像<br># 映像了g/这个命令组合<br># y 把选中的高亮文字写入匿名register "<br># / 打开搜索模式<br># &lt;C-R&gt; 准备粘贴register<br># " 粘贴了""中的内容<br># &lt;CR&gt; 回车，执行</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:vmap &lt;silent&gt; g/ y/&lt;C-R&gt;=escape(@", '\\/.*$^~[]')&lt;CR&gt;&lt;CR&gt; : with spec chars<br># 译释：@#$&amp;^*@#%&amp;*#$@!</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 跨行匹配，\_ 表示允许匹配换行符，或者说，允许匹配新行<br># 译注：小心，和perl不一样<br>/&lt;!--\_p\{-}--&gt; : 匹配多行注释<br>/fred\_s*joe/i : 似乎上面有了，ft<br>/bugs\(\_.\)*bunny : 中间可以有无数东西<br>:h \_ : 看看关于 \_ 的帮助</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 查找当前光标位置所在子例程/函数(subroutine/function)的声明<br>:nmap gx yiw/^\(sub\&lt;bar&gt;function\)\s\+&lt;C-R&gt;"&lt;CR&gt;<br># 译释：nmap 做一个normal模式下的键盘绑定<br># y 进入复制状态，后面需要一个motion<br># 接着就用 iw 指出了这个motion,是inner word<br># inner word也是狭义字&lt;cword&gt;，但是和 w 不同<br># w 是从光标位置开始向后看<br># 而inner word总是把光标移到第一个字母，从而总能得到一个完整的狭义字<br># 试一试 gUw 和 gUiw 就知道区别了，呵呵。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 在多个文档中搜索<br>:bufdo /searchstr</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:argdo /searchstr<br>----------------------------------------<br># 替换<br># 译注：替换命令需要先进入:命令模式</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:%s/fred/joe/igc : 一个常见的替换命令，修饰符igc和perl中一样意思<br>:%s/\r//g : 删除DOS方式的回车^M<br>:%s= *$== : 删除行尾空白<br>:'a,'bg/fred/s/dick/joe/igc : 非常有用！（ft,又来了！）<br># 译释：'a,'b指定一个范围：mark a ~ mark b<br># g//用一个正则表达式指出了进行操作的行必须可以被fred匹配<br># 看后面，g//是一个全局显示命令<br># s/dick/joe/igc则对于这些满足条件的行进行替换</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 列复制<br># 译注：@#%&amp;^#*^%#$!<br>:%s= [^ ]\+$=&amp;&amp;= : 复制最后一列<br>:%s= \f\+$=&amp;&amp;= : 一样的功能<br>:%s= \S\+$=&amp;&amp; : ft,还是一样<br># 反向引用，或称记忆<br>:s/\(.*\):\(.*\)/\2 : \1/ : 颠倒用:分割的两个字段<br>:%s/^\(.*\)\n\1/\1$/ : 删除重复行<br># 非贪婪匹配，\{-}<br>:%s/^.\{-}pdf/new.pdf/ : 只是删除第一个pdf<br># 跨越可能的多行<br>:%s/&lt;!--\_.\{-}--&gt;// : 又是删除多行注释（咦？为什么要说「又」呢？）<br>:help /\{-} : 看看关于 非贪婪数量符 的帮助<br>:s/fred/&lt;c-r&gt;a/g : 替换fred成register a中的内容，呵呵<br># 写在一行里的复杂命令<br>:%s/\f\+\.gif\&gt;/\r&amp;\r/g | v/\.gif$/d | %s/gif/jpg/<br># 译注：就是用 | 管道啦</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 或者<br>:%s/suck\|buck/loopy/gc : 或者(或者需要\，ft！，|不是或者)<br># ft, \不就是转义了么！这个和perl真是不同了！</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 调用VIM函数<br>:s/__date__/\=strftime("%c")/ : 插入时间串</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 处理列，替换所有在第三列中的str1<br>:%s:\(\(\w\+\s\+\)\{2}\)str1:\1str2:</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 交换第一列和最后一列 (共4列)<br>:%s:\(\w\+\)\(.*\s\+\)\(\w\+\)$:\3\2\1:</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># filter all form elements into paste register<br># 把所有的form元素（就是html里面的form啦）放到register里？<br># ft, 头疼，不解释了<br>:redir @*|sil exec 'g#&lt;\(input\|select\|textarea\|/\=form\)\&gt;#p'|redir END<br>:nmap ,z :redir @*&lt;Bar&gt;sil exec <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#34;&#103;&#64;&#60;&#47;&#40;&#105;&#110;&#112;&#117;&#116;&#47;&#60;&#98;&#97;&#114;&#62;&#115;&#101;&#108;&#101;&#99;&#116;&#47;&#60;&#98;&#97;&#114;&#62;&#116;&#101;&#120;&#116;&#97;&#114;&#101;&#97;&#47;&#60;&#98;&#97;&#114;&#62;&#47;&#47;&#61;&#102;&#111;"><font color=#56662d>'g@&lt;\(input\&lt;Bar&gt;select\&lt;Bar&gt;textarea\&lt;Bar&gt;/\=fo</font></a><br># 上面这一行不能完全显示，最好Copy Article下去看</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">----------------------------------------<br># 全局(global)显示命令，就是用 :g＋正则表达式<br># 译释： :g/{pattern}/{cmd} 就是全局找到匹配的行<br># 然后对这些行执行命令{cmd}<br>:g/\&lt;fred\&gt;/ : 显示所有能够为单词fred所匹配的行<br>:g/&lt;pattern&gt;/z#.5 : 显示内容，还有行号，呵呵<br>:g/&lt;pattern&gt;/z#.5|echo "==========" : 漂亮的显示，ft!</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 全局命令 (其它)<br>:g/^\s*$/d : 删除所有空行<br>:g!/^dd/d : 删除不含字符串'dd'的行<br>:v/^dd/d : 同上<br># 译释：v == g!，就是不匹配！<br>:g/fred/,/joe/d : not line based (very powerfull)<br>:v/./.,/./-1join : 压缩空行<br>:g/^$/,/./-j : 压缩空行<br>:g/&lt;input\|&lt;form/p : 或者 要用\|<br>:g/^/pu _ : 把文中空行扩增一倍 (pu = put)<br>: 即：原来两行间有一个空行，现在变成2个<br>:g/^/m0 : 按行翻转文章 (m = move)<br>:g/fred/t$ : 拷贝行，从fred到文件末尾(EOF)<br>:%norm jdd : 隔行删除<br># 译释：% 指明是对所有行进行操作<br># norm指出后面是normal模式的指令<br># j是下移一行，dd是删除行</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># incrementing numbers<br>:.,$g/^\d/exe "norm! \&lt;c-a&gt;" : 增加在BOL(beginning of line)处的数字<br># 译注：.,$ 指明命令从当前行执行到最后一行<br># 如果没有 .,$ 限定范围，那么g//就会对整个文件进行操作<br># exe 是执行后面的命令组合</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:.,$g/^\d/exe "norm \&lt;c-p&gt;" : Win32下必须重定义Ctrl-A</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 保存全局命令的结果 (注意必须使用添加模式)<br>:g/fred/y A : 添加所有为fred所匹配的行到register a<br>:'a,'b g/^Error/ . w &gt;&gt; errors.txt</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 复制每一行，然后在复制出来的每一行两侧加上一个 print '复制出来的内容'<br>:g/./yank|put|-1s/'/"/g|s/.*/Print '&amp;'/<br>----------------------------------------<br># 全局命令和替换命令联姻 (强大的编辑能力)<br>:'a,'bg/fred/s/joe/susan/gic : 可以使用反向引用来匹配<br>:g/fred/,/joe/s/fred/joe/gic : non-line based (ultra)<br>----------------------------------------<br># 先找fred，然后找joe，然后<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#35;&#36;&#94;&#36;&#37;&#94;&#35;&#36;&#37;&#94;&#64;&#37;&#94;&#37;&#38;&#97;&#109;&#112;&#59;"><font color=#56662d>#$^$%^#$%^@%^%&amp;%</font></a>^*!<br>:/fred/;/joe/-2,/sid/+3s/sally/alley/gIC<br>----------------------------------------<br># 复位向到register * 和 粘贴register *<br>:redir @* : 复位向命令的输出结果（最下方命令行上的结果）<br>: 到register * (ft,* 代表0~1,a~z,..)<br>:redir END : 结束复位向<br># 处理粘贴<br>"*yy : 上面讲过了，就是复制到register *中<br>"*p : 然后贴出来<br>----------------------------------------<br>:redir &gt;&gt; out.txt : 复位向到一个文件<br>----------------------------------------<br># 重新格式化文本<br>gq&lt;CR&gt;<br>gqap (a是motion p是段落(visual模式))<br>ggVGgq 重新格式化整个文章<br>----------------------------------------<br># 对多个文档实施命令<br>:argdo %s/foo/bar/ : 对所有:args列表中的文档执行命令<br>:bufdo %s/foo/bar/<br>:windo %s/foo/bar/<br>:argdo exe '%!sort'|w! : 使用外部命令<br>----------------------------------------<br># 命令行的一些好玩的东东<br>gvim -h : 激活的时候激活帮助(Win32)<br>vi -h 或 vim -h : 这个是unix下用<br>ls | gvim - : 编辑一个数据流！<br>gvim -o file1 file2 : 以分割窗口打开两个文件</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 指出打开之后执行的命令<br>gvim.exe -c "/main" joe.c : 打开joe.c，然后跳转到'main'</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 对一个文件执行多个命令<br>vim -c "%s/ABC/DEF/ge | update" file1.c</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 对一组文件执行多个命令<br>vim -c "argdo %s/ABC/DEF/ge | update" *.c</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 自动编辑文件 (编辑命令序列Ex commands已经包含在convert.vim中了)<br>vim -s "convert.vim" file.c</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 不要加载.vimrc和任何plugins (激活一个干净的VIM)<br>gvim -u NONE -U NONE -N<br>----------------------------------------<br># GVIM 不同的地方<br>gvim -d file1 file2 : vimdiff (比较不同)<br>dp : 把光标处的不同放到另一个文件<br>do : 在光标处从另一个文件取得不同<br>----------------------------------------<br># Vim陷阱<br># 在vim的正则表达式中， + 和 | 都必须加转义符 \<br># 小心，这和perl不一样！<br>/fred\+/ : 匹配fred或freddy但是不匹配free<br>----------------------------------------<br># \v ，或叫做very magic (通常都是这么叫)可以取消转义符<br>/codes\(\n\|\s\)*where : 普通的正则表达式<br>/\vcodes(\n|\s)*where : very magic，| 不用加 \ 了！</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">----------------------------------------<br># 把东西送到命令行/搜索行 (SUPER:偶不再翻译这种叹词了)<br>&lt;C-R&gt;&lt;C-W&gt; : 送一个狭义词<br>&lt;C-R&gt;&lt;C-A&gt; : 送一个广义词<br>&lt;C-R&gt;- : 送一个小型删除寄存器register<br>&lt;C-R&gt;[0-9a-z] : 送一个命名寄存器register<br>&lt;C-R&gt;% : 送文件名过去 (#也行)<br>----------------------------------------<br># 操作寄存器<br>:let @a=@_ : 清除register a<br>:let @*=@a : 寄存器赋值<br>:map &lt;f11&gt; "qyy:let @q=@q."zzz"<br># 译注：猜猜这个无聊的绑定是什么意思？<br>----------------------------------------<br># 关于帮助的帮助<br>:h quickref : 翻到VIM Quick Reference页(有用！)<br>:h tips : Vim自己的tips<br>:h visual&lt;C-D&gt;&lt;tab&gt; : 得到一个关于visual关键词的帮助列表<br>: 然后用tab键去选择<br>:h ctrl&lt;C-D&gt; : 显示所有关于Ctrl的帮助<br>:h :r : :ex冒号命令<br>:h CTRL-R : 普通模式命令<br>:h \r : \r在正则表达式中是什么意思呢？<br>:h i_CTRL-R : insert模式下的Ctrl-R<br>:h c_CTRL-R : 命令行(command-line)模式下的Ctrl-R<br>:h v_CTRL-V : visual模式下的Ctrl-V<br>:h tutor : VIM 指南<br>gvim -h : 关于 VIM 命令的帮助<br>vi/vim -h<br>&lt;C-S&gt;T : Control Shift T go backwards in help<br>: 偶不清楚有什么用:(<br>----------------------------------------<br># 选项设置在哪里？<br>:scriptnames : 列出所有加载的 plugins, _vimrcs<br>:verbose set history : 显示history的值并指出设置文件的位置<br>----------------------------------------<br># 制作你自己的VIM帮助<br>:helptags /vim/vim61/doc : 重建 /doc 中所有的 *.txt 帮助文件<br>:help add-local-help<br>----------------------------------------<br># 用外部程序来运行程序 (例如 perl :)<br>map &lt;f2&gt; :w&lt;CR&gt;:!perl -c %&lt;CR&gt;<br># 译释：:w&lt;CR&gt;写文件<br># :!perl -c %&lt;CR&gt;用perl来运行当前文件<br># 当前文件必须有文件名！<br>----------------------------------------<br># 插入DOS换行符<br>:%s/nubian/&lt;C-V&gt;&lt;C-M&gt;&amp;/g : Ctrl-V是一种转义，它说要解释&lt;C-M&gt;<br>:%s/nubian/&lt;C-Q&gt;&lt;C-M&gt;&amp;/g : 对于Win32应该这样<br>:%s/nubian/^M&amp;/g : 你看到的^M是一个字符<br>:%s/nubian/\r&amp;/g : 更好的形式<br>----------------------------------------<br># 把最后一个命令贴到当前位置<br>i&lt;c-r&gt;:<br># 把最后一个搜索指令贴到当前位置<br>i&lt;c-r&gt;/<br># 译释：i是进入insert模式，<br># Ctrl-r是开启插入模式下register的引用<br># :和/分别引用了两个register的内容<br>----------------------------------------<br># 更多的完成功能<br>&lt;C-X&gt;&lt;C-F&gt; :插入当前目录下的一个文件名到当前位置<br># 在insert模式下使用<br># 然后用 Ctrl-P/Ctrl-N 翻页<br>----------------------------------------<br># 替换一个visual区域<br># 选择一个区域，然后输入 :s/Emacs/Vim/ 等等，vim会自动进入:模式<br>:'&lt;,'&gt;s/Emacs/Vim/g : 前面的'&lt;,'&gt;是vim自动添加的<br>----------------------------------------<br># 在文件中插入行号(不是显示行号，是插入！)<br>:g/^/exec "s/^/".strpart(line(".")." ", 0, 4)<br>----------------------------------------<br># 用VIM的方式来编号行<br>:set number :显示行号<br>:set nonu :取消显示<br>:%s/^/\=strpart(line('.')." ",0,&amp;ts)</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">#从任意行开始编号(需要perl，嘿嘿)<br>:'a,'b!perl -pne 'BEGIN{$a=223} substr($_,2,0)=$a++'<br>#似乎有点小问题，你试试看:)</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">qqmnYP`n^Aq : 记录到q 然后用 @q 重复<br>#似乎不能工作，你试试看:)</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 递增已存在数字到文件末<br>:.,$g/^\d/exe "normal! \&lt;c-a&gt;"</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"># 高级递增，看：<br><a href="http://vim.sourceforge.net/tip_view.php?tip_id=150" rel=nofollow><font color=#56662d>http://vim.sourceforge.net/tip_view.php?tip_id=150</font></a><br>----------------------------------------<br># 高级递增 ("真的很有用"，ft)<br>" 把下面几句放到 _vimrc #vimrc脚本用 " 做行注释符<br>let g:I=0<br>function! INC(increment)<br>let g:I =g:I + a:increment<br>return g:I<br>endfunction<br>" 例如从mark a 到mark b 递增，从223开始，步长为5<br>:let I=223<br>:'a,'bs/$/\=INC(5)/<br>" (原文：create a map for INC) <br>" 但是cab是清楚命令行缩写啊？怎么回事？<br>cab viminc :let I=223 \| 'a,'bs/$/\=INC(5)/<br>----------------------------------------<br># 加密(小心使用，不要忘了密码)</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:X : 然后vim会提示你输入密码<br>:h :X<br>----------------------------------------<br># modeline (make a file readonly etc) must be in first/last 5 lines<br># 不会用，不翻了<br>// vim:noai:ts=2:sw=4:readonly:<br>:h modeline<br>----------------------------------------<br># Creating your own GUI Toolbar entry<br># 对于text模式下的vim没用，不翻了<br>amenu Modeline.Insert\ a\ VIM\ modeline &lt;Esc&gt;&lt;Esc&gt;ggOvim:ff=unix ts=4 ss=4&lt;CR&gt;v<br>----------------------------------------<br># 一个保存当前光标下的狭义字到一个文件的函数<br>function! SaveWord() "这里用!是强制覆盖以前的定义<br>normal yiw<br>exe ':!echo <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#34;&#46;&#64;&#48;&#46;&#39;"><font color=#56662d>'.@0.'</font></a> &gt;&gt; word.txt'<br>endfunction<br>map ,p :call SaveWord() #使用该函数的一个例子<br>----------------------------------------<br># 删除重复行的函数<br>function! Del()<br>if getline(".") == getline(line(".") - 1)<br>norm dd<br>endif<br>endfunction</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new">:g/^/ call Del() #使用该函数的一个例子<br>----------------------------------------<br># 双字节编码 (non alpha-numerics)<br>:digraphs : 显示编码表<br>:h dig : 帮助<br>i&lt;C-K&gt;e' : 输入 &#233;<br>i&lt;C-V&gt;233 : 输入 &#233; (Unix)<br>i&lt;C-Q&gt;233 : 输入 &#233; (Win32)<br>ga : 查看字符的hex值<br>----------------------------------------<br># 文件名自动完成 (例如 main_c.c)<br>:e main_&lt;tab&gt; : tab 键完成<br>gf : 打开光标处广义字命名的文件 (normal模式)<br>main_&lt;C-X&gt;&lt;C-F&gt; : 文件名自动完成(insert模式)<br>----------------------------------------<br># Vim复杂使用<br># 交换两个单词<br>:%s/\&lt;\(on\|off\)\&gt;/\=strpart("offon", 3 * ("off" == submatch(0)), 3)/g<br>----------------------------------------<br># 把text文件转换成html文件(oh,ft)<br>:runtime! syntax/2html.vim : 转换 txt 成 html<br>:h 2html : 看看帮助<br>----------------------------------------<br># VIM 有一个内部自带的 grep 命令<br>:grep some_keyword *.c : 得到一个包含some_keyword的c文件名列表<br>:cn : 去下一个出现的位置<br>----------------------------------------<br># 强制无后缀文件的语法着色方式 .pl<br>:set syntax=perl<br># 取消语法着色<br>:set syntax off<br># 改变色彩主题 (在~vim/vim??/colors中的任何文件)<br>:colorscheme blue<br>----------------------------------------<br>:set noma (non modifiable) : 防止修改<br>:set ro (Read Only) : 只读保护<br>----------------------------------------<br># Sessions (打开一系列文件)<br>gvim file1.c file2.c lib/lib.h lib/lib2.h :在"session"中加载一系列文件<br>:mksession : 生成一个Session文件 (默认是Session.vim)<br>:q<br>gvim -S Session.vim : 重新读取一个session，也就读取了所有文件,ft<br>----------------------------------------<br># 标记(tags) (跳转到subroutines/functions)<br>taglist.vim : 最流行的插件<br>:Tlist : 显示Tags (functions的列表)<br>&lt;C-]&gt; : 跳转到光标处的function<br>: 这个键 Ctrl-] 和vim帮助中是一样的<br>----------------------------------------<br># Just Another Vim Hacker JAVH<br># Juat Another Perl Hacker JAPH，嘿嘿<br>vim -c ":%s/^/WhfgTNabgureRIvzSUnpxre/|:%s/[R-T]/ /Ig|:normal ggVGg?"<br># 译释：呵呵，谁来解释一下吧！<br># 其实不过是在激活vim的时候执行了一个命令<br># 先写入了 Just Another Vim Hacker 的rot13编码<br># 然后再译码<br>----------------------------------------<br>终于翻完了，呵呵。好累啊！<br>__END__</p>
<img src ="http://www.cppblog.com/liu1061/aggbug/54940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2008-06-30 10:34 <a href="http://www.cppblog.com/liu1061/articles/54940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim+Ctags＋taglist+omnicppcomplete＋supertab(插件)</title><link>http://www.cppblog.com/liu1061/articles/54925.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Sun, 29 Jun 2008 14:37:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/54925.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/54925.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/54925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/54925.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/54925.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial>Gvim C++IDE for windows XP (Ubuntu)<br>GVim v7（主程序）+Ctags＋taglist+omnicppcomplete＋supertab(插件)</font></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial>一，安装<br>－1,omnicppcomplete 的安装：<br>&nbsp;&nbsp; －－1,下载omnicppcomplete,解压可得到三个文件夹（autoload,after,doc）,分别复制到gvim的安装目录下的vimfiles文件夹中(ubuntu中为~/.vim)。这样omnicppcomplete就安装完成了。<br>－2,ctags 安装<br>&nbsp;&nbsp; －－1,下载Ctags最新win32版本（当前是5.6）,解压至某一目录（如c:\ctags56）,并在系统环境变量中把添加ctags的安装路径（如path=c:\ctags56），至此ctags也安装完成了(ubuntu 中直接 sudo apt-get install ctags)。<br>－3,taglist 安装<br>&nbsp;&nbsp; －－1,下载taglist插件，解压得到两个文件夹（doc，plugin），把里面的文件分别复制到vim安装目录下对应的文件夹中(ubuntu中为~/.vim)。<br>－4,supertab插件安装<br>&nbsp;&nbsp; －－1,下载supertab插件，复制supertab.vim到vim安装目录的plugin目录下，使用时只要直接按tab键，就可以直接进行补全。</font></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial>二，配置<br>－1,下载本文的附件，解压可得到两个文件（stltags,cpptags;这两个文件是根据mingw5.3和c++ 标准库stl3.3制作的）,复制到某目录(C:\ctags56\)，然后在_vimrc(ubuntu下为~/.gvimrc或/usr/share/vim/gvimrc)中添加下列代码，使用时用TAB键选择提示的代码：</font></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial>-----------------------------<br>"setting for omnicppcomplete<br>set nocp<br>filetype plugin on</font></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial>"下面的设置用于当用户预先声明namespace时也能自动补全代码（如使用using std::string） <br>let OmniCpp_DefaultNamespaces = ["std"] </font></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial>" 设置代码提示窗口的颜色（默认为粉红色，如附图1,下面的设置的效果如附图2） <br>highlight Pmenu ctermbg=13 guibg=LightGray <br>highlight PmenuSel ctermbg=7 guibg=DarkBlue guifg=White <br>highlight PmenuSbar ctermbg=7 guibg=DarkGray <br>highlight PmenuThumb guibg=Black</font></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial>"设置tags目录，可以根据自己的设置自动调整<br>set tags+=C:\ctags56\stltags<br>set tags+=C:\ctags56\cpptags<br>------------------------------</font></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><br></p>
<font face=Arial>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier new"><font face=Arial></font></p>
－2,制作其它库文件的tags文件<br>&nbsp;&nbsp;&nbsp; －－1,在命令行模式下进入库文件的目录（一般为include和src），执行ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ，然后在该库文件目录下即可得到一个名为tags的文件，更名后复制到自己的tags目录下，并在_vimrc中设置 </font>
<img src ="http://www.cppblog.com/liu1061/aggbug/54925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2008-06-29 22:37 <a href="http://www.cppblog.com/liu1061/articles/54925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim\gvim `s plugin</title><link>http://www.cppblog.com/liu1061/articles/39961.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Sat, 29 Dec 2007 14:12:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/39961.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/39961.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/39961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/39961.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/39961.html</trackback:ping><description><![CDATA[tabBar.vim<br>这个插件实现了类似UltraEdit中的标签页的功能，而且能通过Alt-&lt;n&gt;来切换, <br>安装：<br>拷贝文件到[你的gvim的安装目录]\vimfiles\plugin\中即可！<br>下载：<br><a href="http://www.vim.org/scripts/script.php?script_id=1338"><font color=#1d58d1>http://www.vim.org/scripts/script.php?script_id=1338</font></a>
<p><br>word_complete.vim<br>Insert模式下在输入的时候自动补全单词，如果补全正确可以按Tab键接受，否则可以不管它继续输入或者按</p>
<p>Ctrl-n，Ctrl-p切换补全。 注意是输入三个字符后才开始补全。<br>安装：<br>1. 拷贝文件到[你的gvim的安装目录]\vimfiles\plugin\<br>2. 激活补全模式<br>:call DoWordComplete() <br>3. 取消补全模式<br>:call EndWordComplete()<br>4. 自动加载补全模式<br>在.vimrc或_vimrc文件中加入<br>:autocmd&nbsp; BufEnter&nbsp; *&nbsp; call&nbsp; DoWordComplete()<br>下载：<br><a href="http://www.vim.org/scripts/script.php?script_id=73"><font color=#1d58d1>http://www.vim.org/scripts/script.php?script_id=73</font></a></p>
<p><br>c.vim<br>这个插件超强，提供了很多便于C/C++编程的功能，比如文件头模版，代码片断等。<br>就像帮助文档的头一句写的那样: C/C++IDE for vim/gvim.具体如何的强大家就看看帮助好了.<br>安装:<br>这个相对地比较简单,但是文件却是不少:<br>1. 拷贝cvim.zip到[你的gvim的安装目录]\vimfiles,<br>&nbsp;&nbsp; 执行unzip,(注意,如果是window的unzip,请选择解压缩到当前目录)<br>2. 你可以设置一些个人信息在.vimrc或_vimrc中.例如:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let g:C_AuthorName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'Moonz_wu'&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let g:C_AuthorRef&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'Mn'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let g:C_Email&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#109;&#111;&#111;&#110;&#122;&#46;&#119;&#117;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#39;"><font color=#1d58d1>'moonz.wu@gmail.com'</font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let g:C_Company&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'FSky co.'&nbsp;&nbsp;&nbsp; <br>3. 重新启动vim,并执行命令<br>:help [你的gvim的安装目录]\vimfiles\doc来产生帮助文档.<br>基本上完成这些步骤,这个cvim插件就可以用了,不过这里要说明的是解压完后,你会看到两个压缩文件<br>c-templates-comm.zip和c-templates+comm.zip,这两个区别就是c-templates+comm.zip带方法注释,<br>c-templates-comm.zip没有, 你可以解压其中一个,并拷贝到.\plugin\templates.<br>你可以在解压完的doc中找到一个hotkey.pdf文件,里面讲了cvim定义的所有快捷键.</p>
<p><br>crefvim.vim<br>为VIM定制的C参考手册，这样对于语法或者函数不清楚的地方可以方便的查找了<br>安装：<br>1.将脚本拷贝到你的本地目录中，<br>Unix: ~/.vim/plugin<br>windows: [你的gvim的安装目录]\vimfiles\plugin<br>2. 将帮助文件(即doc下的文件)拷贝到<br>&nbsp; Unix:&nbsp;&nbsp;&nbsp; ~/.vim/doc<br>&nbsp; Windows: [你的gvim的安装目录]\vimfiles\doc<br>3.将语法文件(即syntax下的文件)拷贝到<br>&nbsp; Unix:&nbsp;&nbsp;&nbsp; ~/.vim/after/syntax<br>&nbsp; Windows: [你的gvim的安装目录]\vimfiles\after\syntax</p>
<p><br>然后启动vim就将自动的加载脚本。然后在vim执行以下命令<br>Unix<br>:helptags ~/.vim/doc<br>windows<br>:helptags [你的gvim的安装目录]\vimfiles\doc<br>呵呵，那么搞定后你在vim中写入一个atoi(),运行命令\cr，看看效果。<br>这个是crefvim帮助里的(&lt;Leader&gt; = \)<br>&nbsp; &lt;Leader&gt;cr normal mode:&nbsp; get help for word under cursor<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Memory aid cr: (c)-(r)eference<br>&nbsp; &lt;Leader&gt;cr visual mode:&nbsp; get help for visually selected text<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Memory aid cr: (c)-(r)eference<br>&nbsp; &lt;Leader&gt;cw:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prompt for word CRefVim should search for<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Memory aid cw: (c)-reference (w)hat<br>&nbsp; &lt;Leader&gt;cc:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jump to table of contents of the C-reference manual<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Memory aid cc: (c)-reference (c)ontents<br>具体还需看看帮助。<br>下载:<br><a href="http://www.vim.org/scripts/script.php?script_id=614"><font color=#1d58d1>http://www.vim.org/scripts/script.php?script_id=614</font></a></p>
<p>这里有一篇很好的讲vim插件的文章,我也借鉴了一部份^_^!<br><a href="http://www.pconline.com.cn/pcedu/soft/gj/photo/0609/877033_5.html"><font color=#1d58d1>http://www.pconline.com.cn/pcedu/soft/gj/photo/0609/877033_5.html</font></a><br><br>VIM script包含几大类:</p>
<ul>
    <li>　　color scheme&nbsp;配色方案
    <li>　　ftplugin&nbsp;File type插件，特定语言语法的设置，比如如何识别注释
    <li>　　syntax&nbsp;&nbsp;语法高亮的配色
    <li>　　plugin&nbsp;&nbsp;提供额外功能的插件，比如智能完成、缓冲区管理。</li>
</ul>
<p>　　VIM的script安装非常简单，下载的script文件或者压缩包里头都有安装说明，在VIM的安装目录（比如C:\VIM64）下面有一个vimfiles目录，把script放到vimfiles目录下即可。对于多用户系统，可以在HOME目录（一般是c:\Documents and Settings\ &lt;USER_NAME&gt;\）下面建立一个vimfiles目录，把script放置到这里。</p>
<p>　　下面是一些好用的VIM插件，具体使用办法请参考各自。vim文件头部的注释。</p>
<p>　　BufExplorer.vim&nbsp;&nbsp;*****<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=42"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=42</font></a><br>　　这个插件可以使编辑多文件更加方便，装完插件后Normal mode下输入\be即可打开缓冲区列表，光标放置在某一个文件上按回车即可打开这个文件，而缓冲区列表自动关闭。</p>
<p>　　Taglist.vim&nbsp;&nbsp;*****<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=273"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=273</font></a><br>　　这个插件可以实现类或者函数列表功能，支持C/C++，java，perl，python，tcl，sql，php等语言，它可以在VIM中创建一个窗口，列出编辑的源文件中的类、函数、变量定义列表，而且更方便的是这个列表也插入在了右键菜单中，分类存放，访问非常方便。</p>
<p>　　TabBar.vim&nbsp;&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=1338"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=1338</font></a><br>　　这个插件实现了类似UltraEdit中的标签页的功能，而且能通过Alt-&lt;n&gt;来切换，&lt;n&gt;代表1-9。</p>
<p>　　minibufexpl.vim&nbsp;&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=159"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=159</font></a><br>　　实现了类似UltraEdit中的标签也功能。</p>
<p>　　c.vim&nbsp;&nbsp;&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=213"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=213</font></a><br>　　提供了很多便于C/C++编程的功能，比如文件头模版，代码片断等。</p>
<p>　　CRefVim&nbsp;&nbsp;&nbsp;**<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=614"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=614</font></a><br>　　为VIM定制的C参考手册，这样对于语法或者函数不清楚的地方可以方便的查找了。</p>
<p>　　latex-suite&nbsp;&nbsp;*****<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=475"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=475</font></a><br>　　<a href="http://vim-latex.sf.net/"><font color=#3366cc>http://vim-latex.sf.net/</font></a><br>　　提供了很多便于编辑TeX/LaTeX文件的功能，比如在VIM里面编译或者预览、自动插入TeX标记等。</p>
<p>　　word_complete.vim&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=73"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=73</font></a><br>　　Insert模式下在输入的时候自动补全单词，如果补全正确可以按Tab键接受，否则可以不管它继续输入或者按Ctrl-n，Ctrl-p切换补全。 注意是输入三个字符后才开始补全。</p>
<p>　　Vim JDE<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=1213"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=1213</font></a><br>　　支持C/C++等的自动完成（需要VIM 7.0，编译时打开+ruby特性）．</p>
<p>　　cppcomplete.vim&nbsp;&nbsp;**<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=527"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=527</font></a><br>　　能自动完成C/C++/Java的结构或类成员，注意它的快捷键是Alt-l（字母L）不是Alt-i。</p>
<p>　　The NEAD Commenter&nbsp;**<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=1218"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=1218</font></a><br>　　在许多类型的文件中方便的加上注释或者取消注释。</p>
<p>　　winmanager<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=95"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=95</font></a><br>　　把标准的File Explorer以及Buffer Explorer插件集成在一起，提供现代编辑器中常见的文件列表和缓冲区列表功能。</p>
<p>　　sketch.vim&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=705"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=705</font></a><br>　　Draw with mouse: boxes, arrows, lines, fills. Transparent/opaque drag and drop.照着它的教程做一遍，你就会震撼于它的创意了。</p>
<p>　　DrawIt.vim&nbsp;**<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=40"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=40</font></a><br>　　可以方便的画连线图。</p>
<p>　　MultipleSearch&nbsp;&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=479"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=479</font></a><br>　　MultipleSearch2.vim&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=1183"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=1183</font></a><br>　　Mark.vim&nbsp;&nbsp;***<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=1238"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=1238</font></a><br>　　otf.vim&nbsp;&nbsp;&nbsp;**<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=634"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=634</font></a><br>　　这些插件可以同时高亮显示多次搜索结果，这个特性非常有利于显示代码中某些变量或函数的调用位置。</p>
<p>　　SearchComplete.vim&nbsp;*<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=474"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=474</font></a><br>　　可以用/搜索时按Tab补全要搜索的单词。</p>
<p>　　Vim Intellisense<br>　　<a href="http://insenvim.sourceforge.net/"><font color=#3366cc>http://insenvim.sourceforge.net</font></a><br>　　顾名思义，此插件用于给VIM提供智能完成功能，支持C++，C#，Java，JSP，HTML，SQL，XML，笔者安装后一直懒得配置，也就没用上。</p>
<p>　　project<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=69"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=69</font></a><br>　　提供一些IDE功能，看介绍似乎很不错。</p>
<p>　　JavaBrower<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=588"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=588</font></a><br>　　提供文件中Java类的树状列表。</p>
<p>　　vimspell<br>　　<a href="http://www.vim.org/scripts/script.php?script_id=465"><font color=#3366cc>http://www.vim.org/scripts/script.php?script_id=465</font></a><br>　　ispell or aspell based spell checker with fly-spelling。</p>
<p>　　cream<br>　　<a href="http://cream.sourceforge.net/"><font color=#3366cc>http://cream.sourceforge.net/</font></a><br>　　一套配置文件，可以把VIM的界面改成CUA（Common User Access）模型，降低VIM的学习难度，个人不推荐这种做法，不过其中有些高级配置值得学习（有意思的是Emacs也有类似的项目: Easymacs，EmacsW32）。</p>
<p>　　IComplete<br>　　<a href="http://icomplete.sf.net/"><font color=#3366cc>http://icomplete.sf.net</font></a><br>　　搭配VIM 7.0的Omni Complete，可以做到C/C++的智能完成功能.</p>
<img src ="http://www.cppblog.com/liu1061/aggbug/39961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2007-12-29 22:12 <a href="http://www.cppblog.com/liu1061/articles/39961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim+cscope+ctags浏览源码</title><link>http://www.cppblog.com/liu1061/articles/38186.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Mon, 10 Dec 2007 11:16:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/38186.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/38186.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/38186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/38186.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/38186.html</trackback:ping><description><![CDATA[&nbsp;一、用vi+cscope编辑文件<br><br>1. cscope 用于生成索引文件的选项：<br>-R: 在生成索引文件时，搜索子目录树中的代码<br>-b: 只生成索引文件，不进入cscope的界面<br>-q: 生成cscope.in.out和cscope.po.out文件，加快cscope的索引速度<br>-k: 在生成索引文件时，不搜索/usr/include目录<br>-i: 如果保存文件列表的文件名不是cscope.files时，需要加此选项告诉cscope到哪儿去找源文件列表。可以使用&#8220;-&#8221;，表示由标准输入获得文件列表<br>-I dir: 在-I选项指出的目录中查找头文件<br>-u: 扫描所有文件，重新生成交叉索引文件<br>-C: 在搜索时忽略大小写<br>-P path: 在以相对路径表示的文件前加上的path，这样，你不用切换到你数据库文件所在的目录也可以使用它了<br>如果你的源码中只含有.c,.h文件，你可以直接使用 cscope -Rbq<br>一般使用方法：find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.S" | cscope -Rbq<br>2. 接着你就可以使用vim来打开一个文件来浏览编辑代码了。使用cs(cscope写)命令来实现函数的调用，<br>定义查找：<br>f: 查找并打开文件，类似vim的find功能<br>s: 查找C语言符号，即查找函数名、宏、枚举值等出现的地方<br>g: 查找函数、宏、枚举等定义的位置，类似ctags所提供的功能<br>d: 查找本函数调用的函数<br>c: 查找调用本函数的函数<br>t: 查找指定的字符串<br>e: 查找egrep模式，相当于egrep功能，但查找速度快多了<br>i: 查找包含本文件的文<br><br>一般使用方式为cs f t var_name<br>二、用vim + ctags阅读源代码 <br>首先我们必需给要阅读的源代码建一个或者多个tags文件，在shell下利用ctags命令给单个文件建立tags如下：<br>&nbsp;&nbsp;&nbsp;&nbsp; ctags&nbsp; filename.c<br>要给同一个目录下的所有文件建立tags如下：<br>&nbsp;&nbsp;&nbsp;&nbsp; ctags -R<br>这时在tags文件所在的目录下打开源文件阅读，vim就会自动调用tags文件。<br>如果tags文件不在当前目录下，可以在命令模式下用下面的命令设置tag文件<br>&nbsp;&nbsp;&nbsp;&nbsp; :set tag=tag_file_path<br><br>要在vim下跳到一个函数的定义处可以在命令模式下用下面的命令：<br>&nbsp;&nbsp;&nbsp;&nbsp; :tag fuction_name<br>这个命令将把你带到fuction_name函数的定义处。<br>另外，ctrl + ]命令会把当前光标下的单词作为tag的名字，并直接跳转<br>用ctrl + t命令可以回到前一个tag，你可以在ctrl + t前面加一个数字<br>表示往回跳的层数。<br>使用Ctrl + g可以显示当前正在编辑的文件名，及所在的行号<br>另外，如果源文件的排版比较乱的话，可以通过命令gg=G来格式化整个源文件<br>下面这几个设置可以帮助你更好的设置代码缩进<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set cindent<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set shiftwidth=4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set tabstop=4<br>&nbsp;<a href="http://www.xxlinux.com/"><u><font color=#0000ff>Linux联盟</font></u></a>收集整理 ,转贴请标明原始链接<a title=Linux联盟 href="http://www.xxlinux.com/linux/article/development/soft/20071122/12465.html">Linux联盟</a>
<img src ="http://www.cppblog.com/liu1061/aggbug/38186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2007-12-10 19:16 <a href="http://www.cppblog.com/liu1061/articles/38186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>the mean of the vim command</title><link>http://www.cppblog.com/liu1061/articles/38145.html</link><dc:creator>T.S Liu</dc:creator><author>T.S Liu</author><pubDate>Mon, 10 Dec 2007 02:55:00 GMT</pubDate><guid>http://www.cppblog.com/liu1061/articles/38145.html</guid><wfw:comment>http://www.cppblog.com/liu1061/comments/38145.html</wfw:comment><comments>http://www.cppblog.com/liu1061/articles/38145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liu1061/comments/commentRss/38145.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liu1061/services/trackbacks/38145.html</trackback:ping><description><![CDATA[<p style="FONT-FAMILY: Arial">1. Motions and operators&nbsp;&nbsp;&nbsp;&nbsp;*operator*</p>
<p style="FONT-FAMILY: Tahoma">The motion commands can be used after an operator command, to have the command<br>operate on the text that was moved over.&nbsp; That is the text between the cursor<br>position before and after the motion.&nbsp; Operators are generally used to delete<br>or change text.&nbsp; The following operators are available:</p>
<p style="COLOR: red; FONT-FAMILY: Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;|c|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change<br>&nbsp;&nbsp;&nbsp;&nbsp;|d|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d&nbsp;&nbsp;&nbsp;&nbsp; delete<br>&nbsp;&nbsp;&nbsp;&nbsp;|y|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp; yank into register (does not change the text)<br>&nbsp;&nbsp;&nbsp;&nbsp;|~|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~&nbsp;&nbsp;&nbsp;&nbsp; swap case (only if 'tildeop' is set)<br>&nbsp;&nbsp;&nbsp;&nbsp;|g~|&nbsp;&nbsp;&nbsp;&nbsp; g~&nbsp;&nbsp;&nbsp;swap case<br>&nbsp;&nbsp;&nbsp;&nbsp;|gu|&nbsp;&nbsp;&nbsp;&nbsp; gu&nbsp;&nbsp;&nbsp;&nbsp;make lowercase<br>&nbsp;&nbsp;&nbsp;&nbsp;|gU|&nbsp;&nbsp;&nbsp;&nbsp; gU&nbsp;&nbsp;&nbsp;&nbsp;make uppercase<br>&nbsp;&nbsp;&nbsp;&nbsp;|!|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter through an external program<br>&nbsp;&nbsp;&nbsp;&nbsp;|=|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp; filter through 'equalprg' or C-indenting if empty<br>&nbsp;&nbsp;&nbsp; |gq|&nbsp;&nbsp;&nbsp;&nbsp; gq&nbsp;&nbsp;&nbsp; text formatting<br>&nbsp;&nbsp;&nbsp; |g?|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g?&nbsp;&nbsp;&nbsp; ROT13 encoding<br>&nbsp;&nbsp;&nbsp; |&gt;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp; shift right<br>&nbsp;&nbsp;&nbsp; |&lt;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&nbsp;&nbsp;&nbsp;&nbsp; shift left<br>&nbsp;&nbsp;&nbsp; |zf|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zf&nbsp;&nbsp;&nbsp;&nbsp; define a fold<br>&nbsp;&nbsp;&nbsp; |g@|&nbsp;&nbsp;&nbsp; g@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call function set with the 'operatorfunc' option<br><br>在函数中移动光标<br>&nbsp;&nbsp;&nbsp;&nbsp;[[ 转到上一个位于第一列的&#8220;{&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;]] 转到下一个位于第一列的&#8220;{&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;{ 转到上一个空行<br>&nbsp;&nbsp;&nbsp;&nbsp;} 转到下一个空行<br>&nbsp;&nbsp;&nbsp;&nbsp;gd 转到当前光标所指的局部变量的定义<br>&nbsp;&nbsp;&nbsp;&nbsp;* 转到当前光标所指的单词下一次出现的地方<br>&nbsp;&nbsp;&nbsp;&nbsp;# 转到当前光标所指的单词上一次出现的地方<br>括号的匹配<br>&nbsp;&nbsp;&nbsp; % 用来进行小括号、中括号和大括号的匹配<br><br><br><span>taglist</span><span>帮助文件</span></p>
<p><span style="COLOR: rgb(0,0,255)">&lt;CR&gt;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;跳到光标下tag所定义的位置，用鼠标双击此tag功能也一样<br><span style="COLOR: rgb(0,0,255)">o&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在一个新打开的窗口中显示光标下tag<br><span style="COLOR: rgb(0,0,255)">&lt;Space&gt;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示光标下tag的原型定义<br><span style="COLOR: rgb(0,0,255)">u</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;更新taglist窗口中的tag<br><span style="COLOR: rgb(0,0,255)">s</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;更改排序方式，在按名字排序和按出现顺序排序间切换<br><span style="COLOR: rgb(0,0,255)">x</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taglist窗口放大和缩小，方便查看较长的tag<br><span style="COLOR: rgb(0,0,255)">+</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开一个折叠，同zo<br><span style="COLOR: rgb(0,0,255)">-&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将tag折叠起来，同zc<br><span style="COLOR: rgb(0,0,255)">*&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开所有的折叠，同zR<br><span style="COLOR: rgb(0,0,255)">=&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将所有tag折叠起来，同zM<br><span style="COLOR: rgb(0,0,255)">[[&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;跳到前一个文件<br><span style="COLOR: rgb(0,0,255)">]]&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;跳到后一个文件<br><span style="COLOR: rgb(0,0,255)">q&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关闭taglist窗口<br><span style="COLOR: rgb(0,0,255)">&lt;F1&gt;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示帮助<br>""""""""""""""""""""""""""""""<br>&nbsp;&nbsp;&nbsp;"&nbsp;Tag&nbsp;list&nbsp;(ctags)<br>&nbsp;&nbsp;&nbsp;""""""""""""""""""""""""""""""<br>&nbsp;&nbsp;&nbsp;if&nbsp;MySys()&nbsp;==&nbsp;"windows"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: rgb(0,128,128)">"设定windows系统中ctags程序的位置</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;Tlist_Ctags_Cmd&nbsp;=&nbsp;'ctags'<br>&nbsp;&nbsp;&nbsp;elseif&nbsp;MySys()&nbsp;==&nbsp;"linux"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: rgb(0,128,128)">"设定windows系统中ctags程序的位置</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;Tlist_Ctags_Cmd&nbsp;=&nbsp;'/usr/bin/ctags'<br>&nbsp;&nbsp;&nbsp;endif<br>&nbsp;&nbsp;&nbsp;let&nbsp;Tlist_Show_One_File&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: rgb(0,128,128)">"不同时显示多个文件的tag，只显示当前文件的</span><br>&nbsp;&nbsp;&nbsp;let&nbsp;Tlist_Exit_OnlyWindow&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: rgb(0,128,128)">&nbsp;"如果taglist窗口是最后一个窗口，则退出vim</span><br>&nbsp;&nbsp;&nbsp;let&nbsp;Tlist_Use_Right_Window&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: rgb(0,128,128)">"在右侧窗口中显示taglist窗</span></p>
<img src ="http://www.cppblog.com/liu1061/aggbug/38145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liu1061/" target="_blank">T.S Liu</a> 2007-12-10 10:55 <a href="http://www.cppblog.com/liu1061/articles/38145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>