Chinaunix首页 | 论坛 | 博客
  • 博客访问: 285965
  • 博文数量: 57
  • 博客积分: 1764
  • 博客等级: 上尉
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-09 18:14
文章分类

全部博文(57)

文章存档

2012年(24)

2011年(33)

分类: LINUX

2011-12-03 20:17:55

   浏览复杂的函数或算法流程时,往往会牵涉到多个文件或多个位置。例如,在看内核的模块时,往往为了跟完一个流程,中间会经过好几个函数(并且有可能在不同的文件)。这种情况下必须做点标志,这样才不致于跟丢原来的流程。
  jumps是vim的跳转列表,记录了项目中文件的所有跳转情况。可以用ctrl+o和ctrl+i在跳转表中前后切换。更详细的信息可查看帮助手册:help jumps和:help jump-options
  有了jumplist,确实方便了好多。不过,要是能在跳转的过程中做点标志,那就更爽了。别慌,救世主marks闪亮登场。
  vim中几个marks命令:
  :marks {arg}       //显示{arg}命名的位置标记,或不写参数则显示全部标记
  :delmark {marks}   //删除{marks}命名的位置标记
  :delmark!          //删除当前缓冲区中的所有标记
  :mark {arg}        //创建{arg}命名的位置标记
  
位置标记的常见命名:
'a - 'z         小写位置标记,在每个文件内有效。
'A - 'Z         大写位置标记,也叫做文件标记,在文件间都有效
'0 - '9         数字位置标记,在.viminfo 文件里设置,这些用户不能命名

  但是vim的位置标记是不显示出来的,这就需要插件的帮助优化了。
  showmarks插件:让marks无处藏身,我的配置如下。第一行,使能showmarks;第二行,只关心字母命名的位置标记;在help, Quickfix, non-modifiable窗口,不使用showmarks;第四、五行,让字母命名的位置标记高亮显示,用的是后两行的配色
  1. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  2. " showmarks setting
  3. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  4. let showmarks_enable = 1 "disable showmarks when vim startup
  5. let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  6. let showmarks_ignore_type = "hqm" "help, Quickfix, non-modifiable
  7. let showmarks_hlline_lower = 1
  8. let showmarks_hlline_upper = 1
  9. hi ShowMarksHLl ctermbg=Yellow ctermfg=Black guibg=#FFDB72 guifg=Black
  10. hi ShowMarksHLu ctermbg=Magenta ctermfg=Black guibg=#FFB3FF guifg=Black
  marksbrowser插件:这个插件,能以窗口的方式显示所有关心的位置标记,按d可以删除标记,按回车或双击可以跳到相应的位置标记。由于这个插件已经有很多没有更新了,要想设置关心的种类,需要修改插件的脚本。我的配置如下:
  1. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  2. " marks blowser setting
  3. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  4. nmap \mk :MarksBrowser
  5. let marksCloseWhenSelected = 0 "选择位置标记后,不关闭本窗口
  不过,这插件跟MiniBufExplorer插件算有个兼容问题marksbrowser插件是在上方显示位置标记窗口的,在关闭的时候,会导致下面MiniBufExplorer插件的窗口尺寸不正常,甚是烦人,差点就要放弃该插件。不过,该插件功能确实都有用,不想放弃。那只有自己动手,丰衣足食了。研究了一下源码,发现只要改下命令,将位置窗口放到下方显示即可:
  1. "修改关心的位置标记
  2. "let s:all_marks = "abcdefghijklmnopqrstuvwxyz.'`^<>\""
  3. let s:all_marks = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.'`^<>\""

  4. '改变窗口显示的位置,将topleft改为botright
  5. "exec "to sp" . escape(s:win_title, ' ') Modified by jack
  6. exec "bo sp" . escape(s:win_title, ' 
    插件visualmark功能十分简单,相当于一个书签功能,算是对上面两种插件的一个补充吧。按mm可以快速设置一个书签,再按一次就会取消该书签。不过,该插件在ubuntu下,会有一个“E197 不能设定语言为'en_US'"的错误,解决的方法还是改插件源码:
  1. if has("win32") || has("win95") || has("win64") || has("win16")
  2.       exec ":lan mes en_US"
  3. else
  4.       exec ":lan POSIX"
  最后,再介绍一个标记单词颜色的插件mark这个插件能用正则语言给单词着色,对浏览代码还是很有用滴^-^。我的配置如下:
  1.  """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  2.   " mark setting
  3.   """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  4.   nmap ,hl MarkSet
  5.   vmap ,hl MarkSet
  6.   nmap ,hh MarkClear
  7.   vmap ,hh MarkClear
  8.   nmap ,hr MarkRegex
  9.   vmap ,hr MarkRegex
   
  介绍的差不多了,有了这些功能和插件,终于能更安心的看代码啦!!!

参考资料:
阅读(2102) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~