??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品无码久久久久YW,狠狠亚洲狠狠欧洲2019,国产亚洲精品观看91在线http://m.tkk7.com/conans/category/32374.html你越挣扎我就兴?/description>zh-cnTue, 09 Mar 2010 04:15:34 GMTTue, 09 Mar 2010 04:15:34 GMT60某h常用vim插gQzzQ?/title><link>http://m.tkk7.com/conans/articles/314661.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Fri, 05 Mar 2010 15:02:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/314661.html</guid><description><![CDATA[Align<br /> 一个对齐的插g,用来排版,面对一堆ؕ七八p的代码?用来寚w代码,功能强大,不过用到<br /> 的机会不?br /> http://www.vim.org/scripts/script.php?script_id=521<br /> Mru<br /> http://www.vim.org/scripts/script.php?script_id=521<br /> lvim增加MRU功能,也就是保留最q打开的文件记?:MRU打开,q退?很方?有过一个支?br /> 菜单的类似的插g<br /> 不过对于我这L不用菜单的用?q是q个命o行的好用一?因ؓl常使用,所以我映射<br /> CF2<br /> 功能强大的代码注释工?用来注释或者取消注?支持很多语言,可以Ҏ(gu)本块操作,写代?br /> NERD_comments<br /> 功能强大的代码注释工?用来注释或者取消注?支持很多语言,可以Ҏ(gu)本块操作,写代?br /> M?呵呵<br /> 最常用到的快捷键是"c<br /> <br /> a.vim<br /> ?c/.h之间切换,写代码必?br /> <br /> bufexplorer.vim<br /> 列出当前打开的buffer,可以很容易的切换到和删除选定的buffer,必备插g之一<br /> <br /> c.vim<br /> c/c++ support,让你用编写c/c++E序时如虎添?有很多脓(chung)心的功能,每个功能都有快捷?br /> ,不过一部分和NERD_comments冲突<br /> 如果l常~写一些单文g的cE序,但是不想写makefile,用这?他帮你完?F9~译q?<br /> ctrl-F9q行<br /> <br /> calendar.vim<br /> 日历插g,有了?用vim来写日记很方?br /> <br /> csExplorer.vim<br /> color theme览插g,列出所有的vim color themeC个列表中,选中后按回R卛_应用?br /> 应的color theme,试验color theme时再也不用一ơ次输入:colo theme_name?从上百个<br /> color theme中选择自己喜欢的theme时有?br /> <br /> cscope_maps.vim<br /> cscope的vim插g,提供快捷键操Ucscope,好东?如果你在用cscope的话<br /> <br /> favex.vim<br /> FavEx : Favorite file and directory explorer ,可以d目录和文件到收藏夹,可以?br /> l常~辑的文件添加到收藏Ҏ(gu)Q在文g打开以后Q?ff新增文g到收藏夹Q?fd新增目录?br /> 收藏?br /> <br /> lookupfile.vim<br /> 五星U推荐的好插?我觉得它是vim上最伟大的插件之一,提供多种方式查找文g,让你在复<br /> 杂的?#188;树中也能L自如扑ֈ你要的文?br /> <br /> matchit.vim<br /> 扩展了vim?功能,?可以匚w?不再仅仅是括?支持多种语言.必备插g之一<br /> <br /> parenquote.vim<br /> l选中的文字加上引?支持( { [ < ' " `,选中?"加上你想要添加的W号,比如选中abc<br /> ?"(,得到(abc)<br /> <br /> snippetEmu.vim<br /> 扩展了vim的abbr~写功能,支持占位W?支持变量替换,强烈推荐<br /> <br /> taglist.vim<br /> vim的代码浏览器,生成函数列表,支持跌{,可以Ҏ(gu)光标λ|查询到当前的函数名,使用<br /> vim的程序员必备!个h认ؓ是最伟大的插件之一<br /> <br /> utl.vim<br /> lvim增加url的识别功?但是功能q不只是支持url,q有更多,详情见utl的帮?br /> <br /> vcscommand.vim<br /> lvim整合了cvs/subversion功能,不用dvim环境也能执行常用的cvs/subversion操作?br /> <br /> viki.vim<br /> vim的wiki,没怎么用过,据说很好?详情可以看滇狐的主页<br /> http://edyfox.codecarver.org/html/viki.html<br /> <br /> vis.vim<br /> 可以寚w中的文本块执行ex操作,其是visual block模式?vim自己是不支持?选中?<br /> :B 加上ex命o<br /> <br /> visincr.vim<br /> lvim增加生成递增或者递减数列的功?支持十进?十六q制,日期,星期{?功能强大灉|<br /> <br /> winmanager.vim<br /> lvim增加IDE的功?提供目录览和buffer览功能,因ؓ昄器太?感觉太占I间,所?br /> 单独使用bufexplorer,而且现在vim7的netrw功能也够强大,所以感觉比较鸡?而且貌似?br /> 久没有更?所以基本不?br /> <br /> yankring.vim<br /> cMemacs的king ring,lvim的yank也增加缓?vim本n只缓冲删除的字符?不缓冲yank<br /> 的内?br /> <br /> Posted by 1+1=2 at 6:24 AM 0 comments  <br /> <br /> Labels: vim<br /> <br /> Tuesday, October 10, 2006<br /> VIM 新手指南(zz)<br /> <br /> 术语U定Q?如果没有Ҏ(gu)说明Q?本文中提到的 VIM 指的是图形界面的 gvim 与字W界面的 vim 的统Uͼ gvim 专指囑Ş界面Q?vim 专指字符界面?br /> <br /> 1.从官方网站(http://www.vim.org/download.phpQ下载windows版本的gvim安装?br /> <br /> 2.下蝲中文帮助文档安装文gQhttp://vimcdoc.sourceforge.net/Q,q个Qhttp://vcd.gro.clinux.org/Q是体中文的镜像站点?br /> <br /> 注意Q如果安装vim的中文帮助,安装完成后第一ơ自动启动时可以使用中文的,但退出后又还原ؓ英文了,如果出现q种情况Q只要把"vim"vimfiles"doc下的tags-cn另存为tagsQ再试试吧,中文出现了?br /> 1 ?gvim 正常工作<br /> <br /> VIM 是一个非常强大的~辑器, 可惜的是Q?无论?Windows q是 LinuxQ?gvim 都存在一些小故障QoW一眼看到它的初学者感到非怸愉快?Z不让更多的初学者在W一ơ接?gvim 时被它吓跑, 我在q䆾教程中首先解? gvim 令h感到不快的一些小问题Q?希望能让更多的用户^滑地q渡?gvim 的环境中来?br /> <br /> VIM 的安装很单, Windows 下只要双d装程序, 一?next 下去可以了 (注意到选择安装lg的时候请选择全部lgQ? 默认安装方式下会装几个有用的小东西)?Linux 下各个发行版安装方式都不一P 但M来说都不难装?因此Q? 本文假设你已l成功地安装了一?VIMQ?不再介绍 VIM 的安装步骤?br /> 1.1 屏蔽pȝ自带?.vimrc<br /> <br /> VIM 是一个高度可定制的编辑器Q?它通过配置文g .vimrc (Windows 下是 _vimrc)来定制程序的各种行ؓ?如果你没有编? .vimrc 的话Q?它会使用pȝ自带的一份默认配|文件?可惜的是Q?pȝ默认的配|文件存在种U很令h不快的问题?例如 Windows 下加?mswin.vim 带来的困惑, ?Linux 下无法处理中文等{故障?因此Q?我们在安装了 VIM 之后Q? W一件要做的事情是创徏自己?.vimrc?只要~写一份你自己的配|文Ӟ VIM 便不会再加蝲pȝ自带的配|文件?br /> <br /> 如果你是 Linux 用户Q?请在你的 $HOME 目录下放|一个空文gQ?文g名叫 .vimrcQ?Ҏ(gu)如下Q?br /> <br /> $ cd                            # 使用不带参数?cd 命oQ切换到 $HOME 目录<br /> $ touch .vimrc                  # 使用 touch 命o创徏一个空白文?br /> <br /> 如果你是 Windows 用户Q?请在你的 %HOME% 目录下放|一个空文gQ?文g名叫 _vimrc?步骤如下Q?br /> <br />    1. 在资源管理器中切换到 %HOME% 目录Q?br />    2. 右键单击文g列表的空白位|, 选择“新徏”→“文本文g”Q?br />    3. ?#8220;新徏文本文g.txt”重命名ؓ“_vimrc”Q?注意昄扩展名的问题?<br /> <br /> 现在Q?我们已经创徏了一份自q .vimrc?在之后的部分里, 我们逐渐往 .vimrc 里添加一些属于我们自q内容Q?得到一份真正属于自q配置?br /> 1.2 Linux 下的中文处理<br /> <br /> q一节是?Linux 用户准备的, 如果你是 Windows 用户Q?L接蟩q这一节?br /> <br /> ?许多 Linux 发行版里Q?gvim 默认是不支持汉字的, q给许多初学者留下了非常不好的印象?其实Q?VIM 支持的语a非常之多Q远q超乎我们想象?之所以不能处理中文, 只是因ؓ我们没有正确地配|它?在正式开始工作以前, 我们首先中文处理问题解冟뀂这D里面会出现一些如“Normal 模式”?“Insert 模式”{术语, 看不明白也不要紧Q?vimtutor 里面会详l解释,在这章内只要照着做就可以了, 不用qq些词的含义?br /> <br /> 打开 gvimQ?在键盘上?#8220;i”q入 Insert 模式Q然后试着输入一D中文?如果正常的话Q?恭喜Q?你可以蟩q本D, 直接q入下一Dc? 如果不能正常输入Q?也不要气馁, 先按 ESCQ?回到 Normal 状态?然后在键盘上输入“:set encoding=cp936”Q? 然后回R?注意Q?当你按下“:”的时候, VIM ׃自动切换?#8220;Command 模式”Q?光标会蟩到窗口最下方? 冒号“:”之后的部分就是命令的正文?回R之后Q?q条命op VIM 执行了?q时再按下字?i q入 Insert 模式Q? 输入一D|字, 如果不出意外的话Q?汉字昄应该已经正常?如果q不正常的话Q请与滇狐联pR?br /> <br /> 现在你的 gvim 应该能够正常输入汉字了, 接下来请看一?gvim 的菜单能不能正常地显C汉字,如果能的话, 恭喜Q?Ll蟩q这一节? 如果不能的话Q?我们l箋q行下面的操作?首先按三?ESC 键, 认 VIM 已经处在 Normal 模式下, 然后在键盘上输入“:so $VIMRUNTIME/delmenu.vim”Q?回R后会发现Q?gvim 的菜单没有了。l输?#8220;:so $VIMRUNTIME/menu.vim”Q?回RQ?q时 gvim 的菜单又回来了, 而且菜单中文昄也正怺?br /> 1.3 选择自己喜欢的字?br /> <br /> 如果觉得 gvim 的字体显C效果不好的话, 不妨重新选择一个你喜欢的字体? ?#8220;~辑”→“选择字体”Q然后在字体列表中选择一个你最中意的字体和字号Q?认后就可以了?׃ gvim 只能使用{宽字体Q因此对话框中列出的字体可能比你pȝ里安装的字体要少得多Q?h慢选择Q?耐心选, 直到选出最满意的字体ؓ止?选择完毕后, 先按几下 ESC 认处在 Normal 模式下, 然后输入q条命oQ?#8220;:set guifont?” (q里的问号代表询问, 不要漏写)Q? 回R?gvim 屏幕最下方会显C出你当前所用的字体的名Uͼ 例如在滇狐这里输入这条命令后出来的结果如下:<br /> <br />   guifont=Courier 9<br /> <br /> 误住这里输出的字体名称Q?如果必要的话请先暂时把它写下来备用, 之后我们需要将它写入配|文件?br /> 1.4 配|写?.vimrc<br /> <br /> ?前我们通过一pd命oQ??gvim 调整Z个比较适合我们使用的编辑环境?然而, gvim 是不会自动记住我们这ơ所做的调整的。下ơ再打开 gvim Ӟ 它又变回了原先的模样?如果我们能够把刚才所输入的命令记录下来, 下次再打开 gvim 的时候把那些命o再执行一遍, 不就可以?gvim 每次都保持我们调整过的最?jng)_作状态了么? 对, q就是配|文?.vimrc 的作用?br /> <br /> 刚才我们已经创徏了一 个全I的配置文g .vimrcQ?现在我们往配置文g中写下我们的自己的配|代码?.vimrc 的格式很单,只要刚才输入的所有冒号开头的命oQ?依次写入 .vimrc 卛_Q?写到配置文g里的时候就不要写冒号了?VIM 启动的时候会依次执行q些命o?另外Q?配置文g中双引号开头的行表C注释, ?VIM d .vimrc 的时候, q些行不会被执行。因此你可以使用注释?.vimrc 中写上一些说明文字, 己将来阅读配|文件提供方ѝ?再次复习一下前几节的内容, 然后写下自己?.vimrcQ?你现在的 .vimrc 可能是这个样子的Q?br /> <br /> " Windows 下徏议也加上q句<br /> set encoding=cp936<br /> <br /> " q两句只?Linux 下需?br /> so $VIMRUNTIME/delmenu.vim<br /> so $VIMRUNTIME/menu.vim<br /> <br /> " 讄字体?br /> " 字体名称可以通过前一节介l的语句获得Q?br /> " 如果字体名称中含有空|<br /> " 需要在I格前面加上一个反斜杠Q如下:<br /> set guifont=Courier" 9<br /> <br /> 提示Q?如果?VIM 的基本操作一无所知的话, 现在你可以不妨先使用其它文本~辑器编?.vimrcQ?如记事本{?当然Q?如果你愿意现在就试着使用 gvim ~辑q个文g的话Q?也是非常值得鼓励的?br /> 2 入门学习<br /> 2.1 vimtutor<br /> <br /> vimtutor 是一个非帔R合初学者学?VIM 的简易教E?教程中说阅读一遍这个教E需?25 ?30 分钟Q? 其实很少有h需要这么长旉。一般情况下Q?如果_֊集中的话Q?15 ?20 分钟以这份教E从头到NM遍?每天?15 分钟旉这份教E从头到一遍,qxq行U文本编辑的时候, 量“D”自己多?gvimQ?׃周时_ 可以比较熟(zhn)?gvimQ? 能够用它完成普通的~辑工作了?br /> <br /> Linux 下的 vimtutor 是在l端中打开的, 如果l端字体配置正常Q?一般情况下不会出现什么太大问题?Windows 下的 vimtutor 会弹Z?gvim H口Q?大部分情况下也没有什么大问题Q?在少部分机器上汉字会出现q?如果 vimtutor 在你机器上显CZ正常的话Q?请先输入“:set encoding=cp936”Q?回RQ? 然后再点?#8220;~辑”→“选择字体”Q选择一个支持中文的字体Q??#8220;新宋?#8221;{, 认后, 教程的显C应该就恢复正常了?br /> <br /> 如果你以前从来没有用过 VIM 的话Q?请先?15 分钟旉阅读一?vimtutorQ?然后再l往后阅L狐教E?之后的部分再出现 vimtutor 里介l过的术语时Q?滇狐不再作解释?br /> <br /> 注意Q?Z保证 vimtutor 在Q何机器上q行效果都相同, 不会被本地设|的键绑定所q扰Q?vimtutor q行时不会读取Q何用戯定义的配|文?.vimrc?因此如果你之前做的设|在 vimtutor 里没有效果的话, 请不要太q于惊慌?br /> 2.2 VIM 快速编辑示?br /> <br /> 学习 VIM 其实是一件比较辛苦的事情Q?刚开始的时候可能比用记事本q慢?因此Q?在学?VIM 之前Q?我们有必要先通过一些例子坚定一下信心?br /> <br /> VIM 的一大特点就?#8220;?#8221;?q里列D了一些?VIM 能够快速完成, 而一些其它编辑器难以胜Q的功能, 体现 VIM 的优性?br /> 3 ~写自己?.vimrc<br /> <br /> 作ؓ一个高度可定制的编辑器Q??VIM ~写适合自己使用?.vimrc 是有必要的?q里l出了一个适合初学者用的 .vimrc 框架Q?以及每一设|的详细解释Q?希望能给大家带来一些帮助?br /> <br /> q里是滇狐自q .vimrcQ?里面有很多根据滇狐自q习惯所做的讄?如果你希望在自己机器上用的话, 需要根据你的习惯做一些修攏V?br /> 4 VIM q阶<br /> <br /> ?q一个星期的努力Q??vimtutor 中的基本命o都熟l掌握后Q?使用 VIM q行单快速的~辑应该已经没有什么问题了? 接下来,可以每天抽出半个时旉Q?在半个月左右内把 VIM 用户手册大概阅读一遍??VIM ?Normal 模式下输?#8220;:help usr_toc”卛_看到用户手册Q?如果更习惯看中文版的话, 可以到这里下载?br /> <br /> CQ?没有必要C手册中的所有命令, 只要大概知道有哪些命令, 需要用的之后知道到哪一章去查就可以了?常用的命令查q几ơ之后自然而然p够记住, 不常用的命oC来也没有什么意义?br /> <br /> 另外Q?可以Ҏ(gu)自己的需要, 下蝲一些常用的 VIM 插gQ?方便自己的日常生zM工作?q里有滇狐整理的 VIM 常用插g推荐Q?感兴的话可以看看?br /> <br /> 如果?VIM q有更加厚的兴的话, 可以试着自己~写 VIM 插gQ?不过那些内容׃是这文章能够涉及的了?大家好q! Happy VIMming~<br /> <br /> VIM参数解释<br /> <br /> VIM 中可供用户定制的选项非常非常多, 作ؓ初学者, 我们没有必要了解q么多东ѝ?br /> 下面Q?滇狐单列Z一些最常用的配|项Q?大家可以Ҏ(gu)自己的需要将q些内容d到自q<br /> .vimrc 中?br /> <br /> <br /> <br /> 1 基本讄<br /> <br /> <br />     *<br /> <br /> <br /> <br />       set nocp<br /> <br />       该命令指定让 VIM 工作在不兼容模式下??VIM 之前Q?出现q一个非常流行的~辑器叫<br />       vi?VIM 许多操作?vi 很相| 但也有许多操作与 vi 是不一L?如果使用“:set<br />       cp”命o打开了兼Ҏ(gu)式开关的话, VIM 尽可能地模?vi 的操作模式?br /> <br />       也许有许多h喜欢“最正统?vi”的操作模式, 对于初学者来_ vi 里许多操作是比较不方便的?br /> <br />       举一个例子, VIM 里允许在 Insert 模式下用方向键Ud光标Q??vi 里在<br />       Insert 模式下是不能Ud光标的, 必须使用 ESC 退回到 Normal 模式下才行?br /> <br />       再D一个例子, vi 里?u 命o可以撤消一ơ先前的操作Q?再次按下 u<br />       Ӟ 撤?#8220;撤消”q个动作本nQ?也就是我们常说的“重复”(redo)?br />       ?VIM 里可以?u 命o撤消多步操作Q?“重复”使用的快捷键?Ctrl<br />       + R?br /> <br />       使用兼容模式后, VIM 放弃这些新的功能, 量模仿 vi 的各U操作方式?br />       只有在不兼容模式下, 才能更好地发?VIM 自n的特炏V?Bram L强烈推荐大家使用<br />       VIM 的不兼容模式Q?滇狐也是q样推荐的?请务必在你的 .vimrc 中的W一行写上:<br />       “set nocp”?br />     *<br /> <br />       set ru<br /> <br />       该命令打开 VIM 的状态栏标尺?默认情况下, VIM 的状态栏标尺在屏q底部,<br />       它能x昄当前光标所在位|在文g中的行号、列P 以及对应的整个文件的癑ֈ比?br />       打开标尺可以l文件的~辑工作带来一定方ѝ?br />     *<br /> <br />       set hls<br /> <br />       搜烦旉亮显C扑ֈ的文本?该指令的功能?vimtutor 中已l有q介l,<br />       q里׃多说了?其实g许多人ƈ不喜Ƣ这个功能?br />     *<br /> <br />       set is<br /> <br />       搜烦时在未完全输入完毕要索的文本时就开始检索?vimtutor 对该命o也有q介l,<br />       滇狐q不喜欢q个功能Q?因此滇狐自己的配|文仉是没有这条命令的?但是周围有朋友很喜欢q个Q?br />       因此滇狐q是它列在q里?br />     *<br /> <br />       syntax on<br /> <br />       打开关键字上艌Ӏ?q行E序设计的朋友应该都知道关键字上色是什么东西,<br />       因此q里׃多说了?不进行程序设计的朋友不妨也打开q个功能Q?虽然不一定能够用得着Q?br />       但这个功能其实也是很好玩的?br />     *<br /> <br />       set backspace=indent,eol,start<br /> <br />       设想q样一个情况: 当前光标前面有若q字母, 我们按下 i 键进入了 Insert<br />       模式Q?然后输入?3 个字母, 再按 5 下删?Backspace)?默认情况下,<br />       VIM 仅能删除我们新输入的 3 个字母, 然后喇叭“嘟嘟”响两声?如果我们“set<br />       backspace=start”Q?则可以在删除了新输入?3 个字母之后, l箋向前删除原有的两个字W?br /> <br />       再设想一个情况: 有若q行文字Q?我们把光标移C间某一行的行首Q??br />       i 键进?Insert 模式Q?然后按一?Backspace?默认情况下, 喇叭?#8220;?#8221;一壎ͼ<br />       然后没有M动静?如果我们“set backspace=eol”Q?则可以删除前一行行末的回RQ?br />       也就是说两行拼接v来?br /> <br />       当我们设|了自动~进后, 如果前一行羃q了一定距, 按下回R后, 下一行也会保持相同的~进?br />       默认情况下, 我们不能?Insert 模式下直接按 Backspace 删除行首的羃q?br />       如果我们“set backspace=indent”Q?则可以开启这一功能?br /> <br />       上述三项功能Q?你可以根据自q需要, 选择其中一U或几种Q?用逗号分隔各个选项?br />       把这三个选项都选上?br />     *<br /> <br />       set whichwrap=b,s,<,>,[,]<br /> <br />       默认情况下, ?VIM 中当光标Ud一行最左边的时候, 我们l箋按左键,<br />       光标不能回到上一行的最双?同样圎ͼ 光标C一行最双的时候, 我们不能通过l箋按右跛_下一行的最左边?br />       但是Q?通过讄 whichwrap 我们可以对一部分按键开启这功能?如果惛_某一个或几个按键开启到头后自动折向下一行的功能Q?br />       可以把需要开启的键的代号写到 whichwrap 的参数列表中Q?各个键之间用逗号分隔?br />       以下?whichwrap 支持的按键名U列表:<br />           o<br /> <br />             b<br /> <br />             ?Normal ?Visual 模式下按删除(Backspace)键?br />           o<br /> <br />             s<br /> <br />             ?Normal ?Visual 模式下按I格键?br />           o<br /> <br />             h<br /> <br />             ?Normal ?Visual 模式下按 h 键?br />           o<br /> <br />             l<br /> <br />             ?Normal ?Visual 模式下按 l 键?br />           o<br /> <br />             <<br /> <br />             ?Normal ?Visual 模式下按左方向键?br />           o<br /> <br />             ><br /> <br />             ?Normal ?Visual 模式下按x向键?br />           o<br /> <br />             ~<br /> <br />             ?Normal 模式下按 ~ ?{当前字母大小??br />           o<br /> <br />             [<br /> <br />             ?Insert ?Replace 模式下按左方向键?br />           o<br /> <br />             ]<br /> <br />             ?Insert ?Replace 模式下按x向键?br /> <br />     *<br /> <br /> <br />       set encoding=cp936<br /> <br />       讄当前字符~码为简体中文?q里q有一D能够自动判断文件的 encodingQ?br />       自动选择合适的~码?.vimrc 代码Q?感兴的话可以放到自q配置文g中用:<br /> <br /> <br /> <br /> <br /> " Encoding settings<br /> if has("multi_byte")<br />     " Set fileencoding priority<br />    if getfsize(expand("%")) > 0<br />        set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1<br />    else<br />        set fileencodings=cp936,big5,euc-jp,euc-kr,latin1<br />    endif<br /> <br />     " CJK environment detection and corresponding setting<br />    if v:lang =~ "^zh_CN"<br />         " Use cp936 to support GBK, euc-cn == gb2312<br />        set encoding=cp936<br />        set termencoding=cp936<br />        set fileencoding=cp936<br />    elseif v:lang =~ "^zh_TW"<br />         " cp950, big5 or euc-tw<br />         " Are they equal to each other?<br />        set encoding=big5<br />        set termencoding=big5<br />        set fileencoding=big5<br />    elseif v:lang =~ "^ko"<br />         " Copied from someone's dotfile, untested<br />        set encoding=euc-kr<br />        set termencoding=euc-kr<br />        set fileencoding=euc-kr<br />    elseif v:lang =~ "^ja_JP"<br />         " Copied from someone's dotfile, unteste<br />        set encoding=euc-jp<br />        set termencoding=euc-jp<br />        set fileencoding=euc-jp<br />    endif<br />     " Detect UTF-8 locale, and replace CJK setting if needed<br />    if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"<br />        set encoding=utf-8<br />        set termencoding=utf-8<br />        set fileencoding=utf-8<br />    endif<br /> else<br />    echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"<br /> endif<br /> <br /> <br /> <br /> <br /> 2 文本~辑讄<br /> <br /> <br />     *<br /> <br /> <br /> <br />       set sw=4<br /> <br />       自动~进的时候, ~进寸?4 个空根{?br />     *<br /> <br />       set ts=4<br /> <br />       Tab 宽度?4 个字W?br />     *<br /> <br />       set et<br /> <br />       ~辑时将所?Tab 替换为空根{?br /> <br />       该选项只在~辑时将 Tab 替换为空| 如果打开一个已l存在的文gQ?q不会将已有?br />       Tab 替换为空根{?如果希望q行q样的替换的话, 可以使用q条命o“:retab”?br /> <br /> <br /> <br /> <br /> 3 断行讄<br /> <br /> <br />     *<br /> <br /> <br /> <br />       set lbr<br /> <br />       不在单词中间断行?讄了这个选项后, 如果一行文字非帔RQ?无法在一行内昄完的话,<br />       它会在单词与单词间的I白处断开Q?量不会把一个单词分成两截放在两个不同的行里?br />     *<br /> <br />       set fo+=mB<br /> <br />       打开断行模块对亚z语a支持?m 表示允许在两个汉字之间断行, 即汉字之间没有出现I格?br />       B 表示两行合qؓ一行的时候, 汉字与汉字之间不要补I格?该命令支持的更多的选项请参看用h册?br /> <br /> <br /> <br /> <br /> 4 C/C++ ~码讄<br /> <br /> <br />     *<br /> <br /> <br /> <br />       set sm<br /> <br />       昄括号配对情况?打开q个选项后, 当输入后括号 (包括括受中括号、大括号)<br />       的时候, 光标会蟩回前括号片刻Q?然后跛_来, 以此昄括号的配Ҏ(gu)c?br />     *<br /> <br />       set cin<br /> <br />       打开 C/C++ 风格的自动羃q?打开了自动羃q后Q?在编码的时候我们可以?#8220;V”命o选中一D|本后Q?br />       ?#8220;=”这D|本重新调整羃q格式, 在一定程度上起到代码化的作用?br /> <br />       另外Q?打开了自动羃q后Q?在?TERM 下的 vim 的时Q?_脓(chung)代码时常怼出现版式混ؕ的现象?br />       那是因ؓ TERM q不知道你现在正在粘贴代码, 它直?#8220;_脓(chung)”动作?vim<br />       解释为键入, 因此 vim 便按照设|的自动~进格式Z的代码调整了~进?br />       不幸的是Q?_脓(chung)q去的代码中本n已经包含了羃q, 因此便出C版式混ؕ的情c?br />       ?gvim 中就不会出现q个问题Q?因ؓ它能够知道你现在正在_脓(chung)?br /> <br />       知道了这个症状的来由Q?解决Ҏ(gu)也就显而易见了Q?在粘贴的时候把所有自动羃q都关闭Q?br />       _脓(chung)完毕之后再打开?一个个手工关闭自动~进未免q于J琐Q?vim 为我们提供了一个很好用的命令,<br />       只要输入“:set paste”Q?可以关闭所有自动羃q?_脓(chung)完毕后再输入“:set<br />       nopaste”可以重新打开原有的自动羃q设|了?br />     *<br /> <br />       set cino=:0g0t0(sus<br /> <br />       讑֮ C/C++ 风格自动~进的选项Q?q里要介l一下这D代码里用到的选项的含义,<br />       cino 支持的选项q很多, 更多选项L用户手册?br /> <br /> <br /> <br /> <br /> // :0<br /> //<br /> // switch 语句之下?case 语句~进 0 个空|也就是说不羃q,?switch 块^<br /> // 齐,使用q样风格Q?br /> switch (x)<br /> {<br /> case 1:<br />    a = b;<br />    break;<br /> default:<br /> }<br /> <br /> // g0<br /> //<br /> // class、struct {之下的讉K权限控制语句Q如 public、protected、private {,<br /> // 相对 class、struct {所在的块羃q?0 个空|?class {块q齐Q用这L<br /> // 风格Q?br /> class foo<br /> {<br /> public:<br />    int a;<br /> private:<br />    int b;<br /> };<br /> <br /> // t0<br /> //<br /> // 如果函数q回g函数名不在同一行,则返回值羃q?0 个空|也就是说不羃q,?br /> // 下所C:<br /> <br /> // set cino=t4<br />    int<br /> func1()<br /> {<br /> }<br /> <br /> // set cino=t0<br /> int<br /> func()<br /> {<br /> }<br /> <br /> // (sus<br /> //<br /> // 当一Ҏ(gu)可多行时Q其后的行羃q前?sw 指定的距,效果如下Q?br /> int a = (1 + 2 + 3<br />    + 4 + 5 + 6<br />    + 7 + 8) * 9;<br /> <br /> <br /> <br />     *<br /> <br /> <br /> <br /> <br />       set ai<br /> <br />       打开普通文件类型的自动~进?该自动羃q不?cindent Q?但它可以Z~辑?br />       C/C++ 文g提供一定帮助?br /> <br /> <br /> <br /> <br /> 5 其它讄<br /> <br /> <br />     *<br /> <br /> <br /> <br />       set selectmode=<br /> <br />       不?selectmode?br />     *<br /> <br />       set mousemodel=popup<br /> <br />       当右键单ȝ口的时候, 弹出快捷菜单?br />     *<br /> <br />       set keymodel=<br /> <br />       不?#8220;Shift + 方向?#8221;选择文本Q?“Shift + 方向?#8221;代表向指定方向蟩一个单词?br />       如果你喜Ƣ这功能的话, 可以使用“set keymodel=startsel,stopsel”打开它?br />     *<br /> <br />       set selection=inclusive<br /> <br />       指定在选择文本Ӟ 光标所在位|也属于被选中的范围?如果指定 selection=exclusive<br />       的话Q?可能会出现某些文本无法被选中的情c?br />     *<br /> <br />       colo torte<br /> <br />       选择 torte 配色Ҏ(gu)?VIM 里内|了许多关键字上色的配色Ҏ(gu)Q?另外你还可以到网上下载更多配色方案,<br />       或是自己~写?点击“~辑”→“调色?#8221;Q?p列出所有支持的配色Ҏ(gu)?br />       你可以把“调色?#8221;子菜单剪下来Q?然后慢慢选择Q?挑出一个你最喜欢的配色方案来?br /> <br /> <br /> <br /> <br /> 6 囑Ş界面讄<br /> <br /> <br />     *<br /> <br /> <br /> <br />       set nowrap<br /> <br />       指定不折行?如果一行太长, 过屏幕宽度Q?则向双延到屏q外面?br />       如果使用囑Ş界面的话Q?指定不折行视觉效果会好得多?br />     *<br /> <br />       set guioptions+=b<br /> <br />       d水^滚动条?如果你指定了不折行, 那ؓH口d一个水qx动条非常有必要了?br />     *<br /> <br />       set guifont=Courier" 9<br /> <br />       讄囑Ş界面下的字体?你可以点“~辑”→“选择字体”Q?然后在对话框中选出你喜Ƣ的字体与字P<br />       选择完毕后, 先按几下 ESC 认处在 Normal 模式下, 然后输入q条命oQ?#8220;:set<br />       guifont?” 回R?gvim 屏幕最下方会显C出你当前所用的字体的名UC字号?br />       获得的l果写到配置文g里面可以了Q?需要注意一点, 如果字体名称里面含有I格的话Q?br />       在抄的时候需要在所有空格前面加一个斜杠?br /> <br /> <br /> <br /> <br /> 7 条g选择<br /> <br /> <br /> 同一个配色方案, ?gvim 下和字符界面?vim 下效果大相径庭, 滇狐个h的习惯是Q?br /> ?gvim 下?torte 配色Ҏ(gu)Q??vim 下?ron 配色Ҏ(gu)?因此我们有必要针?br /> gvim ?vim q行不同的设|?br /> <br /> <br /> 另外Q?前面我们?gvim 下不使用折行Q?开启水qx动条Q?但在 vim 下,<br /> 是没有滚动条可用的, 因此q是有必要ؓ vim 保留自动折行?br /> <br /> <br /> 条g选择讄的格式如下:<br /> <br /> <br /> <br /> if (has("gui_running"))<br /> " 囑Ş界面下的讄<br />    set nowrap<br />    set guioptions+=b<br />    colo torte<br /> else<br /> " 字符界面下的讄<br />    set wrap<br />    colo ron<br /> endif<br /> <br /> <br /> 以下是滇狐自q .vimrcQ?有许多根据滇狐自q习惯做的讄Q?如果你要在自己机器上使用的话Q?br /> h据你自己的习惯作出相应修攏V?br /> <br /> <br /> 另外Q?q䆾 .vimrc 里面有许多设|是针对插g的, 只有安装了相应插件后Q?br /> q些配置才会起作用?q里有滇狐用的全部插g打包Q?br /> 如果需要的话可以直接下载, Linux 用户该压羃包解压到 $HOME 目录下即可用,<br /> Windows 用户可以压~包解压后, 解压得到的 .vim 文gҎ(gu)名ؓ vimfilesQ?br /> 然后复制?VIM 的安装\径下Q?覆盖原有文g?br /> <br /> <br /> <br /> "=============================================================================<br /> " General settings<br /> "=============================================================================<br /> <br /> set nocp<br /> set ru<br /> set cin<br /> set sm<br /> set ai<br /> set sw=4<br /> set ts=4<br /> set et<br /> set cino=:0g0t0(sus<br /> set lbr<br /> set hls<br /> set backspace=indent,eol,start<br /> set whichwrap=b,s,<,>,[,]<br /> set fo+=mB<br /> set selectmode=<br /> set mousemodel=popup<br /> set keymodel=<br /> set selection=inclusive<br /> set matchpairs+=<:><br /> <br /> " for gdbvim<br /> set noshowcmd<br /> <br /> " Encoding settings<br /> if has("multi_byte")<br />     " Set fileencoding priority<br />    if getfsize(expand("%")) > 0<br />        set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1<br />    else<br />        set fileencodings=cp936,big5,euc-jp,euc-kr,latin1<br />    endif<br /> <br />     " CJK environment detection and corresponding setting<br />    if v:lang =~ "^zh_CN"<br />         " Use cp936 to support GBK, euc-cn == gb2312<br />        set encoding=cp936<br />        set termencoding=cp936<br />        set fileencoding=cp936<br />    elseif v:lang =~ "^zh_TW"<br />         " cp950, big5 or euc-tw<br />         " Are they equal to each other?<br />        set encoding=big5<br />        set termencoding=big5<br />        set fileencoding=big5<br />    elseif v:lang =~ "^ko"<br />         " Copied from someone's dotfile, untested<br />        set encoding=euc-kr<br />        set termencoding=euc-kr<br />        set fileencoding=euc-kr<br />    elseif v:lang =~ "^ja_JP"<br />         " Copied from someone's dotfile, unteste<br />        set encoding=euc-jp<br />        set termencoding=euc-jp<br />        set fileencoding=euc-jp<br />    endif<br />     " Detect UTF-8 locale, and replace CJK setting if needed<br />    if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"<br />        set encoding=utf-8<br />        set termencoding=utf-8<br />        set fileencoding=utf-8<br />    endif<br /> else<br />    echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"<br /> endif<br /> <br /> " Cursor movement<br /> nnoremap <Down> gj<br /> nnoremap <Up> gk<br /> vnoremap <Down> gj<br /> vnoremap <Up> gk<br /> inoremap <Down> <C-o>gj<br /> inoremap <Up> <C-o>gk<br /> <br /> nnoremap <End> g$<br /> nnoremap <Home> g0<br /> vnoremap <End> g$<br /> vnoremap <Home> g0<br /> inoremap <End> <C-o>g$<br /> inoremap <Home> <C-o>g0<br /> <br /> nmap <C-F4> :confirm bd<CR><br /> vmap <C-F4> <ESC>:confirm bd<br /> omap <C-F4> <ESC>:confirm bd<br /> map! <C-F4> <ESC>:confirm bd<br /> <br /> " Move lines<br /> nmap <C-Down> :<C-u>move .+1<CR><br /> nmap <C-Up> :<C-u>move .-2<CR><br /> <br /> imap <C-Down> <C-o>:<C-u>move .+1<CR><br /> imap <C-Up> <C-o>:<C-u>move .-2<CR><br /> <br /> vmap <C-Down> :move '>+1<CR>gv<br /> vmap <C-Up> :move '<-2<CR>gv<br /> <br /> " Toggle line number<br /> nmap <C-F12> :set nu!<CR><br /> imap <C-F12> <C-o>:set nu!<CR><br /> <br /> " Toggle spell check<br /> " For VIM7 only<br /> nmap <C-F11> :set spell!<CR><br /> imap <C-F11> <C-o>:set spell!<CR><br /> <br /> syntax on<br /> if (has("gui_running"))<br />    set nowrap<br />    set guioptions+=b<br />    colo torte<br /> else<br />    set wrap<br />    colo ron<br /> endif<br /> <br /> " ============================================================================<br /> " Plugins settings<br /> " ============================================================================<br /> <br /> " Sketch<br /> command -nargs=0 ToggleSketch call ToggleSketch()<br /> <br /> " WinManager<br /> " let g:winManagerWindowLayout = "FileExplorer"<br /> <br /> " Tlist<br /> let Tlist_Use_Right_Window=1<br /> let Tlist_File_Fold_Auto_Close=1<br /> <br /> " A<br /> let g:alternateNoDefaultAlternate=1<br /> " VIM7 doesn't support this.<br /> "let g:alternateExtensions_{"aspx"} = "aspx.cs,aspx.CS"<br /> "let g:alternateExtensions_{"aspx.cs"} = "aspx,ASPX"<br /> <br /> " LateXSuite<br /> filetype plugin on<br /> set grepprg=grep" -nH" $*<br /> <br /> " Viki<br /> let g:vikiNameSuffix=".viki"<br /> augr viki<br /> au!<br /> au BufRead,BufNewFile *.viki set filetype=viki<br /> augr END<br /> <br /> "=============================================================================<br /> " Functions<br /> "=============================================================================<br /> <br /> function TextWork()<br />    set nocin<br />    set nosm<br />    set noai<br />    set tw=78<br />    set sw=8<br />    set ts=8<br />    set nowrap<br /> endfunction<br /> <br /> function NoTextWork()<br />    set cin<br />    set sm<br />    set ai<br />    set tw=0<br />    set sw=4<br />    set ts=4<br />    if (!has("gui_running"))<br />        set wrap<br />    endif<br /> endfunction<br /> <br /> function CodeWork()<br />    call NoTextWork()<br />    WManager<br />    Tlist<br /> endfunction<br /> <br /> function TimeStamp()<br />    let curposn= SaveWinPosn()<br />    %s/"$Date: .*"$/"=strftime("$Date: %Y-%m-%d %H:%M:%S$")/ge<br />    %s/Last Change: .*$/"=strftime("Last Change: %Y-%m-%d %H:%M:%S")/ge<br />    %s/Last Modified: .*$/"=strftime("Last Modified: %Y-%m-%d %H:%M:%S")/ge<br />     " Replace once and never update.<br />    %s/Created: *$/"=strftime("Created: %Y-%m-%d %H:%M:%S")/ge<br />    call RestoreWinPosn(curposn)<br /> endfunction<br /> <br /> function AutoTimeStamp()<br />    augr tagdate<br />    au!<br />    au BufWritePre,FileWritePre * call TimeStamp()<br />    augr END<br /> endfunction<br /> call AutoTimeStamp()<br /> <br /> function NoAutoTimeStamp()<br />    augr tagdate<br />    au!<br />    augr END<br /> endfunction<br /> <br /> "=============================================================================<br /> " Commands<br /> "=============================================================================<br /> <br /> command -nargs=0 TextWork call TextWork()<br /> command -nargs=0 NoTextWork call NoTextWork()<br /> command -nargs=0 CodeWork call CodeWork()<br /> command -nargs=0 TimeStamp call TimeStamp()<br /> command -nargs=0 AutoTimeStamp call AutoTimeStamp()<br /> command -nargs=0 NoAutoTimeStamp call NoAutoTimeStamp()<br /> <br /> "=============================================================================<br /> " Platform dependent settings<br /> "=============================================================================<br /> <br /> "-----------------------------------------------------------------------------<br /> " Common<br /> "-----------------------------------------------------------------------------<br /> <br /> " Calender<br /> let g:calendar_diary="/home/edward/document/diary"<br /> <br /> " Spell Check<br /> " VIM7 supports built-in spell check.<br /> "function SpellCheck()<br /> "    !aspell --lang=en -c %<br /> "endfunction<br /> "command -nargs=0 SpellCheck call SpellCheck()<br /> <br /> " Mail Template<br /> function MailWork()<br />    0r ~/document/text/mailtemp.txt<br />    %s/%%date%%/"=strftime("%Y-%m-%d")/ge<br />    %s/%%cursor%%//ge<br />    call TextWork()<br /> endfunction<br /> command -nargs=0 MailWork call MailWork()<br /> <br /> " Use kittiemake as the default compiler<br /> function Kittie()<br />    set makeprg=kittiemake<br /> endfunction<br /> command -nargs=0 Kittie call Kittie()<br /> <br /> " Don't use kittiemake as the default compiler<br /> function NoKittie()<br />    set makeprg=make<br /> endfunction<br /> command -nargs=0 NoKittie call NoKittie()<br /> <br /> "-----------------------------------------------------------------------------<br /> " Win32<br /> "-----------------------------------------------------------------------------<br /> <br /> "if (has("gui_running"))<br /> "    set guifont=新宋?h9:cGB2312<br /> "endif<br /> <br /> " For LaTeX Suite<br /> "let g:Tex_CompileRule_dvi="latex -src-specials -interaction=nonstopmode $*"<br /> "set shellslash<br /> <br /> " For tee<br /> "set shellpipe=2>&1"|" tee<br /> <br /> " VimTweak<br /> "if (has("gui_running"))<br /> "    command -nargs=1 SetAlpha call libcallnr("vimtweak.dll", <br /> "        ""SetAlpha", )<br /> "    command -nargs=0 TopMost call libcallnr("vimtweak.dll",<br /> "        ""EnableTopMost", 1)<br /> "    command -nargs=0 NoTopMost call libcallnr("vimtweak.dll", <br /> "        ""EnableTopMost", 0)<br /> "endif<br /> <br /> "-----------------------------------------------------------------------------<br /> " Linux<br /> "-----------------------------------------------------------------------------<br /> <br /> "For LaTeX Suite<br /> "function RemoteLaTeX()<br /> "    let g:Tex_ViewRule_dvi="xdvi -editor 'gvim --servername """<br /> "        ".expand("%:p").""" --remote-silent'"<br /> "    augr remotelatex<br /> "    au!<br /> "    augr END<br /> "endfunction<br /> <br /> "augr remotelatex<br /> "au!<br /> "au BufRead * call RemoteLaTeX()<br /> "augr END<br /> <br /> let g:Tex_CompileRule_dvi<br />     "="latex -src-specials -interaction=nonstopmode $*"<br /> let g:Tex_ViewRule_dvi<br />     "="xdvi -editor 'gvim --servername latex-suite --remote-silent'"<br /> <br /> if (has("gui_running"))<br />    set guifont=Bitstream" Vera" Sans" Mono" 9<br />    source $VIMRUNTIME/delmenu.vim<br />    source $VIMRUNTIME/menu.vim<br /> endif<br /> <br /> Posted by 1+1=2 at 10:00 PM 0 comments  <br /> <br /> Labels: vim<br /> <br /> Monday, October 09, 2006<br /> 标题: vim + ctags + taglist + cscope + cppcomplete + global 使用初探(zz)<br /> <br /> ׃本h比较喜欢在终端状态下的vimQ所以gvim下的扩展使用的不多。这里介l的也是我简单的使用以上扩展的一点点体会。请大家指正?emacs 不会用,也没有比较过拉?br /> <br /> <br /> <br /> 1、大体感觉,Q因Z用时间不长,不全面)<br /> M使用的感觉定位查扄型定义基本可以用Q但自动补全cd斚w׃ctags的功能有限,感觉在大工程Ӟ不一定很好用?br /> <br /> 大型E序一定要global的参与,它的分析比较全面Q但在vim中的提示信息有限?br /> <br /> taglist _ֹQ需要ctags的支?Q直接可以在左边列出函数列表Q全局参数列表。(可以排序Q?br /> <br /> cscope 比较强大Q可以对函数以及部分cd定义q行跌{Q但有些BUGQ好像在某些条g下无法正找到分析枚丄定义?br /> <br /> cppcomplete 需要ctags的支撑,可以补全cd或者函数名Q可不是普通Ctrl+P/N的那U)<br /> <br /> global 新版本可以嵌入vim使用Q提供比较完整解析和cd索引Q和cscope比,E微差些的就是对cd引用的打印列表中没有标识q个引用在什么函Cq行的? 其实我的感觉global可能不是为vim所生,它的主要目的是用html的方式进行表辄关的兌关系和烦引,使用h感觉没有cscope的那么脓(chung) 切?br /> <br /> <br /> <br /> 2、相关的扩展的安?br /> 代码:<br /> <br /> apt-get install exuberant-ctags cscope global<br /> <br /> cppcomplete ?taglist 要到www.vim.org的扩展列表中下蝲?br /> <br /> taglist 的下载地址:<br /> http://www.vim.org/scripts/script.php?script_id=273<br /> cppcomplete 的下载地址:<br /> http://www.vim.org/scripts/script.php?script_id=527<br /> <br /> 然后?建立目录<br /> 代码:<br /> <br /> $HOME/.vim/plugin<br /> <br /> <br /> 下载的cppcomplete.vim ?taglist.vim拯?HOME/.vim/plugin中?br /> 安装了global后,最?.8.6 以上版本有带vim的扩展,它也拷贝到 $HOME/.vim/plugin<br /> <br /> debian sid 版本global安装后扩展文件在<br /> 代码:<br /> <br /> /usr/share/doc/global/examples/gtags.vim.gz<br /> <br /> 需要拷贝到$HOME/.vim/plugin后解压,解压Ҏ(gu)Q?br /> 代码:<br /> <br /> gzip -d gtags.vim.gz<br /> <br /> <br /> <br /> 3、用这些工?br /> 1Q准备工作,先修改一?HOME/.vimrc文g<br /> <br /> Z更好的用cscopeh加如下内容,q样Ctrl-]的蟩转将由cscope的tagsq行分析?br /> 代码:<br /> <br /> if has("cscope")<br /> set csprg=/usr/bin/cscope<br /> set csto=0<br /> set cst<br /> set nocsverb<br /> " add any database in current directory<br /> if filereadable("cscope.out")<br /> cs add cscope.out<br /> " else add database pointed to by environment<br /> elseif $CSCOPE_DB != ""<br /> cs add $CSCOPE_DB<br /> endif<br /> set csverb<br /> set cscopetag<br /> set cscopequickfix=s-,g-,c-,d-,t-,e-,f-,i-<br /> endif<br /> <br /> <br /> 2Q用cscope<br /> cscope的tag生成最单的Ҏ(gu)是:<br /> 在你的开发工E的最上层目录执行cscope-indexerQ它会遍历下面的所有目录,生成两个文gQ一个是cscope.filesQ这个文件记录需要生成tags的文件名Q可以手工修改,另一个是cscope格式的tags文gcscope.out?br /> <br /> 完成后,你在生成了cscope.out的目录打开工程的Q意文Ӟ可以用Ctrl-]跌{查找cd定义了?br /> 代码:<br /> <br /> cs f s xxxx 查找xxxx出现的地方,它能详细列出哪些文g的哪行的哪个函数引用Q以及该行的内容Q比较不错?:)<br /> <br /> <br /> 它的所有命令的使用请参考:<br /> 代码:<br /> <br /> help cscope<br /> <br /> <br /> 3Q用taglist<br /> taglist的功能是x生成当前文g的函数列表和全局变量列表Q便于烦引?br /> 在vim中命令模式下使用<br /> Tlist 打开或者关闭当前文件的索引Q?br /> TlistSync 立即在打开的烦引窗口中定位当前的光标所在位|属于哪个函数或者结构定义中?br /> q有其他命oQ请参考它的帮助文件?br /> <br /> 4Qctags的?br /> 其实cscope是用来替代ctags功能的,ctags的应用广泛,q有其他很多的Y件依赖它?br /> <br /> 例如要生成cppcomplete需要的tags文g的话Q需要运行下面的命oQ?br /> 代码:<br /> <br /> ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * -L cscope.files<br /> <br /> 注意Q我在最后用了参数"-L cscope.files" q仅仅是借用拉cscope生成的文件烦引来帮助ctagsL询相兛_E文件生成tags?br /> <br /> 5Q用cppcomplete<br /> cppcomplete的用我只是单的发现它可以根据上q方法生成的tags文g来自动补全类型成员?br /> 使用很简单,是在你需要补全类型成员时Q按F8键就可以拉。它一般第一ơ用时Q需要让你确认是使用已有的tags文gq是再生成一ơ。一般我们自己控制生成tags文g的时机,它就使用p拉?br /> 但它也受到ctags的分析能力比较差的限Ӟ可能不是每次都能帮到你?br /> <br /> 6Q用global<br /> 在工E的最上层目录执行命oQ?br /> gtags<br /> {待它完成所有需要的global自己格式的tags的生?br /> 生成完后Q需要的是在生成tags的目录打开你的工程的Q意文Ӟ用如下命令查询相关类型引用和兌关系Q?br /> 代码:<br /> <br /> Gtags xxxx 查找xxxx的定?br /> Gtags -r xxxx 查找xxxx的引?br /> Gtags -s xxxx 查找xxxx出现的地?br /> <br /> <br /> 它的提示信息很有显,不如cscope更直观,但对大型分析的比较完整?br /> 有时它无法正常分析的cd 可以试试用带-s 的参数的方式找找cd定义。再不行Q我׃清楚?br /> <br /> <br /> 4、草草的收尾<br /> 我用它们也是一点一点的摸烦的没有系l的完整的用过Q也受限于本人的Linux使用l验和工作关p,所以非常简单的使用体会l大家一个参考,希望能有所帮助。更希望后来者能不断补充相关的用体会。大安需要交提高,呵呵?br /> <br /> Posted by 1+1=2 at 4:47 AM 0 comments  <br /> <br /> Labels: vim<br /> <br /> Ctags with Vim<br /> <br /> ?? Ctags with Vim<br /> 发信? BBS 水木清华?(Mon May 24 08:42:57 2004), 站内<br /> <br /> <br /> usage: $ctags [-R] inc_dir/*.h include_dir/*.hpp src_dir/*.c<br /> example: $ ctags -R `find . -name "*.c"` `find . -name "*.h"`<br /> su; cd /usr/include; ctags --c-types=+p+x -sort -R<br /> 生成非常完整Q巨大而有序的tags<br /> <br /> 各用户在 ~/.vimrc中添加set tags= ./tags, tags, /usr/include/tags卛_使用<br /> [?]+p开关会跛_变量声明的地方而不是它的实玎ͼ所以还是采用缺省|<br /> 不要--c-typesq个选项Q或者只?x(推荐)Q其它无所谓?br /> q有/usr/includeq不?usr/src/linux/include的一个符号链接,<br /> 所以如果是看内怸一些变量的定义的话应该?usr/src/linux上面用ctags<br /> <br /> ctags览代码 (有的命o说明可能不准?<br /> :set tags=/Dir/tags 讄需要的tags文gQ?br /> 可以多个:set tags=/dir1/tags, /dir2/tags<br /> :tag xxx 转到满查找代码的定义处Q简写ؓ :ta xxx<br /> :tag /^xxx 转到以xxxv始的tag?br /> other find tags :stag/ptag/ts/tj/pts/ptj /<br /> :tag /xxx 列出所有包含xxx的tag<br /> :tag 转到前一个浏览过的tag?br /> vi -t xxx 直接定位到xxx的定义处<br /> :tn / :tp 转到?上一个tag代码处,可以使用:5tn的Ş?br /> :tr / :tl 转到?tag代码?br /> , 转到光标所在函数或者变量的定义?g+左键 (GUI) [?]<br /> , 回到跌{前的代码?适用于Q何蟩? g+右键 (GUI)<br /> :tags 列出当前tag栈的内容<br /> :ts xxx 列出所有匹配的代码及其所属文Ӟq提供选择览<br /> :sts xxx 列出匚w处提供选择在新H口中打开文g<br /> :tj xxx cM :ts xxxQ当只有一个匹配时直接转到代码?br /> g] ?:ts xxx 功能相同(tag为光标下的标识符)<br /> g] {h(hun)?:sts xxx<br /> g {h(hun)?:tj xxx<br /> :pt? xxx 提供上述命o(?为jQs)的预览功能,退出窗?:q!<br /> :t?! xxx 当前文g的修改被丢弃转到目标文g?br /> } 在预览窗口中昄当前光标下的tag<br /> :ptl / ptf / ptn /ptp cM?tlQtfQtnQtp<br /> :che 察看没有扑ֈ的头文g(checkpath)<br /> makeprg :set makeprg=gcc" yourfile.c 为在U编译设|?br /> :make 在线~译<br /> :cn / :cN Ud到编译的 ??一个error?br /> :stag xxx 查找xxx的声明处q在新窗口中打开<br /> :ta {ident} 跌{到标识符定义?br /> gd 跌{到局部标识符定义?br /> <br /> [?] Ctrl-]y是telnet的终端符Q如果远E编辑文件可能会遇到一些问题,<br /> 请参考在U帮?h ^]。多数telnet都允怋用命令telnet -E hostname来打开<br /> 或关闭该脱字W,或者用telnet -e escape hostname来指定另外一个脱字符<br /> 来代替^]Q请man telnet参看-E -e的帮助? <img src ="http://m.tkk7.com/conans/aggbug/314661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2010-03-05 23:02 <a href="http://m.tkk7.com/conans/articles/314661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VIM讄代码折叠http://m.tkk7.com/conans/articles/297732.htmlCONANCONANSat, 10 Oct 2009 16:08:00 GMThttp://m.tkk7.com/conans/articles/297732.html1. 折叠方式
可用选项 'foldmethod' 来设定折叠方式:set fdm=*****?br /> ?6 U方法来选定折叠Q?br />           manual           手工定义折叠
          indent             更多的羃q表C更高别的折叠
          expr                用表辑ּ来定义折?br />           syntax             用语法高亮来定义折叠
          diff                  Ҏ(gu)有更改的文本q行折叠
          marker            Ҏ(gu)中的标志折叠

注意Q每一U折叠方式不兼容Q如不能即用expr又用marker方式Q我主要轮流使用indent和marker方式q行折叠?/p>

使用Ӟ用:set fdm=marker 命o来设|成marker折叠方式Qfdm是foldmethod的羃写)?br /> 要每次打开vim时折叠都生效Q则?vimrc文g中添加设|,如添加:set fdm=syntaxQ就像添加其它的初始化设|一栗?/p>

2. 折叠命o
选取了折叠方式后Q我们就可以Ҏ(gu)些代码实施我们需要的折叠了,׃我用indent和markerE微多一些,故以它们的用ؓ例:
如果使用了indent方式Qvim会自动的对大括号的中间部分进行折叠,我们可以直接使用q些现成的折叠成果?br /> 在可折叠处(大括号中_Q?br /> zc      折叠
zC     Ҏ(gu)在范围内所有嵌套的折叠点进行折?
zo      展开折叠
zO     Ҏ(gu)在范围内所有嵌套的折叠点展开
[z       到当前打开的折叠的开始处?br /> ]z       到当前打开的折叠的末尾处?br /> zj       向下Ud。到达下一个折叠的开始处。关闭的折叠也被计入?br /> zk      向上Ud到前一折叠的结束处。关闭的折叠也被计入?/font>

当用marker方式Ӟ需要用标计来标识代码的折叠Q系l默认是{{{和}}}Q最好不要改动之Q)
我们可以使用下面的命令来创徏和删除折叠:
zf      创徏折叠Q比如在marker方式下:
                   zf56GQ创Z当前行v?6行的代码折叠Q?br />                    10zf?0zf+或zf10↓Q创Z当前行v到后10行的代码折叠?br />                    10zf-或zf10↑Q创Z当前行vC?0行的代码折叠?br />                    在括号处zf%Q创Z当前行v到对应的匚w的括号上去(Q)Q{}Q[]Q?lt;>{)?br /> zd      删除 (delete) 在光标下的折叠。仅?'foldmethod' 设ؓ "manual" ?"marker" 时有效?br /> zD     循环删除 (Delete) 光标下的折叠Q即嵌套删除折叠?br />           仅当 'foldmethod' 设ؓ "manual" ?"marker" 时有效?br /> zE     除去 (Eliminate) H口?#8220;所?#8221;的折叠?br />           仅当 'foldmethod' 设ؓ "manual" ?"marker" 时有效?/font>



CONAN 2009-10-11 00:08 发表评论
]]>
使用VIM开发Y仉?Q开启文件类型检?/title><link>http://m.tkk7.com/conans/articles/264533.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Wed, 08 Apr 2009 13:49:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/264533.html</guid><description><![CDATA[<a target="_blank"> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">本节所用命令的帮助入口Q?</span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">:help filetype<br /> :help setfiletype<br /> :help modeline<br /> :help 'modelines'<br /> :help 'shiftwidth'<br /> :help 'expandtab'<br /> :help autocmd</span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">打开文gcd功能很单,在你的vimrc中加入下面一句话可以了Q?/span></span></span></span></p> <p><br /> <span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">filetype plugin indent on</span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">如果你用的是VIM自带的示例vimrcQ那么你已经打开了文件类型检功能。或者,你也可以输入“:filetype”命o查看你的文gcd功能有没有打开?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">q条命oI竟做了什么呢Q我们在下面详细介绍?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">其实Q上面这一条命令,可以分ؓ三条命oQ?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">filetype on<br /> filetype plugin on<br /> filetype indent on<br /> 我们逐条介绍q三条命令?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">“filetype on”命o打开文gcd功能,它相当于文gcd功能的开兟뀂在执行“filetype on”命oӞVIM实际上执行的?VIMRUNTIME/filetype.vim脚本。这个脚本用了自动命o(autocmd)来根据文件名来判断文件的cdQ如果无法根据文件名来判断出文gcdQ它又会调用$VIMRUNTIME/scripts.vim来根据文件的内容讄文gcd。有兴趣可以M下这两个脚本Q以获得更深的认识?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">在上q步骤完成后Q绝大多数已知类型的文gQ都能被正确出文gcd。如果文件的cd未能被正的出来,需要手工设|文件类型,q可以通过“set filetype”完成Q例如,如果你把main.c改名为main.c.bak1Q那么它?yu)无法被正确出文gcd。通过下面的Ex命oQ就可以把它的文件类型设为cQ?/span></span></span></span></p> <p><br /> <span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">:set filetype=c或者,你可以在文g中加入一个模式行Q来指明q个文g的类型。VIM在打开文gӞ会在文g首、尾的若q行Q行数由'modelines'选项军_Q缺省ؓ5行)具有VIMҎ(gu)标记的行Q称为模式行。如果检到Q就使用模式行中定义的选项|来修改该~冲区的选项。你可以留意一下VIM的帮助页Q每个文件的最后一行都是这L模式行?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">针对上例Q我们可以在main.c.bak1的第一行或最后一行加上下面的内容Q要指定q个文g的类型:</span></span></span></span></p> <p><br /> <span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">/* vim: ft=c */q句话?#8220;/* */”注释h了,因此不会影响~译?#8220;ft”?#8220;filetype”的羃写,VIM中很多命令、选项都有~写形式Q以方便使用。注?#8220;/*”?#8220;vim:”间的I格。在“*/”?#8220;ft=c”_也需要有臛_一个空|q是模式行格式的要求Q更多信息参?#8220;:help modeline”?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">出文g的类型有什么作用呢Q我们知道,不同cd的文件具有不同的格式QVIM通过Ҏ(gu)件类型的识别Q可以ؓ不同cd的文Ӟ讄不同的选项倹{定义不同键l定{。例如,对于ccd的文Ӟ它就和bash脚本有不同的注释格式、不同的~进格式、不同的关键字等。VIM在设|文件类型后Q会触发FileType事gQ执行FileType相关的自动命令,对不同类型的文g区别对待?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">上面提到?#8220;filetype plugin on”Q允许VIM加蝲文gcd插g。当q个选项打开ӞVIM会根据检到的文件类型,在runtimepath中搜索该cd的所有插Ӟq执行它们?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">“filetype plugin on”命oQ实际上是执?VIMRUNTIME/ftplugin.vim脚本Q有兴趣可以M下这个脚本。这个脚本中会设|自动命令,在runtimepath中搜索文件类型插件?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">runtimepath的定义在不同的系l上不一P对UNIXpȝ来说Q这些\径包括:$HOME/.vim?VIM/vimfiles?VIMRUNTIME?VIM/vimfiles/after?HOME/.vim/after?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">举一个例子,当我们对一个ccd的文件打开“filetype plugin on”Ӟ它会在上q这几个目录的ftplugin子目录中搜烦所有名为c.vim、c_*.vimQ和c/*.vim的脚本,q执行它们。在搜烦Ӟ它按目录在runtimepath中出现的序q行搜烦。缺省的Q它会执?VIMRUNTIME/ftplugin/c.vimQ在q个脚本里,会设|c语言的注释格式、智能补全函数等{?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">“filetype indent on”允许VIMZ同类型的文g定义不同的羃q格式。这条命令也是通过一个脚本来完成加蝲Q?VIMRUNTIME/indent.vim。和“filetype plugin on”cMQ它也通过讄自动命oQ在runtimepath的indent子目录中搜烦~进讄。对ccd的文件来_它只是打开了cindent选项?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">我们了解了文件类型检的用途及它是如何工作的之后,可以根据自q需要,来对特定的文件类型进行特D设|?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">例如Q我们在上篇文章中介l过lookupfile插gQ在它打开一个缓冲区Ӟ会把~冲区的filetype讄为lookupfileQ我们可以利用这一点,在这个缓冲区里进行一些特D的配置。例如,我们创徏一个名为lookupfile.vim的文Ӟ其内容ؓQ?/span></span></span></span></p> <p><br /> <span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">" close lookupfile window by two <Esc><br /> nnoremap <buffer> <Esc><Esc> <C-W>q<br /> inoremap <buffer> <Esc><Esc> <Esc><C-W>q它定义了两个局部于~冲区的键绑定,无论在normal模式q是插入模式Q只要连按两ơESCQ就关闭当前~冲区?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">把这个文件保存到你的runtimepath所指向M目录的ftplugin子目录中Q一般是攑֜~/.vim/ftplugin目录中)。你在下ơ打开lookupfileH口Ӟ试试q按两次ESCQ是不是lookupfileH口关闭了Q这栯|,非常适合VIM中按ESC取消命o的习惯,效率也高?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">如果你对VIM~省文gcd插g的设|不太满意,那么可以把这个全局插g拯?HOME/.vim/plugin目录中,然后更改其中的设|。你可以留意一下VIM~省的文件类型插Ӟ它们的头部都有这L代码Q?/span></span></span></span></p> <p><br /> <span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">" Only do this when not done yet for this buffer<br /> if exists("b:did_ftplugin")<br />   finish<br /> endifq类gC语言头文件中?#8220;#ifndef XXX | #define XXX”的语句,可以防止该插件被执行多次。因此,把这个插件拷贝到$HOME/.vim/plugin中(q个目录在runtimepath中排在最前面Q,它将先于VIM的缺省插件被加蝲Q而它加蝲后,VIM的缺省文件类型插件就不会再被加蝲了。这pC我们修改讄的目的?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">不过我们通常不用q种Ҏ(gu)。如果这样做Q一旦VIM的缺省插件做了改变,我们也要更新我们改过的插件才行。我们可以在载入全局插g以后否决一些设|。在Unix 上,我们可以把我们的讄攑֜~/.vim/after/ftplugin/目录中,q个目录中的脚本会在VIM的缺省脚本后执行。这样就可以修改配置Q或增加我们自己的定义?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">举个例子Q在多h一起开发项目时Qؓ了代码风格量保持一_一般不允许在代码用TABW,而以4个空g之。我们可以编辑一个文Ӟ包含下面的内容:</span></span></span></span></p> <p><br /> <span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">set shiftwidth=4<br /> set expandtab把这个文件保存ؓ~/.vim/after/ftplugin/c.vim。这P每次在编辑c文gӞ它的自动~进?个空|当你在插入模式下使用CTRL-D、CTRL-T~进Ӟ它也会调?个空格的~进Q当你按TAB键时Q它?yu)会插?个空?#8230;…如果你想上面的设|对h文g也生效的话,需要把它另存一份:~/.vim/after/ftplugin/cpp.vimQ因为h文g的文件类型被设ؓcpp?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">我们知道QVIM在设|文件类型时Q会触发FileType自动命oQ因此,上面的例子可以用下面的自动命令来实现Q?/span></span></span></span></p> <p><br /> <span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">autocmd FileType c,cpp set shiftwidth=4 | set expandtab把这个命令放在你的vimrc中,可以起到和上例同L效果?/span></span></span></span></p> <p><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">来自Q?/span></span></span></span></a><a ><span><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">http://blog.csdn.net/easwy/archive/2007/03/20/1534580.aspx</span></span></span></span></a></p> <img src ="http://m.tkk7.com/conans/aggbug/264533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2009-04-08 21:49 <a href="http://m.tkk7.com/conans/articles/264533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用VIM开发Y仉?Qlookupfile插ghttp://m.tkk7.com/conans/articles/264532.htmlCONANCONANWed, 08 Apr 2009 13:48:00 GMThttp://m.tkk7.com/conans/articles/264532.html本节所用命令的帮助入口Q?/p>


:help lookupfile

前面我们讲过通过”:find”命o打开指定的文Ӟ不过使用”:find”命oq不是非常的方便Q一是如果项目比较大、文件比较多Qfind查找h很慢Q二是必输入全部的文g名,不能使用正规表达式查找?/p>

我们也介l过VIM提供的文件浏览插Ӟ你可以在览器中Ҏ(gu)目录L找,但这U方式在览目录时比较方便,查找一个已知名字(或知道部分名字)的文件效率就比较低了?/p>

相比之下Q在source insight中查找文仉常简单,只要输入部分的文件名Q就可以扑ֈW合条g的文件?/p>

我一直被q个问题所困扰Q直到有一天,?a >www.vim.org上发C一个非常出色的插gQ才d解决了查找文件效率低下的问题Q它的功能毫不逊于source insight。在l该插g投票Ӟ我选择?#8220;Life Changing”。是的,它改变了我的生活Q?/p>

q个插g的名字是QlookupfileQ?/p>

Lookupfile插g可以在下面的链接下蝲Q?/p>

    http://www.vim.org/scripts/script.php?script_id=1581

它用VIM 7.0提供的插入模式下的下拉菜单补全功能,因此只能在VIM 7.0及以上版本中使用?/p>

下蝲该插件后Q把它解压到你的~/.vim目录中,完成了安装。然后在VIM中执?#8221;:helptags ~/.vim/doc”命oQ生成help文g索引Q然后就可以使用”:help lookupfile”命o查看lookupfile插g的帮助文件了?/p>

注:windows用户需要把q个插g解压在你?VIM/vimfiles?HOME/vimfiles目录?/p>

Lookupfile插gq需要最新的genutils支持Q因此,需要下载genutilsQ?/p>

    http://www.vim.org/scripts/script.php?script_id=197

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

现在我们介绍lookupfile插g。虽然名字ؓlookupfileQ其实这个插件它不仅能用来查找文Ӟq可以在打开的缓冲区中查找,按目录查找,{等?/p>

[目文g查找]

Lookupfile在查找文件时Q需要用tag文g。它可以使用前面文章中提到的使用“ctags”命o生成的tag文gQ不q查找效率会比较低。因此我们会专门为它生成一个包含项目中所有文件名的tag文g?/p>

我编写了下面的shell脚本Qؓvim70的源代码Q生成一个文件名tag文g?/p>


#!/bin/sh

# generate tag file for lookupfile plugin
echo -e "!_TAG_FILE_SORTED\t2\t/2=foldcase/" > filenametags
find . -not -regex '.*\.\(png\|gif\)' -type f -printf "%f\t%p\t1\n" | \
        sort -f >> filenametags

回想一下我们在“使用tag文g和taglist插g (一)”一文中介绍的tag文g的格式。再对照脚本命o来看Q?/p>

- echo命o用来生成filenametags文g中的“!_TAG_FILE_SORTED”行,表明此tag文g是经q排序的?/p>

- find命o用来查找所有类型ؓ普通文Ӟ文g后缀名不?png?gif的文Ӟ扑ֈ的文件按“文g名\t文g路径\t1”的格式输出出来?/p>

- sort命o则把find命o的输出重新排序,然后写入filenametags文g?/p>

在~/src/vim70/目录下运行该脚本Q会生成一个名为filenametags的文Ӟ包含了vim70目录下的所有文件的名字及其所在目录?/p>

现在我们需要让lookupfile插g知道到哪L文g名tag文g。我们假定VIM当前工作目录为~/src/vim70/Q执行下面的命oQ?/p>


:let g:LookupFile_TagExpr = '"./filenametags"'

注:如果不设定g:LookupFile_TagExpr的|那么lookupfile插g会以tags选项定义的文件作为它的tag文g?/p>

现在我们可以用lookupfile来打开文g了,?#8220;<F5>”或输?#8220;: LookupFile”在当前窗口上Ҏ(gu)开一个lookupfile窗口,开始输入文件名Q至?个字W)Q随着你的输入Q符合条件的文g列在下拉列表中了。文件名可以使用VIM的正则表辑ּQ这大大方便了文件的查找。你可以?#8220;CTRL-N”?#8220;CTRL-P”Q或者用上、下光标键)来在下拉列表中选择你所需的文件。选中文g后,按回车,可以前一个窗口中打开此文件?/p>

下图是用lookupfile插g查找文g的一个例子:


在屏q最上方的窗口就是lookupfileH口Q在q个H口中输?#8220;gui.*x11”几个字符Q查扑ֈ6个匹配文Ӟ使用CTRL-N选中gui_x11.c文gQ然后按回RQ就会在前一个窗口中打开src/gui_x11.c文gQlookupfileH口也自动关闭了。是不是非常方便Q?/p>

[~冲区查找]

在开发过E中Q我l常会同时打开数十甚至上百个文件。即使是使用BufExplorer插gQ想在这么多buffer中切换到自己所要的文gQ也不是件容易的事?/p>

Lookupfile插g提供了一个按~冲区名字查扄冲区的方式,只要输入~冲区的名字Q可以是正则表达式)Q它?yu)可以把匚w的缓冲区列在下拉列表中,同时q会列出该缓冲区内文件的路径Q当你的buffer中有多个同名文gӞq可以帮你迅速找C惌的文件?/p>

使用“:LUBufs”命o开始在~冲Z查找Q输入缓冲区的名字,在你输入的过E中Q符合条件的~冲区就昄在下拉列表中了,选中所需~冲区后Q按回RQ就会切换你所选的~冲区。下图是一个示例:


[览目录]

Lookupfile插gq提供了目录览的功能,使用“:LUWalk”打开lookupfileH口后,可以输入目录,lookupfile会在下拉列表中列个目录中的所有子目录及文件供选择Q如果选择了目录,׃昄q个目录下的子目录和文gQ如果选择了文Ӟ在VIM中打开q个文g?/p>

下图是用LUWalk的一个抓图:


Lookupfile插gq提供了LUPath和LUArgs两个功能Q这两个功能我用的不多,׃在这里介l了。感兴趣的朋友读一下lookupfile的帮助页?/p>

[Lookupfile配置]

Lookupfile插g提供了一些配|选项Q通过调整q些配置选项Q它更W合你的工作习惯。下面是我的vimrc中关于lookupfile的设|,供参考:


""""""""""""""""""""""""""""""
" lookupfile setting
""""""""""""""""""""""""""""""
let g:LookupFile_MinPatLength = 2               "最输?个字W才开始查?br /> let g:LookupFile_PreserveLastPattern = 0        "不保存上ơ查扄字符?br /> let g:LookupFile_PreservePatternHistory = 1     "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1          "回R打开W一个匹配项?br /> let g:LookupFile_AllowNewFiles = 0              "不允许创Z存在的文?br /> if filereadable("./filenametags")                "讄tag文g的名?br />     let g:LookupFile_TagExpr = '"./filenametags"'
endif
nmap <silent> <leader>lk <Plug>LookupFile<cr>   "映射LookupFile?lk
nmap <silent> <leader>ll :LUBufs<cr>            "映射LUBufs?ll
nmap <silent> <leader>lw :LUWalk<cr>            "映射LUWalk?lw

有了上面的定义,当我输入”,lk”Ӟ׃在tag文g中查找指定的文g名;当输?#8221;,ll”Ӟ׃在当前已打开的buffer中查找指定名字的bufferQ当输入”,lw”Ӟ׃在指定目录结构中查找?/p>

另外Q我q在目相关的配|文件vim70sx.vimQ参考本pdW?文章)中加入了lookupfile所使用的tag文g的信息:


let g:LookupFile_TagExpr = '"filenametags"'

q样Q在恢复前次会话时就llookupfile插g定义了tag文g?/p>

在用lookupfile插g查找文gӞ是区分文件名的大写的,如果惌行忽略大写的匹配,可以使用VIM忽略大小写的正则表达式,卛_文g名的前面加上“\c”字符。D个例子,当你输入“\cab.c”Ӟ你可能会得到“ab.c”?#8220;Ab.c”?#8220;AB.c”……?/p>

注:如果惛_快lookupfile忽略大小写查扄速度Q在生成文g名tag文gӞ使用混合大小写排序。这在本pd的第5文章中有所提及?/p>

通常情况下我都进行忽略大写的查找,每次都输?#8220;\c”很麻烦。没关系Qlookupfile插g提供了扩展功能,把下面这D代码加入你的vimrc中,可以每ơ在查找文g旉忽略大小写查找了Q?/p>


" lookup file with ignore case
function! LookupFile_IgnoreCaseFunc(pattern)
    let _tags = &tags
    try
        let &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 &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'

有时在LUBufs时也需要忽略缓冲区名字的大写Q我是通过直接修改lookupfile插g的方法,在LUBufs查找的字W串前都加上“\c”Q之忽略大写。如果你不想q样Q可以每ơ在~冲区名字前手动加上“\c”?/p>

本文关于Lookupfile插g׃l这么多Q请阅读帮助获取更多的信息?/p>

q是一个非常好的插Ӟ希望能ؓ更多人喜爱!

也欢q大家多交流使用中的心得和疑问?/p>

来自Q?a >http://blog.csdn.net/easwy/archive/2007/03/12/1527228.aspx



CONAN 2009-04-08 21:48 发表评论
]]>
使用VIM开发Y仉?Q文件浏览和~冲区浏?/title><link>http://m.tkk7.com/conans/articles/264531.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Wed, 08 Apr 2009 13:47:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/264531.html</guid><description><![CDATA[<a target="_blank"> <p class="MsoNormal"><span style="font-family: 宋体">本节所用命令的帮助入口Q?/span></p> <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> <div>:help netrw-browse<br /> :help bufexplorer<br /> :help winmanager </div> </div> <p class="MsoNormal"><strong><span lang="EN-US" style="font-size: 14pt">[</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">文g览</span></strong><strong><span lang="EN-US" style="font-size: 14pt">]<O:P></O:P></span></strong></p> <p class="MsoNormal"><span style="font-family: 宋体">在开发过E中Q经帔R要查找某个文件。我们前面在介绍</span><span lang="EN-US">path</span><span style="font-family: 宋体">选项Ӟ介绍q?/span><span lang="EN-US">find</span><span style="font-family: 宋体">命o查找文g的方法。本节介l?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">的文件浏览插件?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">?/span><span lang="EN-US">VIM 7.0</span><span style="font-family: 宋体">以前Q文件浏览功能由</span><span lang="EN-US">explorer.vim</span><span style="font-family: 宋体">插g提供Q在</span><span lang="EN-US">VIM 7.0</span><span style="font-family: 宋体">中,q个插g?/span><span lang="EN-US">netrw.vim</span><span style="font-family: 宋体">插g所代替。本文以</span><span lang="EN-US">VIM 7.0</span><span style="font-family: 宋体">ZQ主要介l?/span><span lang="EN-US">netrw.vim</span><span style="font-family: 宋体">插g?/span></p> <p class="MsoNormal"><span lang="EN-US">netrw.vim</span><span style="font-family: 宋体">?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">的标准插Ӟ它已l伴?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">发行Q不需要安装?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">我们现在试一?/span><span lang="EN-US">VIM?/span><span style="font-family: 宋体">文g览功能Q当你?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">试打开目录Ӟ</span><span lang="EN-US">VIM</span><span style="font-family: 宋体">会自动调?/span><span lang="EN-US">netrw.vim</span><span style="font-family: 宋体">插g打开该目录(从操作系l的视角来看Q目录其实是一U特D的文gQ。例如,我们?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">中执行命?#8220;</span><span lang="EN-US" style="color: blue">:e ~/src/vim70/src/</span><span lang="EN-US">”</span><span style="font-family: 宋体">Q会昄下面的窗口:</span></p> <p class="MsoNormal"><span lang="EN-US"><O:P></a><a target="_blank"><img alt="" src="http://www.kuqin.com/upimg/allimg/080601/1246120.jpg" /></a><a target="_blank"><br /> </O:P></span></p> <p class="MsoNormal"><span style="font-family: 宋体">q个H口cM于文件管理器Q你可以创徏、删除、改名文件或目录Q在目录上按回RӞ会进入该目录Q在文g上按回RӞ会?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">打开该文Ӟ可以更改排序方式、排序风|隐藏目录或文Ӟ使之不在上述H口中显C){等?/span></p> <p class="MsoNormal"><span lang="EN-US">Netrw</span><span style="font-family: 宋体">插g中常用键l定有:</span></p> <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> <div><F1>        昄帮助<br /> <cr>        如果光标下ؓ目录Q则q入该目录;如果光标下是文gQ则用VIM打开该文?br /> -           q回上目录<br /> c           切换VIM的当前工作目录ؓ正在览的目?br /> d           创徏目录 <br /> D           删除文g或目?br /> i           切换昄方式<br /> R           改名文g或目?br /> s           选择排序方式<br /> x           定制览方式Q用你指定的程序打开该文?/div> </div>   <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <p class="MsoNormal"><span style="font-family: 宋体">其它常用键,诸如使用书签、隐藏符合条件的文g{,请参?/span><span lang="EN-US">netrw</span><span style="font-family: 宋体">帮助c?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">上面我们?#8220;</span><span lang="EN-US" style="color: blue">:e ~/src/vim70/src/</span><span lang="EN-US">”</span><span style="font-family: 宋体">的方式打开</span><span lang="EN-US">netrw</span><span style="font-family: 宋体">Q我们还可以使用“</span><span lang="EN-US" style="color: blue">:Explore</span><span style="font-family: 宋体">”{?/span><span lang="EN-US">Ex</span><span style="font-family: 宋体">命o来打开文g览器。我?/span><span lang="EN-US">vimrc</span><span style="font-family: 宋体">中这样配|:</span></p> <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> <div>   """"""""""""""""""""""""""""""<br />    " netrw setting<br />    """"""""""""""""""""""""""""""<br />    let g:netrw_winsize = 30<br />    nmap <silent> <leader>fe :Sexplore!<cr></div> </div>   <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <p class="MsoNormal"><span style="font-family: 宋体">q样Q在我输?#8220;</span><span lang="EN-US" style="color: blue">,fe</span><span style="font-family: 宋体">”Ӟ׃打开一个垂直分隔的H口览当前文g所在的目录Q窗口的宽度?/span><span lang="EN-US">30</span><span style="font-family: 宋体">?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">览本地文g只是</span><span lang="EN-US">netrw</span><span style="font-family: 宋体">插g的一小功能Q?/span><span lang="EN-US">netrw</span><span style="font-family: 宋体">插g最主要的功能是支持q程文gd。利用该插gQ你可以通过</span><span lang="EN-US">ftp</span><span style="font-family: 宋体">Q?/span><span lang="EN-US">ssh</span><span style="font-family: 宋体">Q?/span><span lang="EN-US">http</span><span style="font-family: 宋体">{多U协议来~辑q程文gQ也可以览q程机器的目录?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">在Y件开发过E中不常使用此功能,本文中不再介l。参?/span><span lang="EN-US">netrw</span><span style="font-family: 宋体">帮助获取更多信息?/span></p> <p class="MsoNormal"><strong><span lang="EN-US" style="font-size: 14pt">[</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">~冲区浏?/span></strong><strong><span lang="EN-US" style="font-size: 14pt">]<O:P></O:P></span></strong></p> <p class="MsoNormal"><span style="font-family: 宋体">在开发过E中Q经怼打开很多~冲区,其是?/span><span lang="EN-US">tag</span><span style="font-family: 宋体">文g在不同函数间跌{Ӟ会不知不觉打开很多文g。要知道自己当前打开了哪些缓冲区Q可以?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">?#8220;</span><span lang="EN-US" style="color: blue">:ls</span><span style="font-family: 宋体">”</span><span lang="EN-US">Ex</span><span style="font-family: 宋体">命o查看?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">开发过E中Q又l常需要在不同文g间蟩转。我习惯于?#8220;</span><span lang="EN-US">CTRL-^</span><span style="font-family: 宋体">”来切换文Ӟq就需要知道文件所在的~冲区编受每ơ都使用“</span><span lang="EN-US" style="color: blue">:ls</span><span style="font-family: 宋体">”来找~冲区编号很ȝQ所以我使用</span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">插g来显C缓冲区的信息?/span></p> <p class="MsoNormal"><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">插g在此处下载:</span></p> <p class="MsoNormal"><span lang="EN-US"><span>    </span></a><a >http://vim.sourceforge.net/scripts/script.php?script_id=42</a><a target="_blank"></span></p> <p class="MsoNormal"><span style="font-family: 宋体">下蝲后,把该文g?/span><span lang="EN-US">~/.vim/</span><span style="font-family: 宋体">目录中解压羃Q这会在你的</span><span lang="EN-US">~/.vim/plugin</span><span style="font-family: 宋体">?/span><span lang="EN-US">~/.vim/doc</span><span style="font-family: 宋体">目录中各攑օ一个文Ӟ</span></p> <p class="MsoNormal"><span lang="EN-US" style="color: blue"><span>       </span>plugin/</span><span lang="EN-US"> <span style="color: blue">bufexplorer.vim - bufexplorer</span></span><span style="color: blue; font-family: 宋体">插g</span><span lang="EN-US" style="color: blue"><O:P></O:P></span></p> <p class="MsoNormal"><span lang="EN-US" style="color: blue"><span>       </span>doc/</span><span lang="EN-US"> <span style="color: blue">bufexplorer.txt<span>    </span>- bufexplorer</span></span><span style="color: blue; font-family: 宋体">帮助文g</span><span lang="EN-US" style="color: blue"><O:P></O:P></span></p> <p class="MsoNormal"><strong><span style="font-family: 宋体">?/span></strong><span style="font-family: 宋体">Q?/span><span lang="EN-US">windows</span><span style="font-family: 宋体">用户需要把q个插g解压在你?/span><span lang="EN-US">$VIM/vimfiles</span><span style="font-family: 宋体">?/span><span lang="EN-US">$HOME/vimfiles</span><span style="font-family: 宋体">目录?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">使用下面的命令生成帮助标{(下面的操作在</span><span lang="EN-US">VIM</span><span style="font-family: 宋体">中进行)Q?/span></p> <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> <div>:helptags ~/.vim/doc</div> </div> <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <p class="MsoNormal"><span style="font-family: 宋体">然后Q就可以使用“</span><span lang="EN-US" style="color: blue">:help bufexplorer</span><span style="font-family: 宋体">”命o查看</span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">的帮助文件了?/span></p> <p class="MsoNormal"><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">功能比较单,q里׃做介l了。我?/span><span lang="EN-US">vimrc</span><span style="font-family: 宋体">里这栯|?/span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">插gQ?/span></p> <p class="MsoNormal"></p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> <div>   """"""""""""""""""""""""""""""<br />    " BufExplorer<br />    """"""""""""""""""""""""""""""<br />    let g:bufExplorerDefaultHelp=0       " Do not show default help.<br />    let g:bufExplorerShowRelativePath=1  " Show relative paths.<br />    let g:bufExplorerSortBy='mru'        " Sort by most recently used.<br />    let g:bufExplorerSplitRight=0        " Split left.<br />    let g:bufExplorerSplitVertical=1     " Split vertically.<br />    let g:bufExplorerSplitVertSize = 30  " Split width<br />    let g:bufExplorerUseCurrentWindow=1  " Open in new window.</div> </div>   <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <p class="MsoNormal"></p> <p class="MsoNormal"><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">已经映射了几个键l定Q例如,使用“</span><span lang="EN-US" style="color: blue">,bv</span><span style="font-family: 宋体">”可以打开一个垂直分割窗口显C当前的~冲区?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">有一个称?/span><span id="gmvanmq" class="txth1"><span lang="EN-US">minibufexpl.vim</span></span><span id="woupzvk" class="txth1"><span style="font-family: 宋体">的插Ӟ也可以把~冲区列表显C出来,q个插g在此处下载:</span><span lang="EN-US"><O:P></O:P></span></span></p> <p class="MsoNormal"><span id="ltneeqt" class="txth1"><span lang="EN-US"><span>    </span></span></span><span lang="EN-US"></a><a >http://vim.sourceforge.net/scripts/script.php?script_id=159</a><a target="_blank"></span></p> <p class="MsoNormal"><span style="font-family: 宋体">使用q个插g后,屏幕截图看v来是q样Q最上面一个窗口就?/span><span lang="EN-US">minibuffer</span><span style="font-family: 宋体">H口Q列Z当前打开的缓冲区Q?/span></p> <p class="MsoNormal"><span lang="EN-US"><O:P></a><a target="_blank"><img alt="" src="http://www.kuqin.com/upimg/allimg/080601/1246121.jpg" /></a><a target="_blank"></O:P></span></p> <p class="MsoNormal"><span style="font-family: 宋体">q个插g没有帮助文gQ参考下载页上的说明Q以及脚本代码中的注释来配置?/span></p> <p class="MsoNormal"><strong><span lang="EN-US" style="font-size: 14pt">[winmanager</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">插g</span></strong><strong><span lang="EN-US" style="font-size: 14pt">]<O:P></O:P></span></strong></p> <p class="MsoNormal"><span lang="EN-US">winmanager</span><span style="font-family: 宋体">插g可以把前面介l的</span><span lang="EN-US">Explorer</span><span style="font-family: 宋体">插g</span><span lang="EN-US">(VIM 7.0</span><span style="font-family: 宋体">以前的文件浏览插?/span><span lang="EN-US">)</span><span style="font-family: 宋体">?/span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">插g集成在一P我们上篇文章中介l过?/span><span lang="EN-US">taglist</span><span style="font-family: 宋体">插g也提供了?/span><span lang="EN-US">winmanager</span><span style="font-family: 宋体">插g的支持?/span></p> <p class="MsoNormal"><span lang="EN-US">Winmanager</span><span style="font-family: 宋体">插g在这里下载:</span></p> <p class="MsoNormal"><span lang="EN-US"><span>    </span></a><a >http://vim.sourceforge.net/scripts/script.php?script_id=95</a><a target="_blank"> </span></p> <p class="MsoNormal"><span style="font-family: 宋体">下蝲后,把该文g?/span><span lang="EN-US">~/.vim/</span><span style="font-family: 宋体">目录中解压羃Q这会把</span><span lang="EN-US">winmanager</span><span style="font-family: 宋体">插g解压?/span><span lang="EN-US">~/.vim/plugin</span><span style="font-family: 宋体">?/span><span lang="EN-US">~/.vim/doc</span><span style="font-family: 宋体">目录中:</span></p> <p class="MsoNormal"><span lang="EN-US" style="color: blue"><span>       </span>plugin/winmanager.vim – winmanager</span><span style="color: blue; font-family: 宋体">插g</span><span lang="EN-US" style="color: blue"><O:P></O:P></span></p> <p class="MsoNormal"><span lang="EN-US" style="color: blue"><span>       </span>plugin/winfileexplorer.vim <span> </span>- </span><span style="color: blue; font-family: 宋体">改良?/span><span lang="EN-US" style="color: blue">Explorer</span><span style="color: blue; font-family: 宋体">插g</span><span lang="EN-US" style="color: blue"><O:P></O:P></span></p> <p class="MsoNormal"><span lang="EN-US" style="color: blue"><span>       </span>plugin/wintagexplorer.vim – winmanager</span><span style="color: blue; font-family: 宋体">提供?/span><span lang="EN-US" style="color: blue">tag</span><span style="color: blue; font-family: 宋体">插gQ用处不?/span><span lang="EN-US" style="color: blue"><O:P></O:P></span></p> <p class="MsoNormal"><span lang="EN-US" style="color: blue"><span>       </span>doc/winmanager.txt – </span><span style="color: blue; font-family: 宋体">帮助文g</span><span lang="EN-US" style="color: blue"><O:P></O:P></span></p> <p class="MsoNormal"><span style="font-family: 宋体">仍然?#8220;</span><span lang="EN-US" style="color: blue">:helptags ~/.vim/doc</span><span style="font-family: 宋体">”命o来生成帮助标{,然后可以?#8220;</span><span lang="EN-US" style="color: blue">:help winmanager</span><span style="font-family: 宋体">”来查看帮助了?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">使用</span><span lang="EN-US">winmanager</span><span style="font-family: 宋体">插g可以控制各插件在</span><span lang="EN-US">VIM</span><span style="font-family: 宋体">H口中的布局昄。我?/span><span lang="EN-US">vimrc</span><span style="font-family: 宋体">中这栯|:</span></p> <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> <div>   """"""""""""""""""""""""""""""<br />    " winManager setting<br />    """"""""""""""""""""""""""""""<br />    let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"<br />    let g:winManagerWidth = 30<br />    let g:defaultExplorer = 0<br />    nmap <C-W><C-F> :FirstExplorerWindow<cr><br />    nmap <C-W><C-B> :BottomExplorerWindow<cr><br />    nmap <silent> <leader>wm :WMToggle<cr> </div> </div> <p class="MsoNormal"><span lang="EN-US"><O:P></O:P></span></p> <p class="MsoNormal"><span lang="EN-US" style="color: blue">g:winManagerWindowLayout</span><span style="font-family: 宋体">变量的值定?/span><span lang="EN-US">winmanager</span><span style="font-family: 宋体">的窗口布局Q用上面的讄Q我们的H口布局看v来是q样的:</span></p> <p class="MsoNormal"><span lang="EN-US"><O:P><img alt="" src="http://www.kuqin.com/upimg/allimg/080601/1246122.jpg" /></O:P></span></p> <p class="MsoNormal"><span style="font-family: 宋体">左边有两个窗口,上面的是</span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">H口Q下面是</span><span lang="EN-US">taglist</span><span style="font-family: 宋体">H口?/span><span lang="EN-US">FileExplorer</span><span style="font-family: 宋体">H口?/span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">q一个窗口,?/span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">H口中?#8220;</span><span lang="EN-US">CTRL-N</span><span style="font-family: 宋体">”可以切换?/span><span lang="EN-US">FileExplorer</span><span style="font-family: 宋体">H口Q再使用一ơ则又切换回</span><span lang="EN-US">BufExplorer</span><span style="font-family: 宋体">H口。也是_在变?/span><span lang="EN-US" style="color: blue">g:winManagerWindowLayout</span><span style="font-family: 宋体">中,使用“</span><span lang="EN-US">,</span><span style="font-family: 宋体">”分隔的插Ӟ在同一个窗口中昄Q?#8220;</span><span lang="EN-US">CTRL-N</span><span style="font-family: 宋体">”在不同插仉切换Q?#8220;</span><span lang="EN-US">|</span><span style="font-family: 宋体">”分隔的插Ӟ则在另外一个窗口中昄?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">在屏q右边的H口则是ȝ辑区?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">在上面的</span><span lang="EN-US">vimrc</span><span style="font-family: 宋体">中,q定义了三个键绑定,分别用于跛_左上H口、左下窗口,以及昄</span><span lang="EN-US">/</span><span style="font-family: 宋体">关闭</span><span lang="EN-US">winmanager</span><span style="font-family: 宋体">H口?/span></p> <p class="MsoNormal"><strong><em><span style="font-family: 宋体">?/span></em></strong><em><span style="font-family: 宋体">Q安装后Q如果未讄</span><span lang="EN-US">g:winManagerWindowLayout</span></em><em><span style="font-family: 宋体">变量Q?/span><span lang="EN-US">winmanager</span></em><em><span style="font-family: 宋体">插g需要与</span><span lang="EN-US">BufExplorer</span></em><em><span style="font-family: 宋体">插g一h能用。所以需要下?/span><span lang="EN-US">BufExplorer</span></em><em><span style="font-family: 宋体">?/span><span lang="EN-US"><O:P></O:P></span></em></p> <p class="MsoNormal"><span style="font-family: 宋体">?/span></a><a target="_blank"><span lang="EN-US">http://vim.sourceforge.net/scripts/script.php?script_id=1440</span></a><a target="_blank"><span style="font-family: 宋体">有一?/span><span lang="EN-US">winmanager</span><span style="font-family: 宋体">插g的修改版本,如果?/span><span lang="EN-US">FileExplorer</span><span style="font-family: 宋体">中打开文gӞ它会使用与该文g相关联的E序来打开该文Ӟ而不是?/span><span lang="EN-US">VIM</span><span style="font-family: 宋体">。我没有使用q这个插Ӟ有兴你可以试试?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">来自Q?/a><a >http://blog.csdn.net/easwy/archive/2007/03/09/1525554.aspx</a><a target="_blank"></span></p> <script type="text/javascript"><!-- google_ad_client="pub-9317413389774415" ; /* 底部q告336x280, 创徏?08-7-23 */ google_ad_slot="9618407928" ; google_ad_width="336; google_ad_height" = 280; //--> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><script>window.google_render_ad();</script></a> <img src ="http://m.tkk7.com/conans/aggbug/264531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2009-04-08 21:47 <a href="http://m.tkk7.com/conans/articles/264531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用VIM开发Y仉?Q用tag文g和taglist插ghttp://m.tkk7.com/conans/articles/264530.htmlCONANCONANWed, 08 Apr 2009 13:46:00 GMThttp://m.tkk7.com/conans/articles/264530.htmlW一节:

本节所用命令的帮助入口Q?/p>


:help ‘tags’
:help :tag
:help :tags
:help CTRL-]
:help CTRL-T
:help vimgrep
:help cw
:help pattern

管相关的文章已l很多了Q但tag文g实在是太有用了,所以还是啰嗦一ơ?/p>

Tag文g(标签文g)无疑是开发h员的利器之一Q有了tag文g的协助,你可以在VIM查看函数调用关系Q类、结构、宏{的定义Q可以在L标签中蟩转、返?#8230;…怿使用qSource Insight的h对这些功能ƈ不陌生,而在VIM中,此功能的实现依赖于tag文g?/p>

对于E序来说QTag文g中保存了诸如函数、类、结构、宏{的名字Q它们所处的文gQ以及如何通过Ex命o跌{到这些标{。它是一个纯文本文gQ因此你可以手工的编辑它Q也可以使用脚本对其q行操作?/p>

通常我们使用名ؓctags的程序来生成q样的tag文g。VIM能直接用ctagsE序所生成的tag文g。在UNIXpȝ下的ctags功能比较?yu),所以一般我们用Exuberant CtagsQ在大多数Linuxpȝ上,它是~省的ctagsE序Q,它能够支持多?3U程序语aQ以满x们开发的需要了。如果你的系l上未安装此E序Q请?a >http://ctags.sourceforge.net下蝲?/p>

EMACS则用etags来生成tag文gQ如果希望VIM也能支持etags的tag文g格式Q需要在~译VIM时加?#8221; +emacs_tags”选项?/p>

Tag文g需要遵循一定的格式Q由Exuberant Ctags生成的tag文gQ缺省是如下格式Q?/p>


{tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} ..


{tagname}      标识W名字,例如函数名、类名、结构名、宏{。不能包含制表符?/p>

{tagfile}  包含 {tagname} 的文件。它不能包含制表W?/p>

{tagaddress}   可以定位?{tagname}光标位置?Ex 命o?/p>

{term}           设ؓ“;"”。这是ؓ了兼容Vi~辑器,使Vi忽略后面的{field}字段?/p>

{field} ..  此字D可选,通常用于表示此{tagname}的类型是函数、类、宏或是其它?/p>

在{tagname}、{tagfile}和{tagaddress}之间Q采用制表符QTABW,即C语言中的”\t”Q分隔,也就是说{tagname}、{tagfile}中不能包含制表符?/p>

Tag文g的开头可以包含以“!_TAG_”开头的行,用来在tag文g中加入其它信息。VIM能够识别两种q样的标讎ͼl常用到的是“_TAG_FILE_SORTED”标记Q例如:


!_TAG_FILE_SORTED<Tab>1<Tab>{anything}


上面q个标记说明tag文g是经q排序的Qƈ且排序时区分了大写Q对排序的tagQVIM会用二分法来进行查找,大大加快了查N度Q如果gؓ0Q则表示tag文g未经排序Q如果gؓ2Q则表示tag文g是忽略大写排序的?/p>

之所以在q里介绍tag文g的格式,是因为我们在后面提到的lookupfile插g中,会自q成tag文g?/p>

 

虽然ctags有ؓC多的选项Q但通常我们所使用的非常简单。还是以VIM 7.0的代码ؓ例,我们执行Q?/p>


cd ~/src/vim70
ctags –R src


上面q条命o会在~/src/vim70/目录下生成一个名为tags的文Ӟq个文g中包含~/src/vim70/src/目录下所?c?h文g中的标签。它一个文本文Ӟ你可以用VIM打开它看一下。此文g~省按区分字母大写排序Q所以直接可以被VIM使用?/p>


现在我们q入VIMQ执行下面的命oQ?/p>

:cd ~/src/vim70      "切换当前目录为~/src/vim70
:set tags=tags       "讄tags选项为当前目录下的tags文g

现在Q我们设|好了tags选项Q接下来我们使用它:


:tag VimMain


你会看到VIM打开了src/main.c文gQƈ把光标定位到W?67行VimMain上?/p>

我们知道Q一般主E序的函数名为mainQ如果你试下面的命令:


:tag main
  # pri kind tag               file
  1 F   f    main              src/xxd/xxd.c
               main(argc, argv)
  2 FS  d    main              src/if_python.c
               46
Choice number (<Enter> cancels):


q里q没有src/main.c文gQ怎么回事呢?q是因ؓctagsq不是编译器Q它在处理编译预处理指o受到局限,因此q没有生成src/main.c中main()函数的标{。你可以在生成tag文g时给ctags指定参数来解册个问题?/p>

或者你可以?#8221;:grep”?#8221;:vimgrep”来查找mainQ这已经出本文的范围了Q因此只l出例子Q在后箋的文章再做讲解)Q?/p>


:cd ~/src/vim70
:vimgrep /\<main\>/ src/*.c
:cw


q时下面的窗口将昄出来Q在quickfixH口中找到我们想跌{的位|(本例中是src/main.cQ,按回车,可以蟩到对应的位置了?/p>


如果你只记得部分的标{֐Q那么可以?#8220;tag”命o的搜索模式,你可以输入一个VIM正则表达式来表示你所查找的名字,如:


:tag /\C\<\k\+ain\>
  # pri kind tag               file
  1 F   f    VimMain           src/main.c
               VimMain
  2 F   d    bindtextdomain    src/vim.h
               483
  3 F   d    bindtextdomain    src/vim.h
               502
  4 F   d    bindtextdomain    src/vim.h
               504
  5 F   f    main              src/xxd/xxd.c
               main(argc, argv)
  6 F   d    textdomain        src/vim.h
               488
  7 F   d    textdomain        src/vim.h
               510
  8 F   d    textdomain        src/vim.h
               512
  9 FS  d    bindtextdomain    src/gui_gtk.c
               54
 10 FS  d    bindtextdomain    src/gui_gtk_x11.c
               37
 11 FS  f    cmdsrv_main       src/main.c
               cmdsrv_main(argc, argv, serverName_arg, serverStr)
 12 FS  d    main              src/if_python.c
               46
 13 FS  d    textdomain        src/gui_gtk.c
               51
 14 FS  d    textdomain        src/gui_gtk_x11.c
               34
Choice number (<Enter> cancels):


q表C我x找一个以一个或多个keyword开始的标签Q此标签以ain做ؓl尾Q在查找时区分大写。要Lq个正则表达式,?#8220;:help pattern”?/p>

 
VIM会保存一个蟩转的标签栈,以允怽在蟩转到一个标{֐Q再跛_来,可以使用“:tags”命o查找你处于标{栈的哪个位|?/p>

我们l常用到的tag跌{命o见下Q一般只需要知道CTRL-]和CTRL-T可以了Q:


:tag {ident}            "跌{到指定的标签
:tags                   "昄标签?br /> CTRL-]                  "跌{到当前光标下的标{?br /> CTRL-T                  "跛_标签栈中较早的标{?/p>

 

如果想了解更多命令,可以“:help 29.1”Q强烈徏议程序员完整的阅读usr_29.txt和usr_30.txtQ?/p>

如果x深入了解tag命o和相关知识,可以“:help tagsrch”?/p>

我之前写的一关于ctags和cscope的文章,参见Q?a target="_blank">Vim + Cscope/Ctags

W二节:

本节所用命令的帮助入口Q?/p>


:help helptags
:help taglist.txt
上篇文章介绍了在VIM中如何用tag文gQ本文主要介l如何用taglist插g?/p>

惛_用过Source Insight的h都记得这样一个功能:SI能够把当前文件中的宏、全局变量、函数等tag昄在SymbolH口Q用鼠标点上qtagQ就跛_该tag定义的位|;可以按字母序、该tag所属的cLscopeQ以及该tag在文件中出现的位|进行排序;如果切换到另外一个文ӞSymbolH口更新昄q个文g中的tag?/p>

在VIM中的taglist插g所实现的就是上q类似的功能Q有些功能比SI弱,有些功能比SI更强。而且Qtaglist插g仍在不断完善中!

要用taglist插gQ必LI

1. 打开VIM的文件类型自动检功能;
2. pȝ中装了Exuberant ctags工具Qƈ且taglist能够扑ֈ此工P因ؓtaglist需要调用它来生成tag文gQ;
3. 你的VIM支持system()调用Q?
在本pdW?文?vimrc初步)中,我们使用了VIM自带的示例vimrcQ这个vimrc中已l打开了文件类型检功能;在上文章中Q我们也已用CExuberant ctagsQsystem()调用在一般的VIM版本都会支持(只有suse Linux发行版中Z安全考虑Q关闭了此功?Q所以我们已l满了q三个条件?/p>

 现在我们?a >http://www.vim.org/scripts/script.php?script_id=273下蝲最新版本的taglist pluginQ目前版本是4.3?/p>

下蝲后,把该文g在~/.vim/目录中解压羃Q这会在你的~/.vim/plugin和~/.vim/doc目录中各攑օ一个文Ӟ

       plugin/taglist.vim – taglist插g

       doc/taglist.txt    - taglist帮助文g

注:windows用户需要把q个插g解压在你?VIM/vimfiles?HOME/vimfiles目录?/p>

 
使用下面的命令生成帮助标{(下面的操作在VIM中进行)Q?/p>


:helptags ~/.vim/doc

生成帮助标签后,你就可以用下面的命o查看taglist的帮助了Q?/p>


:help taglist.txt

Taglist提供了相当多的功能,我的vimrc中这样配|:


   """"""""""""""""""""""""""""""
   " Tag list (ctags)
   """"""""""""""""""""""""""""""
   if MySys() == "windows"                "讑֮windowspȝ中ctagsE序的位|?br />      let Tlist_Ctags_Cmd = 'ctags'
   elseif MySys() == "linux"              "讑֮linuxpȝ中ctagsE序的位|?br />      let Tlist_Ctags_Cmd = '/usr/bin/ctags'
   endif
   let Tlist_Show_One_File = 1            "不同时显C多个文件的tagQ只昄当前文g?br />    let Tlist_Exit_OnlyWindow = 1          "如果taglistH口是最后一个窗口,则退出vim
   let Tlist_Use_Right_Window = 1         "在右侧窗口中昄taglistH口

q样配置后,当你输入“:TlistOpen”Ӟ昄如下H口Q?/p>


在屏q右侧出现的是taglistH口Q你从中可以看到在main.c文g中定义的所有tagQ宏、定义、变量、函数等Q你也可以双L个tagQ蟩到该tag定义的位|;你还可以把某一cȝtag折叠hQ用了VIM的折行功能)Q方便查看,像图中macro和variable那样。更多的功能Q请查看taglist的帮助页Q本文也会介l一些常用功能?/p>

 
下面介绍常用的taglist配置选项Q你可以Ҏ(gu)自己的习惯进行配|:


- Tlist_Ctags_Cmd选项用于指定你的Exuberant ctagsE序的位|,如果它没在你PATH变量所定义的\径中Q需要用此选项讄一下;

- 如果你不惛_时显C多个文件中的tagQ设|Tlist_Show_One_File?。缺省ؓ昄多个文g中的tagQ?/p>

- 讄Tlist_Sort_Type?#8221;name”可以使taglist以tag名字q行排序Q缺省是按tag在文件中出现的顺序进行排序。按tag出现的范_x属的namespace或classQ排序,已经加入taglist的TODO ListQ但未支持Q?/p>

- 如果你在想taglistH口是最后一个窗口时退出VIMQ设|Tlist_Exit_OnlyWindow为1Q?/p>

- 如果你想taglistH口出现在右侧,讄Tlist_Use_Right_Window为1。缺省显C在左侧?/p>

- 在gvim中,如果你想昄taglist菜单Q设|Tlist_Show_Menu为1。你可以使用Tlist_Max_Submenu_Items和Tlist_Max_Tag_Length来控制菜单条目数和所昄tag名字的长度;

- ~省情况下,在双M个tagӞ才会跛_该tag定义的位|,如果你想单击tagp转,讄Tlist_Use_SingleClick为1Q?/p>

- 如果你想在启动VIM后,自动打开taglistH口Q设|Tlist_Auto_Open?Q?/p>

- 如果你希望在选择了tag后自动关闭taglistH口Q设|Tlist_Close_On_Select?Q?/p>

- 当同时显C多个文件中的tagӞ讄Tlist_File_Fold_Auto_Close为1Q可使taglist只显C当前文件tagQ其它文件的tag都被折叠h?/p>

- 在?TlistToggle打开taglistH口Ӟ如果希望输入焦点在taglistH口中,讄Tlist_GainFocus_On_ToggleOpen?Q?/p>

- 如果希望taglist始终解析文g中的tagQ不taglistH口有没有打开Q设|Tlist_Process_File_Always?Q?/p>

- Tlist_WinHeight和Tlist_WinWidth可以讄taglistH口的高度和宽度。Tlist_Use_Horiz_Window为1讄taglistH口横向昄Q?/p>

在taglistH口中,可以使用下面的快捷键Q?/p>


<CR>          跛_光标下tag所定义的位|,用鼠标双Ltag功能也一?br /> o             在一个新打开的窗口中昄光标下tag
<Space>       昄光标下tag的原型定?br /> u             更新taglistH口中的tag
s             更改排序方式Q在按名字排序和按出现顺序排序间切换
x             taglistH口攑֤和羃?yu),方便查看较长的tag
+             打开一个折叠,同zo
-             tag折叠hQ同zc
*             打开所有的折叠Q同zR
=             所有tag折叠hQ同zM
[[            跛_前一个文?br /> ]]            跛_后一个文?br /> q             关闭taglistH口
<F1>          昄帮助
可以?#8220;:TlistOpen”打开taglistH口Q用“:TlistClose”关闭taglistH口。或者?#8220;:TlistToggle”在打开和关闭间切换。在我的vimrc中定义了下面的映,使用“,tl”键就可以打开/关闭taglistH口Q?/p>


map <silent> <leader>tl :TlistToogle<cr>
Taglist插gq提供了很多Ex命oQ你甚至可以用这些命令创Z个taglist的会话,然后在下ơ进入VIM时加载此会话?/p>

来自Q?a >http://blog.csdn.net/easwy/archive/2007/03/01/1518468.aspx



CONAN 2009-04-08 21:46 发表评论
]]>
使用VIM开发Y仉?Q保存项目相关配|?/title><link>http://m.tkk7.com/conans/articles/264529.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Wed, 08 Apr 2009 13:45:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/264529.html</guid><description><![CDATA[<p class="MsoNormal"><span style="font-family: 宋体">本节所用命令的帮助入口Q?br />   </span></p> <p class="MsoNormal"><span style="font-family: 宋体">:help 'path'<br /> :help mksession<br /> :help find<br /> :help gf<br /> :help CTRL-W_f</span></p> <p class="MsoNormal"><span style="font-family: 宋体">我们在前面介l了vimrcQvimrc定义了VIM通常的行为。每个项目都有其Ҏ(gu)的定义,虽然我们也可以在vimrc中对每个目q行定制Q但q样一来,vimrc会变得很大,使VIM启动速度变慢Q另外也会vimrc变得难以l护?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">因此Q我们用其它的Ҏ(gu)来保存项目相关的信息Q这是本文的主要内宏V我们将以path选项的设|ؓ例进行讲解?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">path选项定义了一个目录列表,在用gfQfindQ以及CTRL-W f{命令时Q如果用的是相对\径,那么׃在path选项定义的目录列表中查找相应的文件。path选项以逗号分隔各目录名。我们依旧以VIM 7.0的源代码ZQ源代码攑֜~/src/vim70/目录中)?/span></p> <p class="MsoNormal"><span style="font-family: 宋体">对于q个目Q我们的path选项讄如下Q?/span></p> <span style="font-family: 宋体"> <p class="MsoNormal"><br /> set path=.,/usr/include,,~/src/vim70/**</p> <p class="MsoNormal">E微解释一下各的含义Q更详细的信息,h看path选项的帮助页Q?/p> <p class="MsoNormal"><br /> .                在当前文件所在目录中搜烦<br /> /usr/include     ?usr/include目录中搜?br /> ,,               在当前工作\径中搜烦<br /> ~/src/vim70/**   在~/src/vim70的所有子目录树中q行搜烦</p> <p class="MsoNormal">讄了path选项后,怎么用呢Q?/p> <p class="MsoNormal">我们q是回到序章中的屏幕抓图Q我们把光标定位到src/main.c文gW?2行的”fcntl.h”单词上,然后在Normal模式下按”gf”。咦QVIM打开?usr/include/fcntl.h文gQ?/p> <p class="MsoNormal">现在我们?#8221;CTRL-^”回到刚才的位|,光标仍旧定位在第22行的”fcntl.h”单词上,然后?#8221;CTRL-W f”。啊哈,q次VIM打开了一个水q_隔窗口,在此H口中打开?usr/include/fcntl.h?/p> <p class="MsoNormal">管在src/main.c中未指定fcntl.h的\径,但VIM会在path选项定义的\径中搜烦此文Ӟ方便吧!</p> <p class="MsoNormal">现在我们看一下find命oQ输入:</p> <p class="MsoNormal"><br /> :find netrw.vim</p> <p class="MsoNormal"><br /> VIM打开了~/src/vim70/runtime/autoload/netrw.vim文g。用q种Ҏ(gu)打开文g真是太方便了Q你不用输入文g的\径,VIM会自动在path选项定义的\径中搜烦。不q?#8221;find”命o也有~陷Q如果你只记得文件名的一部分Q那么就没有办法用find命o打开q个文g了。而且find命o也不允许使用正则表达式。没关系Q我们还有更好的Ҏ(gu)来打开文gQ我在后箋文章中介l这些方法?/p> <p class="MsoNormal">path选项介绍完了Q我们进入正题,如何把本目相关的配|保存v来,下次打开本项目时自动恢复q些配置呢?</p> <p class="MsoNormal">我们有两U方法做到这一炏V?/p> <p class="MsoNormal">[Ҏ(gu)1]<br />  </p> <p class="MsoNormal">我们在~/src/vim70/目录下徏立一个文Ӟ假定文g名ؓworkspace.vimQ文件内容ؓQ?br />   </p> <p class="MsoNormal">"set project path<br /> set path+=~/src/vim70/**</p> <p class="MsoNormal"><br /> q个文g中保存了目相关的信息,例如选项|键映,函数定义Q自动命令,{等。我们的例子中只定义的path选项Q我们没有?#8221;set path=…”语句Q在VIM帮助中使用”set path+=…”?#8221;set path-=…”格式?/p> <p class="MsoNormal"> <br /> 接下来,在你的vimrc文g中加入下面的语句Q?br />   </p> <p class="MsoNormal">" execute project related configuration in current directory<br /> if filereadable("workspace.vim")<br />     source workspace.vim<br /> endif</p> <p class="MsoNormal"><br /> 以后Q每ơ你在~/src/vim70/目录中启动VIMӞVIM都会自动载入workspace.vimQ恢复项目的配置信息?/p> <p class="MsoNormal">[Ҏ(gu)2]</p> <p class="MsoNormal">q记得本pd文章的第二篇“使用会话和viminfo”吗?那篇文章中,我们介绍了用会话和viminfo保存目环境的方法。如果你使用了会话,那么选项|键映,和其它很多信息都已经保存了。但会话的功能毕竟有限,不能把项目相关的配置全部保存下来Q怎么办呢Q?/p> <p class="MsoNormal">VIM的开发者已l想Cq个问题Qƈ提供了解军_法?/p> <p class="MsoNormal">在VIM载入会话文g的最后一步,它会查找一个额外的文gq执行其中的ex命o。查扄规则是,把会话文件名的后~LQ然后在后面加上“x.vim”Q。假设你的会话文件名为example.sessionQVIM׃查找是否有examplex.vimQ如果找刎ͼ׃执行此文件中的ex命o?/p> <p class="MsoNormal"> <br /> 好了Q我们先创徏我们的会话文Ӟ<br />   </p> <p class="MsoNormal">:cd ~/src/vim70<br /> :set sessionoptions-=curdir        '在session option中去掉curdir<br /> :set sessionoptions+=sesdir        '在session option中加入sesdir<br /> :mksession vim70s.vim              '创徏一个会话文?/p> <p class="MsoNormal"><br /> 然后再编辑一个名为~/src/vim70/vim70sx.vim的文Ӟ文g的内容ؓQ当Ӟ你可以在q个文g中加入更多内容)Q?/p> <p class="MsoNormal"><br /> "set project path<br /> set path+=~/src/vim70/**</p> <p class="MsoNormal"><br /> 退出vim后,在命令行下执?#8221;gvim &”Q再ơ进入VIMQ这时看到的是一个空白窗口。然后执行下面的命oQ?/p> <p class="MsoNormal"><br /> :source ~/src/vim70/vim70s.vim  '载入会话文g</p> <p class="MsoNormal"><br /> 太棒了!原来的会话环境已l恢复,q且目相关的配|也讄好了Q?/p> <p class="MsoNormal"><span style="font-family: 宋体">来自Q?a >http://blog.csdn.net/easwy/archive/2007/02/27/1515803.aspx</a></span></p> </span><script type="text/javascript"><!-- google_ad_client="pub-9317413389774415" ; /* 底部q告336x280, 创徏?08-7-23 */ google_ad_slot="9618407928" ; google_ad_width="336; google_ad_height" = 280; //--> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><script>window.google_render_ad();</script> <img src ="http://m.tkk7.com/conans/aggbug/264529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2009-04-08 21:45 <a href="http://m.tkk7.com/conans/articles/264529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用VIM开发Y仉?Qvimrc初步http://m.tkk7.com/conans/articles/264528.htmlCONANCONANWed, 08 Apr 2009 13:45:00 GMThttp://m.tkk7.com/conans/articles/264528.html本节所用命令的帮助入口Q?/p>


 :help compatible
:help mapleader
:help map
:help autocmd
 


Z么我的VIMq么隄Q不能语法高亮,没有折行Q不能打开多个H口多个bufferQ不?#8230;…

Z么别人用几个键就可以完成一个很复杂的功能,而我不能Q?/p>

Z么别人的VIM看v来和我的很不一P

……

当你开始问q些问题的时候,是时候去查一下你的vimrc了?/p>

当VIM在启动时Q如果没有找到vimrc或gvimrcQ它~省工作VI兼容的模式。这意味着Q你只能使用VI所具备的功能,而VIM中的大量扩展功能无法用。也许这是你的VIM如此隄的原因?/p>

VIM中自带了一个vimrc例子Q让我们从这个例子开始吧?/p>

下面我以Linux下的VIMZQwindows版本的VIMQ会在后面提到?/p>

CZ的vimrc(名ؓvimrc_example.vim)通常位于/usr/share/vim/vimXXX/目录下,其中vimXXX与你所使用的VIM版本有关?/p>

首先把这个示例的vimrc拯到相应的目录Q在Linux下,应该把它拯C的home目录下,名字?#8221;.vimrc”Q下面是shell命oQ?/p>


cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc

或者你在VIM中执行下面的命oQ和上面的shell命o完成相同的功能:

:!cp $VIMRUNTIME/vimrc_example.vim ~/.vimrc

现在Q你退出VIM后再q入Q你的VIM和刚才已l不一样了?

你可以先M下你的vimrcQ看看它都设定了什么:

:e ~/.vimrc

q是一个注释良好的文gQ不需要多解释?/p>

对windows版本的VIMQ它已经~省的有了一个vimrcQ你可以在VIM在用下面的命o来查看它Q?/p>


:e $VIM/_vimrc


在这个文件中Q它包含了上面提到的vimrc_example.vim。同Ӟ它会把VIM讄的更W合windows的操作习惯。比如,支持CTRL-C拯QCTRL-V_脓(chung){等。Windows下的用户Q可以?VIM/_vimrc来做Z的第一个vimrc?/p>

Z提一句,在unix/linux中,文g名可以以”.”开_表明此文件是隐藏的。而在windows中,不允许文件名?#8221;.”开_所以,windows版本的VIMQ将d_vimrc来做q配置文g?/p>

在今后用VIM的日子里Q你会频J的更改你的vimrc。所以我们需要设|一些快h式,使我们能快速的讉Kvimrc?/p>

把下面这D内Ҏ(gu)贝到你的vimrc中:


1    "Set mapleader
2    let mapleader = ","
3
4    "Fast reloading of the .vimrc
5    map <silent> <leader>s :source ~/.vimrc<cr>
6    "Fast editing of .vimrc
7    map <silent> <leader>e :e ~/.vimrc<cr>
8    "When .vimrc is edited, reload it
9    autocmd! bufwritepost .vimrc source ~/.vimrc

Z方便解释Q我l每一行都加了一个行受?/p>

在vimrc中,双引号开头的行,被当作注释忽略?/p>

W?行,用来讄mapleader变量Q当mapleader为未讄或ؓI时Q用缺省的“\”来作为mapleader?/p>

mapleader变量是作用是什么呢Q我们先看下面?/p>

W?行定义了一个映,q个映射?#8220;<leader>s”Q映ؓ命o“:source ~/.vimrc<cr>”。当定义一个映时Q可以?lt;Leader>前缀。而在映射生效ӞVIM会把<Leader>替换成mapleader变量的倹{也是_我们q里定义?#8220;<leader>s”Q在使用时就变成?#8220;,s”Q当输入q一快捷方式Ӟ׃source一ơ~/.vimrc文gQ也是重新执行一?vimrc文gQ?/p>

W?行,定义?#8220;<leader>e”快捷键,当输?#8220;,e”Ӟ会打开~/.vimrcq行~辑?/p>

W?行,定义了一个自动命令,每次写入.vimrc后,都会执行q个自动命oQsource一ơ~/.vimrc文g?/p>

有了上面的快捷键Q我们就能快速的打开vimrc文g~辑Q快速重新source vimrc文gQ方便多了?br />  

无论在windowsq是在linux中,我都使用VIM作ؓ我的~省~辑器。ƈ且,我想使用同一个vimrc文g。因此,我定义了一个MySys()函数Q用来区分不同的q_Q以q行不同的配|?/p>

另外Q在~辑vimrc文gӞ我更喜欢新开一个标{N来编辑,而不是在当前H口中。因此,我定义了SwitchToBuf()函数Q它在所有标{N的窗口中查找指定的文件名Q如果找到这样一个窗口,p到此H口中;否则Q它新徏一个标{N来打开vimrc文g?/p>

下面是我的vimrc中用的讑֮Q希望能够抛砖引玉:

 

" Platform
function! MySys()
  return "linux"
endfunction

" Switch to buffer according to file name
function! SwitchToBuf(filename)
    let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "")
    " find in current tab
    let bufwinnr = bufwinnr(fullfn)
    if bufwinnr != -1
        exec bufwinnr . "wincmd w"
        return
    else
        " find in each tab
        tabfirst
        let tab = 1
        while tab <= tabpagenr("$")
            let bufwinnr = bufwinnr(fullfn)
            if bufwinnr != -1
                exec "normal " . tab . "gt"
                exec bufwinnr . "wincmd w"
                return
            endif
            tabnext
            let tab = tab + 1
        endwhile
        " not exist, new tab
        exec "tabnew " . fullfn
    endif
endfunction

"Fast edit vimrc
if MySys() == 'linux'
    "Fast reloading of the .vimrc
    map <silent> <leader>s :source ~/.vimrc<cr>
    "Fast editing of .vimrc
    map <silent> <leader>e :call SwitchToBuf("~/.vimrc")<cr>
    "When .vimrc is edited, reload it
    autocmd! bufwritepost .vimrc source ~/.vimrc
elseif MySys() == 'windows'
    "Fast reloading of the _vimrc
    map <silent> <leader>s :source ~/_vimrc<cr>
    "Fast editing of _vimrc
    map <silent> <leader>e :call SwitchToBuf("~/_vimrc")<cr>
    "When _vimrc is edited, reload it
    autocmd! bufwritepost _vimrc source ~/_vimrc
endif

注意Q我在windows中也定义一?#8220;HOME”环境变量Q然后把_vimrc攑֜“HOME”环境变量所指向的目录中。如果你打算在windows中用上面的讑֮Q也需要这样做Q?/p>

VIM自带的示例vimrc中,只定义最基本的配|?/p>

?a >http://www.amix.dk/vim/vimrc.html有一个非常强大的vimrcQ有人戏UCؓ“史上最强的vimrc”Q或许有些言q其实。不q,如果你通读了这个vimrcQ相信能从中学到很多很多……

我的vimrc也是Z此模板,然后自已做了很多修改?/p>

Q不要照拯个vimrcQ可能这个文件的讑֮q不W合你的习惯。另外,q个文g的设定,可能也不能在你的工作环境中运行?/p>

?a >http://blog.csdn.net/redguardtoo/archive/2006/09/03/1172136.aspxQ有一个redguardtoo修改q的版本Q可以对照参考一下?/p>

 [参考文档]

1. VIM帮助文g
2. http://vimcdoc.sourceforge.net/
3. http://www.amix.dk/vim/vimrc.html

来自Q?a >http://blog.csdn.net/easwy/archive/2007/02/26/1514639.aspx



CONAN 2009-04-08 21:45 发表评论
]]>
使用VIM开发Y仉?Q会话和viminfohttp://m.tkk7.com/conans/articles/264527.htmlCONANCONANWed, 08 Apr 2009 13:44:00 GMThttp://m.tkk7.com/conans/articles/264527.html本节所用命令的帮助入口Q?/p>
:help mksession
:help 'sessionoptions'
:help source
:help wviminfo
:help rviminfo
:help 'viminfo


很多软g都具有这样一U功能:在你下一ơ启动该软gӞ它会自动Z恢复C上次退出的环境Q恢复窗口布局、所打开的文Ӟ甚至是上ơ的讄?br />
那么QVIM有没有这U功能呢Q?br />
{案当然是肯定的Q这需要用VIM的会?session)及viminfo的保存和恢复功能?br />
q里所说的会话和viminfoQ包括了你在本次使用VIMq程中的~辑环境QVIM可以把这个编辑环境保存下来,然后你在下次启动VIM后,可以再恢复回q个环境。我们在开发Y仉目时Q其周期不是一两天。如果你在中途退ZVIM而不能恢复原先的~辑环境的话Q你又要重新打开你所打开的文Ӟ重新定义你的映射、羃写,重新定位你所讑֮的标记的位置Q重新设|项目相兌|?#8230;…不是一般的ȝQ?br />
要恢复上ơ的~辑环境Q我们需要保存两U不同的信息Q一U是会话信息Q另外一U是viminfo信息?br />
-    会话信息中保存了所有窗口的视图Q外加全局讄?br /> -    viminfo信息中保存了命o行历双Ӏ搜索字W串历史、输入行历史、非I的寄存器内宏V文件的位置标记、最q搜?替换的模式、缓冲区列表、全局变量{信息?br />
我们在下面分别对其进行介l?br />
[会话]

我们可以使用”:mksession [file]”命o来创Z个会话文Ӟ如果省略文g名的话,会自动创Z个名为Session.vim的会话文件。会话文Ӟ其本质上是一个VIM脚本Q你可以使用上述命o生成一个会话文Ӟ然后再查看其中的内容Q就会对会话文g有一个深入的认识?br />
会话文g中保存哪些信息,是由'sessionoptions'选项军_的。缺省的'sessionoptions'选项包括"blank,buffers,curdir,folds,help,options,tabpages,winsize"Q意Z话文件会恢复当前~辑环境的空H口、所有的~冲区、当前目录、折叠相关的信息、帮助窗口、所有的选项和映、所有的标签c窗口大?br />
如果你用windows上的VIMQƈ且希望你的会话文件可以同时被windows版本的VIM和UNIX版本的VIM共同使用的话Q在'sessionoptions'中加?span style="color: rgb(0,0,255)">'slash'?unix'Q前者把文g名中?#8217;\’替换?#8217;/’Q后者会把会话文件的换行W保存成unix格式?br />
如果你不希望在会话中保存当前路径Q而是希望会话文g所在的目录自动成ؓ当前工作目录Q那么,需要在'sessionoptions'L'curdir',加入'sesdir'Q这hơ蝲入会话文件时Q这个文件所在的目录Q就被设为VIM的当前工作目录。在你通过|络讉K其它目Ӟ或者你的项目有多个不同版本Q位于不同的目录Q,而你惛_l用一个会话文件时Q这个选项比较有用Q你只需要把会话文g拯C同的目录Q然后用就可以了。会话文件中保存的是文g的相对\径,而不是绝对\径?br />
我们在上面?span style="color: rgb(0,0,255)">”:mksession”命o创徏了会话文Ӟ那么怎么使用会话文g恢复~辑环境呢?很简单,你只需要?span style="color: rgb(0,0,255)">”source {file}”来导入会话文件。因Z话文件是一个脚本,里面保存的是Ex命oQ所?span style="color: rgb(0,0,255)">”source”命o只是把会话文件中的Ex命o执行一遍?br />
[viminfo]

使用”:wviminfo [file]”命oQ可以手动创Z个viminfo文g?br />
其实Q在VIM退出时Q每ơ都会保存一?viminfo文g在用Lȝ录。我们?#8221;:wviminfo”命o则是手动创徏一个viminfo文gQ因为缺省的.viminfo文g会在每次退出VIM时自动更斎ͼ谁知道你在关闭当前Y仉目后Q又使用VIM做过些什么呢Q这L话,.viminfo中的信息Q也许就与你所q行的Y仉目无关了。还是手动保存一个保险?br />
:wviminfo”命o保存哪些内容Q以及保存的数目Q由'viminfo'选项军_Q这个选项的值在windows上和在linux上的~省g同,具体含义参阅手册?br />
要读入你所保存的viminfo文gQ?#8221;:rviminfo [file]”命o?br />

现在Q回到我们的例子Q依旧是上篇文章中的抓图Q先看一下我们当前目录,执行”:pwd”Q显C?#8220;/home/easwy/src/vim70”Q接下来Q执行下面的命oQ?br />
:cd src                            '切换?home/easwy/src/vim70/src目录
:set sessionoptions-=curdir        '在session option中去掉curdir
:set sessionoptions+=sesdir        '在session option中加入sesdir
:mksession vim70.vim               '创徏一个会话文?/span>
:wviminfo vim70.viminfo            '创徏一个viminfo文g
:qa                                '退出vim

退出vim后,在命令行下执?#8220;gvim &”Q再ơ进入VIMQ这时看到的是一个空白窗口。然后执行下面的命oQ?br />
:source ~/src/vim70/src/vim70.vim  '载入会话文g
:rviminfo vim70.viminfo            'dviminfo文g



太棒了,又恢复到昨天退出时的状态了Ql工作~~~~



CONAN 2009-04-08 21:44 发表评论
]]>
使用VIM开发Y仉?Q序?/title><link>http://m.tkk7.com/conans/articles/264526.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Wed, 08 Apr 2009 13:42:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/264526.html</guid><description><![CDATA[<p>从初ơ接触VIMQ到现在已经有好些年旉了。在软g开发中使用VIMQ不q是q两q的事情。对VIM的了解远q算不上深入Q不q还是把自己使用VIM的一些经验写出来Q希望对VIM的推q做一份A(ch)献?/p> <p>  本系列文章主要介l我自己在用VIM开发Y仉目的一些经验。本是序章Q务虚ؓ丅R?/p> <p>   在用VIMq行软g开发之前,我用的工具是Source InsightQ相信大家ƈ不陌生。Source Insight是一个比较不错工P特别是在览代码斚w。在面对成百上千个文件组成的陌生源代码时Q用Source Insight可以让你很快的了解Y件的M程、调用关pR类型定?#8230;…。用Source Insight写代码也不错Q它的自动补全功能很强,g使用拯、粘_加上自动补全Q就可以完成代码了。不再用Source Insight的原因有二,一是Source Insight只支持windowsQ不能在Linux上用Q二是不惛_用盗版的Source Insight?/p> <p>  在决定用VIM前,也在VIM和EMACS犹U了很久,最l懒惰的天性让我放弃了EMACSQ实在是不习惯在Ud光标Ӟ也要用两只手按住CTRL/ALT/SHIFT再加个什么键Q我的天性喜Ƣ偷懒,能用一个手指做的事Q不想用两个手指完成。所以最l选择了用VIM。现在感觉,VIM和EMACS在文本编辑方面不分伯仌ӀEMACS的优势,在于它的可扩展性,使它可以完成很多和文本编辑无关的事情Q不q这也造成了它的过于庞大?/p> <p>  刚改用VIMQ最不适应的是不能再用鼠标“指哪儿打哪儿”了(VIM当然支持鼠标Q只是双手在键盘、鼠标间切换Q很是媄响效率)Q然 后是拯、粘_然后是查看调用关p,函数间蟩转,再然?#8230;…MQ刚开始的一D|间非常痛苦,效率也非常的低,甚至L想着攑ּ。经q这D|间以后,?渐摸C些窍门,也渐渐的知道到哪里去L帮助Q在哪儿可以扑ֈVIM的资源,工作效率一点点提升了上来。到现在Q工作中已经M开VIM了,VIM成了 计算Z~省的文本编辑工P</p> <p>  其实Q对VIM和EMACSq样的工h_它们最强大之处Q在于它们的可定制性。由于它们的可定制性,你完?可以定制Z个符合你自己~辑习惯的编辑器Q在q样一个编辑器里,你的工作效率达到最高。当Ӟ要达到这L境界Q你需要付出非常坚苦的努力Q如果你?工作是以文本~辑ZQ例如,你是一个程序员Q那么付U努力是值得的,也是有回报的。如果你没有很多文本~辑工作要做Q那么也没有必要耗费q么大的?气,来学习这些工兗?/p> <p>最后对VIM的初学者提一些徏议:</p> <p>1.    如果你的工作以文本编?不是指Microsoft word中的文本~辑)ZQ那么学习VIM或EMACS是值得的;</p> <p>2.    刚开始用VIM或EMACS的经历是很痛苦的Q因为它们可能完成不同于你已l习惯的windows~辑器。我的徏议是Q坚持下去!咬牙坚持下去Q你会获得回报的?/p> <p>3.    VIM的帮助文Ӟ是学习如何高效用VIM的重要资源,一定要多读帮助文g。如果你是因为害怕读英文的帮助文件而不肯学习VIM的话Q那么,?a target="_blank">http://vimcdoc.sourceforge.net/</a>ȝ一下,那里有翻译好的VIM 7.0的帮助文Ӟ按照说明安装好后Q再使用“<span style="color: rgb(0,0,255)">:help</span>”命oQ你可以看到翻译好的帮助文件了。如果你看到的还是英文的帮助文gQ说?#8220;<span style="color: rgb(0,0,255)">helplang</span>”选项讄的不正确Q似乎在windows上,helplang选项被设|ؓ大写的CnQ而不是cnQ所以无法看C文的help文gQ。?#8220;<span style="color: rgb(0,0,255)">:set helplang=cn</span>”命o重新讄一下helplang选项Q然后再使用“<span style="color: rgb(0,0,255)">:help</span>”命oQ就可以看到中文帮助文g了。或者你可以使用“<span style="color: rgb(0,0,255)">:help xxx@cn</span>”来查看xxx的中文帮助文件?/p> <p>4.    如果你是W一ơ接触VIMQ那么执行一?#8220;<span style="color: rgb(0,0,255)">:help tutor</span>”?#8220;<span style="color: rgb(0,0,255)">:help tutor@cn</span>”Q你׃看到一?0分钟的VIM教程Q会教会你VIM的一些基本命令?/p> <p>5.    有时间的话,一定要阅读一下Bram MoolenaarQVIM的主要作者)写的Seven habits of effective text editingQ七个有效的文本~辑习惯Q,你可以知道怎样提高你的~辑效率。在<a target="_blank">http://vimcdoc.sourceforge.net/</a>提供的PDF文g的附录二Q你可以看到它的中文译本?/p> <p>本系列文章都针对VIM 7.0版本Q如果这里介l的功能在你的VIM中不存在Q不妨升U到VIM 7.0后再试一ơ?/p> <p>我以Linux版本的VIM 7.0Z。VIM也有支持windows的版本,可以?a target="_blank">http://www.vim.org/</a>下蝲已经预编译好的windows版本的VIM 7.0?/p> <p>文章量不涉及具体的软g源代码,如果实需要,则以VIM 7.0的源代码Z。此代码可以也可以在<a target="_blank">VIM的主?/a>上下载,我把它解压在~/src/vim70目录下。以后就以此目录Zq行讲解?/p> <p>?图是我所使用VIM环境Q在q副图中Q我打开了三个标{NQ一个是ȝE区Q一个是打开?vimrc文gQ另外一个是草稿区。在ȝE标{N中有几个?同的H口Q分别是当前打开的bufferQ当前文件中的tagQhelpH口QlookupfileH口Qsrc/main.c和src/edit.c?其中使用了三个VIM插gQpluginQ:winmanager, taglist, lookupfile?/p> <p>从这副图中可以看到VIM的一些特性:多标{支持、多H口支持、插件支持、语法高亮功能、文本折叠功?#8230;…Q这些特性,以及其它C清的Ҏ(gu),我都在后箋文章中尽量给予介l?/p> <p><a target="_blank"><img alt="" src="http://www.kuqin.com/upimg/allimg/080601/1146120.jpg" /></a></p> <p>上图是GUI界面的VIMQ下图是控制C的VIM的抓图。这是我通常的开发方式:使用puttyq程d到l(f)inux服务器上Q用控制台的VIM开发YӞ</p> <p><a target="_blank"><img alt="" src="http://www.kuqin.com/upimg/allimg/080601/1146121.jpg" /></a></p> <p>对VIM的了解有限,请多h?/p> <p>[<span style="color: red; font-family: 宋体">参考文?/span>]</p> <p>1. VIM<span style="font-family: 宋体">帮助文g</span></p> <p>2. <a ><span style="font-family: Arial">http://vimcdoc.sourceforge.net/</a> </span></p> <img src ="http://m.tkk7.com/conans/aggbug/264526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2009-04-08 21:42 <a href="http://m.tkk7.com/conans/articles/264526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Vim快捷键汇?/title><link>http://m.tkk7.com/conans/articles/209614.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Fri, 20 Jun 2008 15:20:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/209614.html</guid><description><![CDATA[     摘要: --------------------------------------------------------------------------- N is used to indicate an optional count that can be given before the command. --------------------------------------------...  <a href='http://m.tkk7.com/conans/articles/209614.html'>阅读全文</a><img src ="http://m.tkk7.com/conans/aggbug/209614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-20 23:20 <a href="http://m.tkk7.com/conans/articles/209614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim的常用插?/title><link>http://m.tkk7.com/conans/articles/209593.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Fri, 20 Jun 2008 15:07:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/209593.html</guid><description><![CDATA[?下是滇狐攉和整理的一些有用的 VIM 插gQ?大部分插仉有自pl的说明书, 因此q里׃详细介绍每个插g的安装和使用Ҏ(gu)了?通过q些插gQ?VIM 能够变成一个非常强大的q_Q?Happy VIMmingQ?如果惌l了解默认的插g插g安装路径Q?L<a >q里</a><a name="idx001"></a>? <div id="saiqmgh" class="tabBody"> <h1>1 E序设计</h1> <h2>1.1 Tag List</h2> <p>下蝲地址Q?<span id="tczheyw" class="remote"><a class="remote" >官方站点</a></span><a name="idx002"></a></p> <p>?Ҏ(gu)qͼ The “Tag List” plugin is a source code browser plugin for Vim and provides an overview of the structure of source code files and allows you to efficiently browse through source code files for different programming languages.</p> <p>滇狐评h(hun)Q?q是一个非帔R帔R帔R帔R要的插gQ?有了它, 我们才能够在 VIM 中查看一个文件中包含的函数列表, 或是一个类包含的方法列表, 为编Eh员提供了极大方便?推荐大家一定要安装Q?/p> <p>安装注意事项Q?有的pȝ内置?ctags 功能太弱Q?推荐大家安装 <span id="dbjvsir" class="remote"><a class="remote" >EXUBERANT CTAGS</a></span><a name="idx003"></a>Q?q个东西功能比较强大Q?居然q?HTML 里面内嵌?Java Script 都能够支持, 实在是匪疑所思!</p> <p>滇狐个h习惯Q?滇狐习惯把方法列表放在屏q的右侧Q?于是?.vimrc 中设|了</p> <div id="gtdpnff" class="code"><span style="color: rgb(165,42,42)"><strong>let</strong></span> Tlist_Use_Right_Window<span style="color: rgb(165,42,42)"><strong>=</strong></span><span style="color: rgb(255,0,255)">1</span><br /> </div> <p>另外Q?滇狐习惯让当前不被编辑的文g的方法列表自动折叠v来, q样可以节约一些屏q空_ 于是?.vimrc 中设|了</p> <div id="pcvhtyh" class="code"><span style="color: rgb(165,42,42)"><strong>let</strong></span> Tlist_File_Fold_Auto_Close<span style="color: rgb(165,42,42)"><strong>=</strong></span><span style="color: rgb(255,0,255)">1</span>?br /> </div> <h2>1.2 A</h2> <p>下蝲地址Q?<span id="fwifjwb" class="remote"><a class="remote" >官方站点</a></span><a name="idx004"></a></p> <p>官方描述Q?/p> <p>A few of quick commands to swtich between source files and header files quickly.</p> <p>:A switches to the header file corresponding to the current file being edited (or vise versa)</p> <p>:AS splits and switches</p> <p>:AV vertical splits and switches</p> <p>E.g. if you are editing foo.c and need to edit foo.h simply execute :A and you will be editting foo.h, to switch back to foo.c execute :A again.</p> <p>滇狐评h(hun)Q?W一眼看到这个东西时Q?总觉得它功能太简单, g没有什么用处?用过之后Q?才发现这功能对于一个程序员来说是如何重要!</p> <h2>1.3 Win Manager</h2> <p>下蝲地址Q?<span id="wuczhej" class="remote"><a class="remote" >官方站点</a></span><a name="idx005"></a></p> <p>?Ҏ(gu)qͼ winmanager is a plugin which implements a classical windows type IDE in Vim-6.0. Basically, you have the directory tree and the buffer list as 2 windows which stay on the left and the editing is done in a seperate area on the left. People have already made excellent File and Buffer explorers seperately and I thought that it might be a cool idea to combine them both. winmanager.vim combines the standard File Explorer which ships with Vim 6.0 and a Buffer Explorer written by Jeff Lanzarotta into one package.</p> <p>滇狐评h(hun)Q?非常好用的东西, 在屏q上打开一个文件浏览器Q?q样可以方便地选择要编辑的文g了?/p> <p>默认情况下, winmanager 依赖?bufexplorerQ??span class="remote"><a class="remote" >q里</a></span><a name="idx006"></a>下蝲?如果你不喜欢 bufexplorer 插g的话 可以在你?.vimrc 中添加这条命令禁用它Q?/p> <div id="mrzlxcw" class="code"><span style="color: rgb(165,42,42)"><strong>let</strong></span> g:winManagerWindowLayout <span style="color: rgb(165,42,42)"><strong>=</strong></span> <span style="color: rgb(255,0,255)">"FileExplorer"</span><br /> </div> <p>q样׃需要下载该插g了?/p> <p>?狐ؓ winfileexplorer.vim 加了一个补丁, 提供了用系l默认打开方式打开选中文g的功能, 只要把光标放在想要打开的文件上Q?然后?#8220;S”可以了 (注意是大??q样以后可以直接在 gvim 里打开 Noatun 或别的播攑֙Q?不用再切换出来找 konqueror 了?/p> <h2>1.4 echofunc</h2> <p>下蝲地址Q?<span id="kxyvoiy" class="remote"><a class="remote" >官方站点</a></span><a name="idx007"></a></p> <p>?Ҏ(gu)qͼ When you type ‘(‘ after a function name in insert mode, the function declaration will be displayed in the command line automatically. Then use Alt+-, Alt+= to cycle between function declarations (if exists).</p> <p>滇狐评h(hun)Q?一个非常好用的插gQ?虽然很小巧, 功能也很单, 但非常实用, 强烈推荐?除此之外Q?安装了这个插件后Q?当鼠标移C个标志符之上Ӟ q会出现一个气球显C标志W的定义Q?如图Q?/p> <div id="iospxyd" class="figure"><img class="figure" alt="vim_echofunc" src="http://www.proxypass.us/index.php?q=uggc%3A%2F%2Frqlsbk.pbqrpneire.bet%2Fugzy%2Fivz_rpubshap.cat" name="imgid_0" /> </div> <p>安装注意事项Q?该插仉要安?<span id="enkdwmr" class="remote"><a class="remote" >EXUBERANT CTAGS</a></span><a name="idx008"></a>Q?不支持古老版本的标准 ctags?创徏一个这L脚本Q?/p> <div id="bvlxjgs" class="code"><span style="color: rgb(0,0,255)">#!/bin/sh</span><br /> <span style="color: rgb(0,0,255)"># Filename: omnictags</span><br /> <br /> ctags <span style="color: rgb(106,90,205)">--c++-kinds=+p</span> <span style="color: rgb(106,90,205)">--fields=+iaS</span> <span style="color: rgb(106,90,205)">--extra=+q</span> <span style="color: rgb(165,42,42)"><strong>"</strong></span><span style="color: rgb(160,32,240)">$@</span><span style="color: rgb(165,42,42)"><strong>"</strong></span><br /> </div> <p>然后使用 <code>omnictags</code> 来运?ctags 生成 tags 文gQ?保证 tags 文g中含有所需的信息?/p> <h2>1.5 omnicppcomplete</h2> <p>下蝲地址Q?<span id="jlmfyzi" class="remote"><a class="remote" >官方站点</a></span><a name="idx009"></a></p> <p>?Ҏ(gu)qͼ This script is for vim 7.0 or higher it provides an omnifunc cppcomplete function. You can use the omni completion (intellisense) in c++ files.</p> <p>This is a full vim script and you only need a ctags database.</p> <p>滇狐评h(hun)Q?虽然滇狐几乎不依?IDE 的自动完成, 因此也很用这个插Ӟ 但ȝ说来Q?q仍然是个很的插g?/p> <p>安装注意事项Q?该插仉要安?<span id="riaiqzi" class="remote"><a class="remote" >EXUBERANT CTAGS</a></span><a name="idx0010"></a>Q?不支持古老版本的标准 ctags?创徏一个和前面?echofunc 中给Z脚本Q?使用那个脚本来生?tags 文g?/p> <h2>1.6 clewn</h2> <p>下蝲地址Q?<span id="zxfyrlb" class="remote"><a class="remote" >官方站点</a></span><a name="idx0011"></a></p> <p>?Ҏ(gu)qͼ Clewn implements full gdb support in the vim editor: breakpoints, watch variables, gdb command completion, assembly windows, etc.</p> <p>滇狐评h(hun)Q?Vim 从一开始的设计哲学是要保持简单, 不要把太多的东西整合?Vim 中?Clewn 在保持了 Vim 单的原则下, 集成调试所需的一部分功能引入C GVim 中, 支持讄断点?查看变量的值等许多操作Q?非常方便?/p> <h2>1.7 jad</h2> <p>下蝲地址Q?无?自己代码复制粘贴回去, 保存?$HOME/.vim/plugins/jad.vimQ?/p> <div id="bzhaejd" class="code"><span style="color: rgb(165,42,42)"><strong>augr</strong></span> class<br /> <span style="color: rgb(165,42,42)"><strong>au</strong></span>!<br /> <span style="color: rgb(165,42,42)"><strong>au</strong></span> <span style="color: rgb(46,139,87)"><strong>bufreadpost</strong></span>,<span style="color: rgb(46,139,87)"><strong>filereadpost</strong></span> *.class %!jad -noctor -ff -i -p <span style="color: rgb(0,139,139)">%</span><br /> <span style="color: rgb(165,42,42)"><strong>au</strong></span> <span style="color: rgb(46,139,87)"><strong>bufreadpost</strong></span>,<span style="color: rgb(46,139,87)"><strong>filereadpost</strong></span> *.class <span style="color: rgb(165,42,42)"><strong>set</strong></span> <span style="color: rgb(160,32,240)">readonly</span><br /> <span style="color: rgb(165,42,42)"><strong>au</strong></span> <span style="color: rgb(46,139,87)"><strong>bufreadpost</strong></span>,<span style="color: rgb(46,139,87)"><strong>filereadpost</strong></span> *.class <span style="color: rgb(165,42,42)"><strong>set</strong></span> <span style="color: rgb(160,32,240)">ft</span>=java<br /> <span style="color: rgb(165,42,42)"><strong>au</strong></span> <span style="color: rgb(46,139,87)"><strong>bufreadpost</strong></span>,<span style="color: rgb(46,139,87)"><strong>filereadpost</strong></span> *.class normal gg<span style="color: rgb(165,42,42)"><strong>=</strong></span>G<br /> <span style="color: rgb(165,42,42)"><strong>au</strong></span> <span style="color: rgb(46,139,87)"><strong>bufreadpost</strong></span>,<span style="color: rgb(46,139,87)"><strong>filereadpost</strong></span> *.class <span style="color: rgb(165,42,42)"><strong>set</strong></span> <span style="color: rgb(160,32,240)">nomodified</span><br /> <span style="color: rgb(165,42,42)"><strong>au</strong></span> <span style="color: rgb(46,139,87)"><strong>bufreadpost</strong></span>,<span style="color: rgb(46,139,87)"><strong>filereadpost</strong></span> *.class <span style="color: rgb(165,42,42)"><strong>set</strong></span> <span style="color: rgb(160,32,240)">nomodifiable</span><br /> <span style="color: rgb(165,42,42)"><strong>augr</strong></span> END<br /> </div> <p>官方描述Q?(?</p> <p>滇狐评h(hun)Q?挺好玩的插gQ?不过g也只是好玩而已?安装了之后可以直接双L开 .class 文gQ?VIM 会自动调?jad 把文件反~译了?/p> <p>安装注意事项Q需要先安装一?<span id="hqavhxg" class="remote"><a class="remote" >jad</a></span><a name="idx0012"></a>?/p> <h2>1.8 cscope_maps</h2> <p>下蝲地址Q?<span id="mdwibgl" class="remote"><a class="remote" >官方站点</a></span><a name="idx0013"></a></p> <p>?Ҏ(gu)qͼ Cscope is a very handy tool, but it’s even better when you don’t ever have to leave the comfort of your favorite editor (i.e. Vim) to use it. Fortunately, Cscope support has been built into Vim.</p> <p>滇狐评h(hun)Q?滇狐目前 cscope 用得不如 ctags 多, 许多功能都不大熟?不过既然大家都说好, 那还是装着玩玩吧?/p> <p>安装注意事项Q?需要安?<span id="tcgolbk" class="remote"><a class="remote" >cscope</a></span><a name="idx0014"></a>?/p> <h2>1.9 project</h2> <p>下蝲地址Q?<span id="clebjot" class="remote"><a class="remote" >官方站点</a></span><a name="idx0015"></a></p> <p>?Ҏ(gu)qͼ You can use this plugin’s basic functionality to set up a list of frequently-accessed files for easy navigation. The list of files will be displayed in a window on the left side of the Vim window, and you can press <return></return>or double-click on filenames in the list to open the files. This is similar to how some IDEs I’ve used work. I find this easier to use than having to navigate a directory hierarchy with the file-explorer. It also obviates the need for a buffer explorer because you have your list of files on the left of the Vim Window.</p> <p>滇狐评h(hun)Q?食之无肉Q弃之有呟?/p> <p>安装注意事项Q?几乎没怎么用过Q?所以暂时没有发现需要注意的地方?/p> <h1>2 文档~写</h1> <h2>2.1 fencview</h2> <p>下蝲地址Q?<span id="oqjkwbg" class="remote"><a class="remote" >官方站点</a></span><a name="idx0016"></a></p> <p>官方描述Q?View a multi-byte encoded file in different encodings.</p> <p>滇狐评h(hun)Q?对于亚洲用户Q?其是中国用戯言Q?q是一个非帔R要的插gQ?它能自动识别文本文g的编码, l需要编辑各U不同编码的人员提供了极大方ѝ?/p> <h2>2.2 VIM LaTeX Suite</h2> <p>下蝲地址Q?<span id="hucowqg" class="remote"><a class="remote" >官方站点</a></span><a name="idx0017"></a></p> <p>官方描述Q?/p> <p>Vim is undoubtedly one of the best editors ever made. LaTeX is an extremely powerful, intelligent typesetter. Vim-LaTeX aims at bringing together the best of both these worlds.</p> <p>We attempt to provide a comprehensive set of tools to view, edit and compile LaTeX documents without needing to ever quit Vim. Together, they provide tools starting from macros to speed up editing LaTeX documents to compiling tex files to forward searching .dvi documents.</p> <p>See the features page for a brief tour of the various features in LaTeX-suite. All these features can be tuned extensively using the included texrc file. The screenshots page shows you how a typical working session with LaTeX-suite might progress.</p> <p>LaTeX-suite is made for Vim versions 6.0 and above. Installation instructions are given in the download page.</p> <p>滇狐评h(hun)Q?实在是非帔R帔R帔R常好的一个插Ӟ ?VIM ?LaTeX 的朋友无论如何都要试一试, 不用 VIM ?LaTeX 的朋友也要试一试, 说不定你会改变你的主意, 改用 VIM ?LaTeX?/p> <p>?装注意事: 如果使用 gvim 的话Q?需要注?scim 可能会和 LaTeX Suite 有冲H?解决Ҏ(gu)是要么把 scim ?on the spot 功能LQ?或者把 gtk_im_module 设ؓ scim?(较新版本 scim W二U方??/p> <p>另外Q?Z提高工作效率Q?强烈配置 VIM ?a >LaTeX 正向、反向搜?/a><a name="idx0018"></a>功能?/p> <h2>2.3 sketch</h2> <p>下蝲地址Q?<span id="lcdatgh" class="remote"><a class="remote" >官方站点</a></span><a name="idx0019"></a></p> <p>官方描述Q?Sketch.vim – Line drawing/painting using the mouse. Based on an idea by Morris.</p> <p>滇狐评h(hun)Q?很好玩, 虽然用到的时候不多, 但真一旦用CQ?q是会觉得这个东西很有用的?/p> <p>安装注意事项Q??.vimrc 中把 call ToggleSketch() 映射为命令,方便一些:</p> <div id="kbykzlf" class="code"><span style="color: rgb(165,42,42)"><strong>command</strong></span> <span style="color: rgb(165,42,42)"><strong>-</strong></span><span style="color: rgb(160,32,240)">nargs</span><span style="color: rgb(165,42,42)"><strong>=</strong></span><span style="color: rgb(46,139,87)"><strong>0</strong></span> ToggleSketch <span style="color: rgb(165,42,42)"><strong>call</strong></span> ToggleSketch()<br /> </div> <h1>3 日常生活</h1> <h2>3.1 Calendar</h2> <p>下蝲地址Q?<span id="cpemysm" class="remote"><a class="remote" >官方站点</a></span><a name="idx0020"></a></p> <p>官方描述Q?This script create calender window. This don’t use the external program (cal).</p> <p>滇狐评h(hun)Q?安装完毕后?:Calendar 命o打开一个垂直的日历H口Q?使用 :CalendarH 命o打开水^的日历窗口?应该q是比较有用的?/p> <p>安装注意事项Q?滇狐个h喜欢把日记的扩展名改?.txtQ?默认的是 .cal??calendar.vim 里面查找替换一下就可以了?另外Q?可以?.vimrc 里面修改日记所在的路径Q?默认?~/diary?/p> <div id="nhpmjst" class="code"><span style="color: rgb(165,42,42)"><strong>let</strong></span> g:calendar_diary<span style="color: rgb(165,42,42)"><strong>=<</strong></span>PATH<span style="color: rgb(165,42,42)"><strong>></strong></span><br /> </div> <h2>3.2 vimtips</h2> <p>下蝲地址Q?<span id="rabfndb" class="remote"><a class="remote" >官方站点</a></span><a name="idx0021"></a></p> <p>官方描述Q?/p> <p>Whenever you start Vim (but no more than daily) the script will open a help window with a Vim tip. You must download the tips separately, from <span id="bwaiuop" class="remote"><a class="remote" >官方站点</a></span><a name="idx0022"></a></p> <p>After installation, you can get the next tip with</p> <div id="tkohtug" class="code">:TipOfTheDay<br /> </div> <p>滇狐评h(hun)Q?每天看一条,慢慢变?VIM 牛了?/p> <p>安装注意事项Q?暂时没发现?/p> <h2>3.3 vimball</h2> <p>下蝲地址Q?<span id="scdaics" class="remote"><a class="remote" >官方站点</a></span><a name="idx0023"></a></p> <p>官方描述Q?The vimball plugin facilitates creating, extracting , and listing the contents of “vimball” archives (*.vba).</p> <p>滇狐评h(hun)Q?/p> <p>非常的一个插Ӟ 专门用来安装其它插g的?Vimball 格式的插件安装方便, 只需?Vim 打开Q?执行一?<code>:so %</code> 卛_Q?无须用户自己满世界找插g的安装\径, 更无L天想着更新 helptags?滇狐已经军_所有自q写或修改的插件改?Vimball 格式了, 而且目前有越来越多的插g使用 Vimball 的格式发布, 因此大家手头上一定要备有一?Vimball 插gQ?虽然 Vim 内置了一?Vimball 插gQ?但版本太低, 许多 Vimball 无法通过它正常安装, 因此q是大家?Vim |站上下载一份最新版?Vimball 插g?/p> <h2>3.4 GetLatestScript</h2> <p>下蝲地址Q?<span id="bhlmyzi" class="remote"><a class="remote" >官方站点</a></span><a name="idx0024"></a></p> <p>官方描述Q?GetLatestVimScripts is a plugin that automates retrieval of the latest versions of the scripts that you yourself use!</p> <p>滇狐评h(hun)Q?/p> <p>非常有用的一个插Ӟ 有了它, 滇狐可以时M用上最新鲜的插Ӟ 而不用不停地?Vim 主页上去看插件的更新情况了?/p> <p>安装注意事项Q?/p> <p>安装完毕后, 创徏文g <code>~/.vim/GetLatest/GetLatestVimScripts.dat</code>Q?按照q样的格式编写你的自动下载配|文Ӟ</p> <div id="cbyvhbn" class="code">ScriptID SourceID Filename<br /> --------------------------<br /> <插g id> 0 [:AutoInstall:] <插g文g?gt;<br /> <插g id> 0 [:AutoInstall:] <插g文g?gt;<br /> ...<br /> </div> <p>每行写一个插件的下蝲信息?插g id 是?Vim 主页下蝲插g?URL 中的 <code>script_id=</code> 后面的那个数字?W二个参数是前一ơ成功下载到的插件文件编P W一ơ用的时候该参数?0Q?成功使用一ơ后会自动被修改插g最新版本的文g~号?W三个参数是该插件下载成功后是否自动安装Q?如果要自动安装的话就写上 <code>:AutoInstall:</code>?滇狐不徏议用自动安装, 因此W三个参数徏议省略不要写?W四个参数是插g的名Uͼ 一般和下蝲到的插g的文件名相同Q?当然即不同也不会造成太大影响Q?q个参数主要用于防止某些插g自动自己加入到q张列表Q?q用于指定插g的下载文件名Q?更详l情况请参看该插件的文档?以下是滇狐自q <code>GetLatestVimScripts.dat</code>Q?供大家参考:</p> <div id="vvnowfp" class="code">ScriptID SourceID Filename<br /> --------------------------<br /> 1440 7151 winmanager.vba.gz<br /> 1708 7166 fencview.vim<br /> 1066 6974 cecutil.vim<br /> 273 7169 taglist.zip<br /> 31 7218 a.vim<br /> 1735 7223 echofunc.vim<br /> 1520 5859 omnicppcomplete.zip<br /> 861 7132 Viki.vba.gz<br /> 1863 7157 tlib.vba.gz<br /> 705 2667 sketch.zip<br /> 42 7032 bufexplorer.zip<br /> 1075 7079 netrw.vim<br /> 1502 7078 vimball.vim<br /> 642 7080 getscript.vim<br /> 642 7080 GetLatestVimScripts.vim<br /> </div> <p>~写?<code>GetLatestVimScripts.dat</code> 后, 打开 VimQ?q行 <code>:GetLatestVimScripts</code>Q?卛_自动下蝲最新的插g?插g下蝲后存攑֜ <code>~/.vim/GetLatest/</code> 中, 可以到那里找到后安装Q?安装完毕后安装文件可以删除?/p> <h2>3.5 <a >ViKi</a><a name="idx0025"></a></h2> <p>你现在看到的q张|页是使用 <a >ViKi</a><a name="idx0026"></a> 制作的?也许它不漂亮Q?但是很清UQ?而且d信息非常方便??<a >ViKi</a><a name="idx0027"></a> 滇狐从J重?Html ~辑工作中解攑և来, 使滇狐有_的勇气重新开始制作个Zc?Z更好地说?<a >ViKi</a><a name="idx0028"></a>Q?滇狐该插g的用单独放?a >另一张网?/a><a name="idx0029"></a>中?/p> </div> <img src ="http://m.tkk7.com/conans/aggbug/209593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-20 23:07 <a href="http://m.tkk7.com/conans/articles/209593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> vim的设|参?/title><link>http://m.tkk7.com/conans/articles/209585.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Fri, 20 Jun 2008 15:01:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/209585.html</guid><description><![CDATA[<div id="rygseeu" class="cnt"> <p>VIM 中可供用户定制的选项非常非常多, 作ؓ初学者, 我们没有必要了解q么多东ѝ?下面Q?滇狐单列Z一些最常用的配|项Q?大家可以Ҏ(gu)自己的需要将q些内容d到自q .vimrc 中?/p> <h1>1 基本讄</h1> <ul class="Itemize"> <li id="gygvdpf" class="Itemize asterisk">set nocp <br class="itempara" /> 该命令指定让 VIM 工作在不兼容模式下??VIM 之前Q?出现q一个非常流行的~辑器叫 vi?VIM 许多操作?vi 很相| 但也有许多操作与 vi 是不一L?如果使用“:set cp”命o打开了兼Ҏ(gu)式开关的话, VIM 尽可能地模?vi 的操作模式?<br class="itempara" /> 也许有许多h喜欢“最正统?vi”的操作模式, 对于初学者来_ vi 里许多操作是比较不方便的?<br class="itempara" /> 举一个例子, VIM 里允许在 Insert 模式下用方向键Ud光标Q??vi 里在 Insert 模式下是不能Ud光标的, 必须使用 ESC 退回到 Normal 模式下才行?<br class="itempara" /> 再D一个例子, vi 里?u 命o可以撤消一ơ先前的操作Q?再次按下 u Ӟ 撤?#8220;撤消”q个动作本nQ?也就是我们常说的“重复”(redo)??VIM 里可以?u 命o撤消多步操作Q?“重复”使用的快捷键?Ctrl + R?<br class="itempara" /> 使用兼容模式后, VIM 放弃这些新的功能, 量模仿 vi 的各U操作方式?只有在不兼容模式下, 才能更好地发?VIM 自n的特炏V?Bram L强烈推荐大家使用 VIM 的不兼容模式Q?滇狐也是q样推荐的?请务必在你的 .vimrc 中的W一行写上: “set nocp”? <li id="jbcdlqr" class="Itemize asterisk">set ru <br class="itempara" /> 该命令打开 VIM 的状态栏标尺?默认情况下, VIM 的状态栏标尺在屏q底部, 它能x昄当前光标所在位|在文g中的行号、列P 以及对应的整个文件的癑ֈ比?打开标尺可以l文件的~辑工作带来一定方ѝ? <li id="xaiqcsm" class="Itemize asterisk">set hls <br class="itempara" /> 搜烦旉亮显C扑ֈ的文本?该指令的功能?vimtutor 中已l有q介l, q里׃多说了?其实g许多人ƈ不喜Ƣ这个功能? <li id="lltfchq" class="Itemize asterisk">set is <br class="itempara" /> 搜烦时在未完全输入完毕要索的文本时就开始检索?vimtutor 对该命o也有q介l, 滇狐q不喜欢q个功能Q?因此滇狐自己的配|文仉是没有这条命令的?但是周围有朋友很喜欢q个Q?因此滇狐q是它列在q里? <li id="ynkweyo" class="Itemize asterisk">syntax on <br class="itempara" /> 打开关键字上艌Ӏ?q行E序设计的朋友应该都知道关键字上色是什么东西, 因此q里׃多说了?不进行程序设计的朋友不妨也打开q个功能Q?虽然不一定能够用得着Q?但这个功能其实也是很好玩的? <li id="dofvoeu" class="Itemize asterisk">set backspace=indent,eol,start <br class="itempara" /> 设想q样一个情况: 当前光标前面有若q字母, 我们按下 i 键进入了 Insert 模式Q?然后输入?3 个字母, 再按 5 下删?Backspace)?默认情况下, VIM 仅能删除我们新输入的 3 个字母, 然后喇叭“嘟嘟”响两声?如果我们“set backspace=start”Q?则可以在删除了新输入?3 个字母之后, l箋向前删除原有的两个字W?<br class="itempara" /> 再设想一个情况: 有若q行文字Q?我们把光标移C间某一行的行首Q??i 键进?Insert 模式Q?然后按一?Backspace?默认情况下, 喇叭?#8220;?#8221;一壎ͼ 然后没有M动静?如果我们“set backspace=eol”Q?则可以删除前一行行末的回RQ?也就是说两行拼接v来?<br class="itempara" /> 当我们设|了自动~进后, 如果前一行羃q了一定距, 按下回R后, 下一行也会保持相同的~进?默认情况下, 我们不能?Insert 模式下直接按 Backspace 删除行首的羃q?如果我们“set backspace=indent”Q?则可以开启这一功能?<br class="itempara" /> 上述三项功能Q?你可以根据自q需要, 选择其中一U或几种Q?用逗号分隔各个选项?把这三个选项都选上? <li id="gchxjkp" class="Itemize asterisk">set whichwrap=b,s,<,>,[,] <br class="itempara" /> 默认情况下, ?VIM 中当光标Ud一行最左边的时候, 我们l箋按左键, 光标不能回到上一行的最双?同样圎ͼ 光标C一行最双的时候, 我们不能通过l箋按右跛_下一行的最左边?但是Q?通过讄 whichwrap 我们可以对一部分按键开启这功能?如果惛_某一个或几个按键开启到头后自动折向下一行的功能Q?可以把需要开启的键的代号写到 whichwrap 的参数列表中Q?各个键之间用逗号分隔?以下?whichwrap 支持的按键名U列表: <ul class="Itemize"> <li id="yfjvdic" class="Itemize asterisk">b <br class="itempara" /> ?Normal ?Visual 模式下按删除(Backspace)键? <li id="dksefvp" class="Itemize asterisk">s <br class="itempara" /> ?Normal ?Visual 模式下按I格键? <li id="szsabgw" class="Itemize asterisk">h <br class="itempara" /> ?Normal ?Visual 模式下按 h 键? <li id="rckseus" class="Itemize asterisk">l <br class="itempara" /> ?Normal ?Visual 模式下按 l 键? <li id="fbnpsbc" class="Itemize asterisk">< <br class="itempara" /> ?Normal ?Visual 模式下按左方向键? <li id="qqnvsxn" class="Itemize asterisk">> <br class="itempara" /> ?Normal ?Visual 模式下按x向键? <li id="wdwefoa" class="Itemize asterisk">~ <br class="itempara" /> ?Normal 模式下按 ~ ?{当前字母大小?? <li id="cyvdpuz" class="Itemize asterisk">[ <br class="itempara" /> ?Insert ?Replace 模式下按左方向键? <li id="pwpxuhx" class="Itemize asterisk">] <br class="itempara" /> ?Insert ?Replace 模式下按x向键?</li> </ul> <li id="xtmykpu" class="Itemize asterisk">set encoding=cp936 <br class="itempara" /> 讄当前字符~码为简体中文?q里q有一D能够自动判断文件的 encodingQ?自动选择合适的~码?.vimrc 代码Q?感兴的话可以放到自q配置文g中用: </li> </ul> <div id="jfrvklb" class="code"> <pre><font color="#0000ff">" Encoding settings</font><br /> <font color="#a52a2a"><strong>if</strong></font> <font color="#008b8b">has</font><font color="#a52a2a"><strong>(</strong></font><font color="#ff00ff">"multi_byte"</font><font color="#a52a2a"><strong>)</strong></font><br /> <font color="#0000ff"> " Set fileencoding priority</font><br /> <font color="#a52a2a"><strong>if</strong></font> <font color="#008b8b">getfsize</font><font color="#a52a2a"><strong>(</strong></font>expand<font color="#a52a2a"><strong>(</strong></font><font color="#ff00ff">"%"</font><font color="#a52a2a"><strong>))</strong></font> <font color="#a52a2a"><strong>></strong></font> <font color="#ff00ff">0</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">fileencodings</font>=ucs-bom<font color="#a52a2a"><strong>,</strong></font>utf-8<font color="#a52a2a"><strong>,</strong></font>cp936<font color="#a52a2a"><strong>,</strong></font>big5<font color="#a52a2a"><strong>,</strong></font>euc-jp<font color="#a52a2a"><strong>,</strong></font>euc-kr<font color="#a52a2a"><strong>,</strong></font>latin1<br /> <font color="#a52a2a"><strong>else</strong></font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">fileencodings</font>=cp936<font color="#a52a2a"><strong>,</strong></font>big5<font color="#a52a2a"><strong>,</strong></font>euc-jp<font color="#a52a2a"><strong>,</strong></font>euc-kr<font color="#a52a2a"><strong>,</strong></font>latin1<br /> <font color="#a52a2a"><strong>endif</strong></font><br /> <br /> <font color="#0000ff"> " CJK environment detection and corresponding setting</font><br /> <font color="#a52a2a"><strong>if</strong></font> v:lang <font color="#a52a2a"><strong>=~</strong></font> <font color="#ff00ff">"^zh_CN"</font><br /> <font color="#0000ff"> " Use cp936 to support GBK, euc-cn == gb2312</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">encoding</font>=cp936<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">termencoding</font>=cp936<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">fileencoding</font>=cp936<br /> <font color="#a52a2a"><strong>elseif</strong></font> v:lang <font color="#a52a2a"><strong>=~</strong></font> <font color="#ff00ff">"^zh_TW"</font><br /> <font color="#0000ff"> " cp950, big5 or euc-tw</font><br /> <font color="#0000ff"> " Are they equal to each other?</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">encoding</font>=big5<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">termencoding</font>=big5<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">fileencoding</font>=big5<br /> <font color="#a52a2a"><strong>elseif</strong></font> v:lang <font color="#a52a2a"><strong>=~</strong></font> <font color="#ff00ff">"^ko"</font><br /> <font color="#0000ff"> " Copied from someone's dotfile, untested</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">encoding</font>=euc-kr<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">termencoding</font>=euc-kr<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">fileencoding</font>=euc-kr<br /> <font color="#a52a2a"><strong>elseif</strong></font> v:lang <font color="#a52a2a"><strong>=~</strong></font> <font color="#ff00ff">"^ja_JP"</font><br /> <font color="#0000ff"> " Copied from someone's dotfile, unteste</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">encoding</font>=euc-jp<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">termencoding</font>=euc-jp<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">fileencoding</font>=euc-jp<br /> <font color="#a52a2a"><strong>endif</strong></font><br /> <font color="#0000ff"> " Detect UTF-8 locale, and replace CJK setting if needed</font><br /> <font color="#a52a2a"><strong>if</strong></font> v:lang <font color="#a52a2a"><strong>=~</strong></font> <font color="#ff00ff">"utf8___FCKpd___0quot;</font> <font color="#a52a2a"><strong>||</strong></font> v:lang <font color="#a52a2a"><strong>=~</strong></font> <font color="#ff00ff">"UTF-8___FCKpd___0quot;</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">encoding</font>=utf-8<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">termencoding</font>=utf-8<br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">fileencoding</font>=utf-8<br /> <font color="#a52a2a"><strong>endif</strong></font><br /> <font color="#a52a2a"><strong>else</strong></font><br /> <font color="#a52a2a"><strong>echoerr</strong></font> <font color="#ff00ff">"Sorry, this version of (g)vim was not compiled with multi_byte"</font><br /> <font color="#a52a2a"><strong>endif</strong></font></pre> </div> <h1>2 文本~辑讄</h1> <ul class="Itemize"> <li id="xexjcdm" class="Itemize asterisk">set sw=4 <br class="itempara" /> 自动~进的时候, ~进寸?4 个空根{? <li id="mimugwj" class="Itemize asterisk">set ts=4 <br class="itempara" /> Tab 宽度?4 个字W? <li id="sgdamns" class="Itemize asterisk">set et <br class="itempara" /> ~辑时将所?Tab 替换为空根{?<br class="itempara" /> 该选项只在~辑时将 Tab 替换为空| 如果打开一个已l存在的文gQ?q不会将已有?Tab 替换为空根{?如果希望q行q样的替换的话, 可以使用q条命o“:retab”?</li> </ul> <h1>3 断行讄</h1> <ul class="Itemize"> <li id="dzhtmyw" class="Itemize asterisk">set lbr <br class="itempara" /> 不在单词中间断行?讄了这个选项后, 如果一行文字非帔RQ?无法在一行内昄完的话, 它会在单词与单词间的I白处断开Q?量不会把一个单词分成两截放在两个不同的行里? <li id="mxfgzpj" class="Itemize asterisk">set fo+=mB <br class="itempara" /> 打开断行模块对亚z语a支持?m 表示允许在两个汉字之间断行, 即汉字之间没有出现I格?B 表示两行合qؓ一行的时候, 汉字与汉字之间不要补I格?该命令支持的更多的选项请参看用h册?</li> </ul> <h1>4 C/C++ ~码讄</h1> <ul class="Itemize"> <li id="fmurgty" class="Itemize asterisk">set sm <br class="itempara" /> 昄括号配对情况?打开q个选项后, 当输入后括号 (包括括受中括号、大括号) 的时候, 光标会蟩回前括号片刻Q?然后跛_来, 以此昄括号的配Ҏ(gu)c? <li id="gjgosbg" class="Itemize asterisk">set cin <br class="itempara" /> 打开 C/C++ 风格的自动羃q?打开了自动羃q后Q?在编码的时候我们可以?#8220;V”命o选中一D|本后Q??#8220;=”这D|本重新调整羃q格式, 在一定程度上起到代码化的作用?<br class="itempara" /> 另外Q?打开了自动羃q后Q?在?TERM 下的 vim 的时Q?_脓(chung)代码时常怼出现版式混ؕ的现象?那是因ؓ TERM q不知道你现在正在粘贴代码, 它直?#8220;_脓(chung)”动作?vim 解释为键入, 因此 vim 便按照设|的自动~进格式Z的代码调整了~进?不幸的是Q?_脓(chung)q去的代码中本n已经包含了羃q, 因此便出C版式混ؕ的情c??gvim 中就不会出现q个问题Q?因ؓ它能够知道你现在正在_脓(chung)?<br class="itempara" /> 知道了这个症状的来由Q?解决Ҏ(gu)也就显而易见了Q?在粘贴的时候把所有自动羃q都关闭Q?_脓(chung)完毕之后再打开?一个个手工关闭自动~进未免q于J琐Q?vim 为我们提供了一个很好用的命令, 只要输入“:set paste”Q?可以关闭所有自动羃q?_脓(chung)完毕后再输入“:set nopaste”可以重新打开原有的自动羃q设|了? <li id="zzslxys" class="Itemize asterisk">set cino=:0g0t0(sus <br class="itempara" /> 讑֮ C/C++ 风格自动~进的选项Q?q里要介l一下这D代码里用到的选项的含义, cino 支持的选项q很多, 更多选项L用户手册?</li> </ul> <div id="kvsamgl" class="code"> <pre><font color="#0000ff">// :0</font><br /> <font color="#0000ff">//</font><br /> <font color="#0000ff">// switch 语句之下?case 语句~进 0 个空|也就是说不羃q,?switch 块^</font><br /> <font color="#0000ff">// 齐,使用q样风格Q?/font><br /> <font color="#a52a2a"><strong>switch</strong></font> (x)<br /> {<br /> <font color="#a52a2a"><strong>case</strong></font> <font color="#ff00ff">1</font>:<br /> a = b;<br /> <font color="#a52a2a"><strong>break</strong></font>;<br /> <font color="#a52a2a"><strong>default</strong></font>:<br /> }<br /> <br /> <font color="#0000ff">// g0</font><br /> <font color="#0000ff">//</font><br /> <font color="#0000ff">// class、struct {之下的讉K权限控制语句Q如 public、protected、private {,</font><br /> <font color="#0000ff">// 相对 class、struct {所在的块羃q?0 个空|?class {块q齐Q用这L</font><br /> <font color="#0000ff">// 风格Q?/font><br /> <font color="#2e8b57"><strong>class</strong></font> foo<br /> {<br /> <font color="#a52a2a"><strong>public</strong></font>:<br /> <font color="#2e8b57"><strong>int</strong></font> a;<br /> <font color="#a52a2a"><strong>private</strong></font>:<br /> <font color="#2e8b57"><strong>int</strong></font> b;<br /> };<br /> <br /> <font color="#0000ff">// t0</font><br /> <font color="#0000ff">//</font><br /> <font color="#0000ff">// 如果函数q回g函数名不在同一行,则返回值羃q?0 个空|也就是说不羃q,?/font><br /> <font color="#0000ff">// 下所C:</font><br /> <br /> <font color="#0000ff">// set cino=t4</font><br /> <font color="#2e8b57"><strong>int</strong></font><br /> func1()<br /> {<br /> }<br /> <br /> <font color="#0000ff">// set cino=t0</font><br /> <font color="#2e8b57"><strong>int</strong></font><br /> func()<br /> {<br /> }<br /> <br /> <font color="#0000ff">// (sus</font><br /> <font color="#0000ff">//</font><br /> <font color="#0000ff">// 当一Ҏ(gu)可多行时Q其后的行羃q前?sw 指定的距,效果如下Q?/font><br /> <font color="#2e8b57"><strong>int</strong></font> a = (<font color="#ff00ff">1</font> + <font color="#ff00ff">2</font> + <font color="#ff00ff">3</font><br /> + <font color="#ff00ff">4</font> + <font color="#ff00ff">5</font> + <font color="#ff00ff">6</font><br /> + <font color="#ff00ff">7</font> + <font color="#ff00ff">8</font>) * <font color="#ff00ff">9</font>;</pre> </div> <ul class="Itemize"> <li id="jfcgdij" class="Itemize asterisk">set ai <br class="itempara" /> 打开普通文件类型的自动~进?该自动羃q不?cindent Q?但它可以Z~辑?C/C++ 文g提供一定帮助?</li> </ul> <h1>5 其它讄</h1> <ul class="Itemize"> <li id="fbrzlqv" class="Itemize asterisk">set selectmode= <br class="itempara" /> 不?selectmode? <li id="nuczhnh" class="Itemize asterisk">set mousemodel=popup <br class="itempara" /> 当右键单ȝ口的时候, 弹出快捷菜单? <li id="vvseins" class="Itemize asterisk">set keymodel= <br class="itempara" /> 不?#8220;Shift + 方向?#8221;选择文本Q?“Shift + 方向?#8221;代表向指定方向蟩一个单词?如果你喜Ƣ这功能的话, 可以使用“set keymodel=startsel,stopsel”打开它? <li id="nyrkotj" class="Itemize asterisk">set selection=inclusive <br class="itempara" /> 指定在选择文本Ӟ 光标所在位|也属于被选中的范围?如果指定 selection=exclusive 的话Q?可能会出现某些文本无法被选中的情c? <li id="hdhemns" class="Itemize asterisk">colo torte <br class="itempara" /> 选择 torte 配色Ҏ(gu)?VIM 里内|了许多关键字上色的配色Ҏ(gu)Q?另外你还可以到网上下载更多配色方案, 或是自己~写?点击“~辑”→“调色?#8221;Q?p列出所有支持的配色Ҏ(gu)?你可以把“调色?#8221;子菜单剪下来Q?然后慢慢选择Q?挑出一个你最喜欢的配色方案来?</li> </ul> <h1>6 囑Ş界面讄</h1> <ul class="Itemize"> <li id="gcckwmr" class="Itemize asterisk">set nowrap <br class="itempara" /> 指定不折行?如果一行太长, 过屏幕宽度Q?则向双延到屏q外面?如果使用囑Ş界面的话Q?指定不折行视觉效果会好得多? <li id="fqroend" class="Itemize asterisk">set guioptions+=b <br class="itempara" /> d水^滚动条?如果你指定了不折行, 那ؓH口d一个水qx动条非常有必要了? <li id="xpqroeu" class="Itemize asterisk">set guifont=Courier\ 9 <br class="itempara" /> 讄囑Ş界面下的字体?你可以点“~辑”→“选择字体”Q?然后在对话框中选出你喜Ƣ的字体与字P 选择完毕后, 先按几下 ESC 认处在 Normal 模式下, 然后输入q条命oQ?#8220;:set guifont?” 回R?gvim 屏幕最下方会显C出你当前所用的字体的名UC字号?获得的l果写到配置文g里面可以了Q?需要注意一点, 如果字体名称里面含有I格的话Q?在抄的时候需要在所有空格前面加一个斜杠?</li> </ul> <h1>7 条g选择</h1> <p>同一个配色方案, ?gvim 下和字符界面?vim 下效果大相径庭, 滇狐个h的习惯是Q??gvim 下?torte 配色Ҏ(gu)Q??vim 下?ron 配色Ҏ(gu)?因此我们有必要针?gvim ?vim q行不同的设|?/p> <p>另外Q?前面我们?gvim 下不使用折行Q?开启水qx动条Q?但在 vim 下, 是没有滚动条可用的, 因此q是有必要ؓ vim 保留自动折行?/p> <p>条g选择讄的格式如下:</p> <div id="gcrspfo" class="code"> <pre><font color="#a52a2a"><strong>if</strong></font> <font color="#a52a2a"><strong>(</strong></font>has<font color="#a52a2a"><strong>(</strong></font><font color="#ff00ff">"gui_running"</font><font color="#a52a2a"><strong>))</strong></font><br /> <font color="#0000ff">" 囑Ş界面下的讄</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">nowrap</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">guioptions</font>+=b<br /> <font color="#a52a2a"><strong>colo</strong></font> torte<br /> <font color="#a52a2a"><strong>else</strong></font><br /> <font color="#0000ff">" 字符界面下的讄</font><br /> <font color="#a52a2a"><strong>set</strong></font> <font color="#a020f0">wrap</font><br /> <font color="#a52a2a"><strong>colo</strong></font> ron<br /> <font color="#a52a2a"><strong>endif</strong></font></pre> </div> </div> <img src ="http://m.tkk7.com/conans/aggbug/209585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-20 23:01 <a href="http://m.tkk7.com/conans/articles/209585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://yytengsheng.com" target="_blank">**˹ëƬ</a>| <a href="http://sewuji.com" target="_blank">ĻAVJI</a>| <a href="http://xjyzz.com" target="_blank">պƷƵ</a>| <a href="http://4husese.com" target="_blank">99Ƶ߿</a>| <a href="http://lybb16.com" target="_blank">9ֻоƷ</a>| <a href="http://xww678.com" target="_blank">鶹ȫַ</a>| <a href="http://www5g9.com" target="_blank">޾Ʒר</a>| <a href="http://www-63228.com" target="_blank">Ļ</a>| <a href="http://aiqingdao999.com" target="_blank">Ƶȫ</a>| <a href="http://726zh.com" target="_blank">޹Ʒۺ˳ۺվ</a>| <a href="http://wwwaa875.com" target="_blank">޹˾ƷӰ</a>| <a href="http://633223.com" target="_blank">һػaѴƬ</a>| <a href="http://hongyue8.com" target="_blank">Ƭѹۿþ</a>| <a href="http://tlyihong.com" target="_blank">xxxxxܴƬƵ</a>| <a href="http://zjj100.com" target="_blank">ѹۿŮˮƵ</a>| <a href="http://dsdkg.com" target="_blank">ò߹ۿƵ</a>| <a href="http://zhaosifuwang.com" target="_blank">ҹƷƵ</a>| <a href="http://gujingyuye.com" target="_blank">վƵA˫</a>| <a href="http://js06vip.com" target="_blank">Ƭһ</a>| <a href="http://6969aaa.com" target="_blank">ƷۺϾþĻ</a>| <a href="http://kkjk123.com" target="_blank">ɫĻAV</a>| <a href="http://lfhuanxin.com" target="_blank">޾ƷҹĻ</a>| <a href="http://sflhb.com" target="_blank">޹</a>| <a href="http://xsdggzs.com" target="_blank">þ޾Ʒ</a>| <a href="http://cqtchtwq.com" target="_blank">ëƬһëƬ</a>| <a href="http://91sebo.com" target="_blank">Դ°߹ۿ</a>| <a href="http://aqdav22.com" target="_blank">޾Ʒsuvһ88</a>| <a href="http://715686.com" target="_blank">˳Ƶ߹ۿ</a>| <a href="http://js06vip.com" target="_blank">99鶹þþùƷ </a>| <a href="http://aierphoto.com" target="_blank">ձһ</a>| <a href="http://367316.com" target="_blank">㽶aavۺ</a>| <a href="http://www16am8.com" target="_blank">91޾Ʒ鶹</a>| <a href="http://am3736.com" target="_blank">aëƬƵѹۿ</a>| <a href="http://youkabaitiao.com" target="_blank">avƬ߲</a>| <a href="http://as5566.com" target="_blank">Ƶ߾Ʒ</a>| <a href="http://www-64000.com" target="_blank">avר߹ۿ </a>| <a href="http://gift1town.com" target="_blank">337pձŷ޴</a>| <a href="http://22youjizz.com" target="_blank">޾Ʒbv߹ۿ</a>| <a href="http://ynyinglie.com" target="_blank">ѸӰ߹ۿ</a>| <a href="http://avdian126.com" target="_blank">ѲƵ</a>| <a href="http://shcxsoft.com" target="_blank">vavava</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>