<h4>1.自定义编辑.vimrc的快捷键</h4>
<blockquote>
"Set mapleader
let mapleader = ","
"Fast reloading of the .vimrc
map &lt;silent&gt; &lt;leader&gt;ss :source ~/.vimrc&lt;cr&gt;
"Fast editing of .vimrc
map &lt;silent&gt; &lt;leader&gt;ee :e ~/.vimrc&lt;cr&gt;
"When .vimrc is edited, reload it
autocmd! bufwritepost .vimrc source ~/.vimrc
</blockquote>
<h4>2.ctags的应用:</h4>
<blockquote>ctags -R src

ctrl-]

ctrl-t</blockquote>
<h4>3.taglist.vim 插件:</h4>
现在我们到<a class="link" href="http://www.vim.org/scripts/script.php?script_id=273" target="_top">http://www.vim.org/scripts/script.php?script_id=273</a>下载最新版本的taglist plugin,目前版本是4.6。

下载后,把该文件在~/.vim/目录中解压缩,这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:

Taglist提供了相当多的功能,我的vimrc中这样配置:
<blockquote>"""""""""""""""""""""""""""""
" Tag list (ctags)
" """"""""""""""""""""""""""""""
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
" "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Show_One_File = 1
" "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow = 1
"在右侧窗口中显示taglist窗口
let Tlist_Use_Right_Window = 1</blockquote>
这样配置后,当你输入”<span class="command"><strong>:TlistOpen</strong></span>“时, 右边显示函数或者变量的定义列表。

可以用”:<span class="command"><strong>TlistOpen</strong></span>“打开taglist窗口,用”<span class="command"><strong>:TlistClose</strong></span>“关闭taglist窗口。或者使用”<span class="command"><strong>:TlistToggle</strong></span>“在打开和关闭间切换。在我的vimrc中定义了下面的映射,使用&lt;F9&gt;键就可以打开/关闭taglist窗口:
<blockquote>
map &lt;silent&gt; &lt;F9&gt; :TlistToggle&lt;cr&gt;
</blockquote>
<h4>4.<span class="bold"><strong>winmanager插件</strong></span>:</h4>
Winmanager插件在这里下载:<a class="link" href="http://vim.sourceforge.net/scripts/script.php?script_id=95" target="_blank">http://vim.sourceforge.net/scripts/script.php?script_id=95</a>

下载后,把该文件在~/.vim/目录中解压缩,这会把winmanager插件解压到~/.vim/plugin和~/.vim/doc目录中:
<blockquote>
plugin/winmanager.vim – winmanager插件
plugin/winfileexplorer.vim - 改良的Explorer插件
plugin/wintagexplorer.vim – winmanager提供的tag插件,用处不大
doc/winmanager.txt – 帮助文件
</blockquote>
仍然用”<span class="command"><strong>:helptags ~/.vim/doc</strong></span>“命令来生成帮助标签,然后就可以使用”<span class="command"><strong>:help winmanager</strong></span>“来查看帮助了。

使用winmanager插件可以控制各插件在vim窗口中的布局显示。我的vimrc中这样设置:
<blockquote>""""""""""""""""""""""""""""""
" winManager setting
" """"""""""""""""""""""""""""""
let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
let g:winManagerWidth = 30
let g:defaultExplorer = 0
nmap &lt;C-W&gt;&lt;C-F&gt; :FirstExplorerWindow&lt;cr&gt;
nmap &lt;C-W&gt;&lt;C-B&gt; :BottomExplorerWindow&lt;cr&gt;
nmap &lt;silent&gt; &lt;leader&gt;wm :WMToggle&lt;cr&gt;</blockquote>
<span class="emphasis"><em>g:winManagerWindowLayout</em></span>变量的值定义winmanager的窗口布局,使用上面的设置,我们的窗口布局看起来是这样的:

左边有两个窗口,上面的是BufExplorer窗口,下面是taglist窗口。FileExplorer窗口和BufExplorer共用一个窗口,在BufExplorer窗口中使用”<span class="command"><strong>CTRL-N</strong></span>“可以切换到FileExplorer窗口,再使用一次则又切换回BufExplorer窗口。也就是说,在变量g:winManagerWindowLayout中,使用”,”分隔的插件,在同一个窗口中显示,使用”<span class="command"><strong>CTRL-N</strong></span>“在不同插件间切换;使用”|”分隔的插件,则在另外一个窗口中显示。

在屏幕右边的窗口则是主编辑区。

在上面的vimrc设置中,还定义了三个键映射,分别用于跳到左上窗口、左下窗口,以及显示/关闭winmanager窗口。

&nbsp;
<h4>5.lookupfile 插件</h4>
Lookupfile插件可以在下面的链接下载:<a class="link" href="http://www.vim.org/scripts/script.php?script_id=1581" target="_blank">http://www.vim.org/scripts/script.php?script_id=1581</a>

下载该插件后,把它解压到你的~/.vim目录中,就完成了安装。然后在vim中执行”<span class="command"><strong>:helptags ~/.vim/doc</strong></span>“命令,生成help文件索引,然后就可以使用”<span class="command"><strong>:help lookupfile</strong></span>“命令查看lookupfile插件的帮助文件了。

<span class="bold"><strong>注:</strong></span>windows用户需要把这个插件解压在你的$vim/vimfiles或$HOME/vimfiles目录。

Lookupfile插件还需要最新的genutils支持,因此,需要下载genutils:<a class="link" href="http://www.vim.org/scripts/script.php?script_id=197" target="_blank">http://www.vim.org/scripts/script.php?script_id=197</a>

这个插件提供了一些通用的函数,可供其它的脚本使用。它的安装方法也是在~/.vim目录解压就可以了。需要注意的是,最新版本的genutils使用了 新的自动加载方式,所以和以前的版本不兼容。如果你的其它插件需要使用genutils的旧版本的话,你需要参照genutils的说明进行配置,以便使 新旧两个版本能协同工作。

现在我们介绍lookupfile插件。虽然名字为lookupfile,其实这个插件它不仅能用来查找文件,还可以在打开的缓冲区中查找,按目录查找,等等。

&nbsp;

<span class="bold"><strong>[项目文件查找]</strong></span>

Lookupfile在查找文件时,需要使用tag文件。它可以使用<span class="command"><strong>ctags</strong></span>命令生成的tag文件,不过查找效率会比较低。因此我们会专门为它生成一个包含项目中所有文件名的tag文件。

我编写了下面的shell脚本,为vim70的源代码,生成一个文件名tag文件。
<pre lang="bash" escaped="true">
#!/bin/sh
# generate tag file for lookupfile plugin
echo -e "!_TAG_FILE_SORTED\t2\t/2=foldcase/" &gt; filenametags
find . -not -regex '.*\.\(png\|gif\)' -type f -printf "%f\t%p\t1\n" | \
sort -f &gt;&gt; filenametags
</pre>
在~/src/vim70/目录下运行该脚本,会生成一个名为filenametags的文件,包含了vim70目录下的所有文件的名字及其所在目录。

现在我们需要让lookupfile插件知道到哪去找文件名tag文件。我们假定vim当前工作目录为~/src/vim70/,执行下面的命令:
<blockquote>
:let g:LookupFile_TagExpr = '"./filenametags"'
</blockquote>
<span class="blod">注:</span>如果不设定<span class="emphasis"><em>g:LookupFile_TagExpr</em></span>的值,那么lookupfile插件会以tags选项定义的文件作为它的tag文件。

现在我们就可以使用lookupfile来打开文件了,按”<span class="command"><strong>&lt;F5&gt;</strong></span>“或输入”<span class="command"><strong>:LookupFile</strong></span>“在当前窗口上方打开一个lookupfile小窗口,开始输入文件名(至少4个字符),随着你的输入,符合条件的文件就列在下拉列表中了。文件名可以使用vim的正则表达式,这大大方便了文件的查找。你可以用”<span class="command"><strong>CTRL-N</strong></span>“和”<span class="command"><strong>CTRL-P</strong></span>“(或者用上、下光标键)来在下拉列表中选择你所需的文件。选中文件后,按回车,就可以在之前的窗口中打开此文件。

Lookupfile插件提供了一些配置选项,通过调整这些配置选项,使它更符合你的工作习惯。下面是我的vimrc中关于lookupfile的设置,供参考:
<pre lang="php" escaped="true">
""""""""""""""""""""""""""""""
" winManager setting
" """"""""""""""""""""""""""""""
let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
let g:winManagerWidth = 30
let g:defaultExplorer = 0
nmap &lt;C-W&gt;&lt;C-F&gt; :FirstExplorerWindow&lt;cr&gt;
nmap &lt;C-W&gt;&lt;C-B&gt; :BottomExplorerWindow&lt;cr&gt;
nmap &lt;silent&gt; &lt;leader&gt;wm :WMToggle&lt;cr&gt;

""""""""""""""""""""""""""""""
" lookupfile setting
" """"""""""""""""""""""""""""""
let g:LookupFile_MinPatLength = 1               "最少输入1个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0        "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1     "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1          "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0              "不允许创建不存在的文件
if filereadable("./filenametags")                "设置tag文件的名字
let g:LookupFile_TagExpr = '"./filenametags"'
endif
"映射LookupFile为,lk
nmap &lt;silent&gt; &lt;leader&gt;lk :LUTags&lt;cr&gt;
"映射LUBufs为,ll
nmap &lt;silent&gt; &lt;leader&gt;ll :LUBufs&lt;cr&gt;
"映射LUWalk为,lw
nmap &lt;silent&gt; &lt;leader&gt;lw :LUWalk&lt;cr&gt;

" lookup file with ignore case
function! LookupFile_IgnoreCaseFunc(pattern)
let _tags = &amp;tags
try
let &amp;tags = eval(g:LookupFile_TagExpr)
let newpattern = '\c' . a:pattern
let tags = taglist(newpattern)
catch
echohl ErrorMsg | echo "Exception: "" .  v:exception | echohl NONE
return ""
finally
let &amp;tags = _tags
endtry

" Show  the  matches  for  what  is  typed  so  far.
let files = map(tags, 'v:val["filename"]')
return files
endfunction
let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc'</pre>
<h4>5.开启文件类型检测:</h4>
打开文件类型检测功能很简单,在你的vimrc中加入下面一句话就可以了:
<blockquote>
filetype plugin indent on
</blockquote>
<h4>6.语法高亮:</h4>
http://www.vim.org/scripts/script.php?script_id=625  下载color主题
<h4>7.cscope利器:</h4>
<blockquote>cscope -Rbq
<div class="itemizedlist">
<ul type="disc">
<li><span class="bold"><strong>-R</strong></span>: 在生成索引文件时,搜索子目录树中的代码</li>
<li><span class="bold"><strong>-b</strong></span>: 只生成索引文件,不进入cscope的界面</li>
<li><span class="bold"><strong>-q</strong></span>: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度</li>
<li><span class="bold"><strong>-k</strong></span>: 在生成索引文件时,不搜索/usr/include目录</li>
<li><span class="bold"><strong>-i</strong></span>: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用”<span class="bold"><strong>–</strong></span>“,表示由标准输入获得文件列表。</li>
<li><span class="bold"><strong>-I</strong></span><span class="emphasis"><em>dir</em></span>: 在<span class="bold"><strong>-I</strong></span>选项指出的目录中查找头文件</li>
<li><span class="bold"><strong>-u</strong></span>: 扫描所有文件,重新生成交叉索引文件</li>
<li><span class="bold"><strong>-C</strong></span>: 在搜索时忽略大小写</li>
<li><span class="bold"><strong>-P</strong></span><span class="emphasis"><em>path</em></span>: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。</li>
</ul>
</div></blockquote>
cscope查询功能:
<blockquote>
<div class="itemizedlist">
<ul type="disc">
<li><span class="bold"><strong>s:</strong></span> 查找C语言符号,即查找函数名、宏、枚举值等出现的地方</li>
<li><span class="bold"><strong>g:</strong></span> 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能</li>
<li><span class="bold"><strong>d:</strong></span> 查找本函数调用的函数</li>
<li><span class="bold"><strong>c:</strong></span> 查找调用本函数的函数</li>
<li><span class="bold"><strong>t:</strong></span> 查找指定的字符串</li>
<li><span class="bold"><strong>e:</strong></span> 查找egrep模式,相当于egrep功能,但查找速度快多了</li>
<li><span class="bold"><strong>f:</strong></span> 查找并打开文件,类似vim的find功能</li>
<li><span class="bold"><strong>i:</strong></span> 查找包含本文件的文件</li>
</ul>
</div></blockquote>
&nbsp;

最新文章

  1. Load Test Analyzer Overview
  2. 投资人谈VR色变,VR好戏却刚刚开始
  3. Android API 21 Toolbar Padding
  4. android 检查网络连接状态实现步骤
  5. Oracle创建dblink报错:ORA-01017、ORA-02063解决
  6. javascript笔记——date以及datetime的比较
  7. 安装Nuget上常用的包的命令
  8. Android的init过程详解(一)(转)
  9. volley源代码解析(七)--终于目的之Response&amp;lt;T&amp;gt;
  10. JSP标签编程--简单标签
  11. JavaScript成员属性读取
  12. php面向对象(一)---2017-04-17
  13. SQL Server-聚焦WHERE Column=@Param OR @Param IS NULL有问题?
  14. AM335x(TQ335x)学习笔记——GPIO按键驱动移植
  15. js 中的栈和堆
  16. Ubuntu VMware workstation虚拟机清理缓存文件获得更大硬盘空间
  17. linux执行python的脚本文件,提示提示No such file or directory
  18. Python socket粘包解决
  19. 使用cxf两个声明导致ObjectFactory 类中发生冲突
  20. SQL server 2005数据库的还原与备份

热门文章

  1. poj1696 Space Ant
  2. Why GraphQL is Taking Over APIs
  3. 手机调取摄像头问题(getUserMedia)
  4. Spring MVC 之传递模型数据到视图中
  5. .NET计时器的使用-Stopwatch类
  6. sqoop数据导入到Hdfs 或者hive
  7. WPF中的事件列表 .
  8. KMP算法--C#版
  9. HTML——部分MP4在谷歌浏览器上无法播放
  10. 剑指offer--36.整数中1出现的次数(从1到n整数中1出现的次数)