本系列文章,是原来我在CSDN的Easwy专栏撰写的”使用VIM开发软件项目”系列。Easwy的博客搬家以后,就把CSDN上的文章全部移到此处。
写本系列文章的最初想法,是介绍如何用vi/vim开发软件。但纵观整个系列,讲述的其实和软件开发关系并不大,基本都在讲vim的使用技巧、vim的配置及vimrc、vim的命令和vim的插件。因此,把文章移到新站后,我把本系列的名字改为”vi/vim使用进阶”,希望大家一如既往的支持该系列。
本文是这一系列文章的总目录,可由此访问本系列所有文章。
我使用docbook重新整理了一下这些文章,你可以在这里下载html版本的vi/vim使用进阶,现在也提供PDF版本下载。
[目录]
-
vi/vim使用进阶: 序言
本文是本系列的序言,讲述我使用vi/vim的经历和心得,以及对vi/vim初学者的一些建议。文中的抓图展示了我的vim使用环境。
-
vi/vim使用进阶: 使用会话和viminfo
本文介绍如何使用vim的会话 (session) 和viminfo来恢复vim的使用环境。如果你需要经常恢复到相同工作环境,此功能非常有用,你不必一次次重新打开文件、设置你的工作环境。
-
vi/vim使用进阶: vimrc初步
本文简要介绍了vimrc的知识以及如何使用vimrc保存vim的配置。文中还提供了一些键映射(map),使用这些映射可以快速编辑和加载vimrc。关于vimrc的更多应用,参见本系列其它文章。
-
vi/vim使用进阶: 保存项目相关配置
本篇主要以path选项为例,讲述如何保存和恢复项目相关的配置。在使用vim的过程中,你可能同时打开几个project,每个project的配置可能都不相同,文中介绍了两种方法来保存每个project自身的独有配置。一种是使用一个固定的vim配置脚本保存project相关的path设置、按键映射等;另外一种是利用前面文章所介绍的会话(session)机制。
-
vi/vim使用进阶: 使用标签(tag)文件
本文介绍了如何使用Exuberant ctags生成tag文件以及在vim中如何使用tag文件进行跳转、查找等操作。还简要介绍了tag文件的格式,在后面介绍的Lookupfile插件中,会利用tag文件便捷的查找、打开文件。
-
vi/vim使用进阶: 使用taglist插件
本文介绍如何使用taglist插件(plugin)来查看程序中的标签(tag),并介绍了taglist插件的配置和用法。taglist插件利用Exuberant ctags程序生成标签文件,并提供像Source Insight那样的标签窗口,可以方便的跳转到函数、变量等标签所在的位置。
-
vi/vim使用进阶: 文件浏览和缓冲区浏览
本节介绍了如何在vim中浏览文件,以及如何查看当前打开的缓冲区。利用netrw插件,可以方便的在vim中浏览各个目录、打开指定文件,而不用切换到文件浏览器或shell;当然,netrw插件的作用并不仅仅局限于此。利用bufexplorer插件,则可以方便的查看打开的缓冲区(buffer),在缓冲区间进行切换。本文的最后介绍了winmanager插件,使用这个插件,可以把netrw插件、bufexplorer插件和taglist插件整合起来,使vim看起来更像一个集成开发环境(IDE)。
-
vi/vim使用进阶: lookupfile插件
如果你在开发一个大的项目,当你想在一大堆文件中查找或者编辑指定文件时,Lookupfile插件是必不可少的。使用它,可以快速查找项目文件、可以在缓冲区查找指定文件、可以浏览指定目录等。在查找时甚至可以使用正则表达式(regex),在你只记得部分文件名或目录名时,这可是救命的手段。
-
vim最吸引人的一点是,它支持无穷多的文件类型,而且能够随意扩展。在本文主要介绍如何打开文件类型检测的功能,以及如何使用基于文件类型的插件(filetype plugin)。正因为有了文件类型检测的功能,我们才可能针对不同的类型的文件,定义不同的键映射(map)、设置不同的选项,进行语法高亮的染色(后续文章中介绍)…你可以实现任意你想实现的功能。
-
vi/vim使用进阶: 乱花渐欲迷人眼 – 语法高亮
VIM并不是只有黑色两色。正相反,它提供了非常灵活的机制允许用户自定义色彩。运行在终端中的VIM,由于终端本身的限制,只能使用若干种固定的颜色;但对于GVIM来讲,你可以根据你的喜好调出任意的颜色。本文介绍的,正是vim的语法高亮功能。
-
vi/vim使用进阶: 程序员的利器 – cscope
在前面的文章中介绍了利用ctags生成的tag文件,跳转到标签定义的地方。但如果想查找函数在哪里被调用,或者标签在哪些地方出现过,ctags就无能为力了,这时需要使用更为强大的cscope。本文就介绍如何使用cscope,有了它,你可以把source insight抛到一边去了。
-
vi/vim使用进阶: 剑不离手 – quickfix
vim由一个程序员开发,并且为更多的程序员所使用,所以vim对开发人员的强大支持,也就可以理解了。quickfix模式的引入就是一个例子。quickfix模式,是一种加速你开发的工作方式,使你不必离开vim,就可以快速的完成”编辑-编译-修正”你的程序。它不仅仅对开发人员有用,只要你的工作有类似”编辑-编译-修正”的过程,它就可以极大的简化你的工作。
-
vi/vim使用进阶: 智能补全
使用过Source Insight的人一定对它的自动补全功能印象深刻,在很多的集成开发环境中,也都支持自动补全。vim做为一个出色的编辑器,这样的功能当然少不了。本文主要介绍vim的OMNI补全。将在下一篇中介绍其它的补全方式。
-
vi/vim使用进阶: 自动补全
本文继续介绍vim的补全功能。作为一个通用的编辑器,vim实现的补全功能并不仅仅限于对程序的补全,它可以对文件名补全、根据字典进行补全、根据本缓冲区或其它缓冲区类似的内容进行补全、根据文件语法补全等等,它甚至允许用户自己编写函数来实现定制的补全。本文简要介绍了这些补全的方法。
-
vi/vim使用进阶: 指随意动,移动如飞 (一)
VIM提供的移动方式多如牛毛,但我们并不需要掌握全部这些命令,只需要掌握最适合自己的那些命令。本文介绍了最常用的一些移动命令,在下篇文章中将介绍更高级的移动方法。
-
vi/vim使用进阶: 指随意动,移动如飞 (二)
本文介绍如何在vim中移动,主要涉及如何使用跳转表(jump-motions)、使用标记(mark)、使用折行(fold),以及如何在程序中移动。
-
vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb
本文介绍了如何使用vimgdb补丁在vim中用gdb调试程序,同时还介绍了vim的编译方法。然而,vim只是一个编辑器,而不是一个集成开发环境(IDE),所以它对调试的支持很有限。
-
vi/vim使用进阶: vimgdb调试时的常见问题及解决
在上篇文章中我介绍了如何使用vimgdb补丁在vim/gvim中调试程序。后来陆续有一些读者反馈了他们在使用中遇到的问题。在本文中总结一下常见的问题及解决办法。
-
vi/vim使用进阶: 在gvim中使用GDB调试 – 使用pyclewn
本文介绍了如何使用pyclewn在gvim中用gdb调试程序。pyclewn是vimgdb作者的另外一个作品,使用它可以使gvim在UNIX/LINUX以及windows上与gdb集成调试。
-
vi/vim使用进阶: vim编译中遇到的问题及解决方法
本文主要介绍vim编译中遇到的问题及解决办法。文中介绍了如何通过看config.log,来了解配置失败的原因。有些网友编译图形化的gvim失败,可以参照本文的方法解决。
-
vi/vim使用进阶: 在vim中使用拷贝/粘贴
未完待续
-
vi/vim使用进阶: 映射自己的vim按键
未完待续
-
vi/vim使用进阶: 巧用vim的缩写功能
未完待续
-
vi/vim使用进阶: 强大的自动命令(autocmd)
未完待续
-
其它你感兴趣的话题
未完待续
原创文章,转载请注明:转载自Easwy的博客 [ http://easwy.com/blog/ ]
本文链接地址: http://easwy.com/blog/archives/advanced-vim-skills-catalog/
原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]
本文链接地址: http://easwy.com/blog/archives/advanced-vim-skills-catalog/
文章的脚注信息由WordPress的wp-posturl插件自动生成
兄弟真是辛苦了!!猛赞一个
[回复]
学习了,收藏慢慢看。
[回复]
不错 支持
[回复]
看了一大半,虽然很难,但是我专挑会的看,收获不少,呵呵……
[回复]
受益匪浅!
[回复]
正想系统学习一下vim,先收藏了,慢慢看,呵呵.
[回复]
能否转成pdf格式文档,以方便打印阅读?
[回复]
@tahaomei
我现在还没设置docbook转换为PDF的环境,等我配置好了,再把它转成PDF放上来。
[回复]
楼主能否将你的vimrc文件贴出来?
[回复]
@tahaomei
在这里有我的vimrc下载
[回复]
大哥。你那个相关文章是什么插件?
我忘记了- -
我刚换到这个主题过来。。。还是很平稳的。。。就这个功能整不出
[回复]
@SamPeng
我用的是水煮鱼的相关文章插件
[回复]
Pingback: bones7456 : 推荐:vim使用进阶
楼主写了好多vim的东东啊,正好可以用来学习,非常感谢
[回复]
非常贊的文章!
不過那個zip包里的文件,鏈結的是這個網站的內容,而不是本地目錄的內容……
等pdf
[回复]
问一个与VIM关系比较大的问题:
你用啥键盘?(用本本的就bypass吧 ……)
[回复]
@alickguo
家里和公司的台式机都是DELL的,键盘当然也是标准的,好像是标准104键盘吧
家里的本本是Thinkpad,公司的是DELL,二者的ESC键位置不一样,这个比较郁闷,摸熟了小黑的ESC,到DELL上就找不到ESC了。
现在在小黑的vimrc里把<F1>映射成<ESC>了,这样在按ESC时,位置差不多是相同的
[回复]
想問博主一個問題,我平時都是使用console下的vim的
但是發覺在konsole等偽終端下,vim中帶alt key的鍵不能正確被映射.
比如我想map 到第二個標簽頁之類的.
這個問題在這個帖子中也提到了:
http://markmail.org/message/xquyuriysxd45m6n#query:vim%20alt%20konsole+page:1+mid:xquyuriysxd45m6n+state:results
不知道您有沒有好的解決方法.
[回复]
@iveney
那个帖子已经讲清楚了要怎样映射,在映射时需要借助CTRL-V键,以那个帖子中的例子为例
:map <alt-f> iHello<esc>
输入序列是:
:map CTRL-V ALT-F iHello CTRL-V ESC
…………^……….^……………^…….^
我用”^”标出来的四个位置,是需要真的按这些特殊键的,例如CTRL-V,要按CTRL键加上V键,ALT-F则要同时按ALT和F
:help :map-special-keys
[回复]
请问下面这个命令中的等号是什么意思
:%s= *$== 删除行尾空白
[回复]
@karl
看这里:关于:s命令的参数分隔符
[回复]
@Easwy
恩,這樣的話,在你的cscope的介紹裏,像
C-@這種,似乎就無法使用了?
C-@應該是指Ctrl+Shift+2吧?
[回复]
@Easwy
另外一個很重要的問題就是,C-V這種做法,在gvim裏就失效了.(不過如果用序列 代替alt的話,還能生效)
也就是說,如果我的配置文件必須能同時在console的vim裏,以及gvim裏工作,則必須寫兩套,比如:
map iHello
map ^[F iHello
(^[是esc的控制序列在term上的回顯)
[回复]
@iveney
只有一些特殊的按键才需要借助ctrl-v来协助映射,参考:help :map-special-keys
我的cscope里的映射,<c-@>s其实只需要按c-2-s就可以了,不需要按shift
[回复]
@iveney
如果你把ctrl-v映射成了粘贴的话,那就没法用它来协助映射了,需要用其它的方法,还是看:help :map-special-keys这个手册吧
缺省情况下,ctrl-v只有在windows的vim里才被映射成粘贴。
[回复]
太感謝你了,我正想學習vim,希望easwy能加些語法高亮配制與腳本編冩的內容,
不知道easwy是否用latex,能否介紹相關插件(latexsuite很久沒有更新了,兼容性也不好)。
[回复]
@hong
没用过latex,水木vim版本应该有很多人用latex,可以到那问问
[回复]
相当不错,兄弟加油把未完成的完成了阿!
[回复]
Pingback: 笨鸟先飞 : vim使用进阶
这篇文章很有用,谢谢Easwy的分享。
[回复]
按部就班–照着搞
谢谢了!!
[回复]
很好的系列文章, 希望能够继续~
[回复]
多谢分享,我想过段时间我会需要它的
[回复]
Pingback: YY in Limbo 混沌海狂想 » 继续补充vim配置技巧——上次的vimrc还不够强力
非常感谢分享,还提供了下载。
[回复]
兄弟你的docbook做得很奇怪啊…
点着点着连接就链回到你的blog上来了
不是应该全在本地html中间链吗….
[回复]
@Jason
因为是发在blog上的,不能做相对链接,只能使用绝对链接
[回复]
Pingback: 寻觅/14 » Blog Archive » vim使用进阶
Pingback: 我的 vim 設定配置 « Allen’s Blog
非常感谢搂住提供的Vim系列!
[回复]
今天配置vim,还真有点麻烦
PS. 谢谢分享
[回复]
感谢,这个系列的文章写得很好,对我帮助很大!
不知道博主做不做php的开发,如果有相关的具体经验,希望能写出来。
[回复]
看了一下午的“vim使用进阶”,看得头昏脑胀,呵呵,万分感谢博主分享vim使用经验!还需在使用中进一步体会~
[回复]
Pingback: Unix 環境設定資料整理 « 就是愛程式
Pingback: links for 2009-11-26 « Caiwangqin’s delicious bog
看着楼主的文章一步步的把我的vim初步改成了个IDE,对楼主的评价只有一个字:弓虽!不过遇到点麻烦不知楼主能否给指点一下,在vim中用gdb调试那块遇到困难,怎么也过不去。就是编译完vim后,也:run ~/.vim/macros/gdb_mappings.vim后,映射的gdb的键不管用阿,按了空格键怎么也不出gdb的界面,实在不知道怎么弄了。对了,我编译的vim是7.2的vimgdb也是7.2的。能否给指点一下发到邮箱jinzhh168@sina.com中呢?万分感谢
[回复]
@kelu1fu
请读一下帮助:
:help :run
用
:run macros/gdb_mappings.vim
试一下。
如果还不行,用
:set runtimepath
看一下上述runtimepath中的macros子目录有没有gdb_mappings.vim文件
[回复]
Pingback: 寂静小站 – 网摘 » VIM教程与学习资料汇总
多谢兄台啊,望再接再厉。
多谢指点哈
[回复]
Pingback: VIM教程与学习资料汇总 | 学习.记录
非常感谢
[回复]
在也不想让自己vi的那么低级了~~
感谢了啊!
[回复]
Pingback: Vim | Fire、Start
Pingback: Easwy: vi/vim使用进阶系列教程 – im Png
good,我留言也是用gvim打的
[回复]
Pingback: VIM教程与学习资料汇总(2010-02-19更新) | 善用佳软
Pingback: VIM教程与学习资料汇总 | 追随我心
在学习中,支持作者!
[回复]
Pingback: vim的使用 | zz home
请教博主一个问题,我想替换一个很长的单词,但是如果:%S这条命令,可不可以粘贴这个单词呢?就是书写替换命令的时候,这个“需要被替换的很长的单词”能不能使用粘贴,怎么使用粘贴呢?
[回复]
@dedekd
请看这篇文章:
使用vim的命令行补全功能
[回复]
多谢楼主,呵呵,我好好看看
[回复]
cool,的确很简单,谢谢
[回复]
期待后续,等待。。。。。
[回复]
大哥~哥~
您辛苦了~
福音啊,完整实际的Vim教程太少了~
[回复]
这里是我VIM起步的圣地,目前我已经离不开它了
而这一切都得感谢你,感谢vim所有的贡献者
[回复]
写得太好了,楼主可以考虑出一本书了。不过建议博主可以写一下那些vimrc文件中的命令的使用方法,如map命令等。
[回复]
这种类型的文档最适合快速学习,谢谢
[回复]
谢谢了!
[回复]
好人!
[回复]
Pingback: DH出品,必属精品 » VIM教程与学习资料汇总
可以双击文件自动用vim打开吗?gvim就可以,vim就一定要在终端中打开才行。有办法可以双击文件自动用vim打开吗?
[回复]
@O湛狼O
为什么一定要在vim中打开呢?需求来源是什么?
另外,你用的是windows还是Linux?
[回复]
想了解一下而已。。。vim就必须在终端通过文件路径打开吗?ubuntu下的@Easwy
[回复]
先谢再读!
[回复]
Pingback: VIM 使用教程 | Ludajun's Blog
@O湛狼O
我觉得应该可以,你把某种文件类型关联到vim而不是gvim,然后双击打开试试(未验证)
另外,记得在新建快捷方式时,也可以选择某程序是否在终端中运行,你也可以试试
[回复]
Pingback: vim高级用法中文文档 | 柯南 Become Professional
Pingback: VIM教程与学习资料汇总-web调色板|学习web知识,调出精彩web人生
非常感谢楼主
[回复]
Pingback: VIM教程与学习资料汇总 | Goto-Linux
Pingback: vim setup | Wesley
请问博主:vim 不能载入ftplugin目录中的文件是什么问题?
[回复]
@Hailo
请详细描述一下问题和使用环境,是windows下还是linux下等等
[回复]
Pingback: 转载一篇vim进阶的文章 « Rock U a world
Pingback: gvim安装和配置 | Xeno Joshua
Pingback: 心博 » VIM教程与学习资料汇总[转自:善用佳软]
感谢楼主,楼主好淫啊。
[回复]
Pingback: VIM学习资料总结——VIM自学系列一 | Liuyix思考空间
Pingback: vi/vim使用进阶: 目录 | Vim中文网
楼主您好,小弟有个关于缩进的问题请教您,谢谢
比如我敲入else if希望代码变成
else if ()
begin
xxxx;
end
想用else if做缩进(但是这两个单词之间有个空格),不知道这种情况可以实现吗?(想用两个单词,是觉得这样容易记忆些)
[回复]
@dedekd
可以实现,你所要缩进的文件,如果是已存在的编程语言,这种缩进应该已经实现
如果是自己定义的一种语言,可以自己写一个indent文件,这方面可以参考$VIM/indent/目录下的indent文件。
[回复]
@Easwy
不好意思楼主,我说错了,不是缩进,是缩写,当我敲入else if后,我希望代码自动变成这个样子
else if ()
begin
xxxx;
end
但是我发现,使用缩写,好像只能使用一个单词,那能使用两个单词(else if)作为缩写吗?
[回复]
就是说,能能不用两个单词实现缩写呢?比如输入else if后,自动变为else if ()这样的效果?
[回复]
@dedekd
Hi dedekd,你可以试用一下snipMate插件,它可以实现你所期望的功能
[回复]
谢谢楼主,我看了一下snipmate的插件,好像不支持verilog,所以也用不上了。我看了一下这个插件里面的语法,发现使用缩进的时候也是只适用单个单词,不是使用2个单词,我想就只适用单个单词做缩进功能也可以了。
另外,还有一个问题,我自己是这样考虑到,如果在搜索或者是使用宏大时候,可以指定范围,比如第a行到第b行,或者是指定在相邻两个括号之间的范围,或者是在关键字begin和end之间的范围,那我就可以自己写写简单的功能脚本,请问在使用搜索(/)或者宏(q)的时候,怎么样才能指定范围呢?
[回复]
Easwy 回复:
八月 24th, 2011 at 2:23 下午
1. snipmat插件允许你自己定义一些snip,然后按TAB扩展成你定义的代码,例如,你可以定义一个名为elif的snip,然后让它扩展成else if { }
2. vim.org上有关于verilog的缩进文件
3.
:help :@:
:help search-range
[回复]
很棒的教程,是我目前看到在中文VIM资料关于配置等方面最好的,正在一步步的学习中。
[回复]
@Easwy
谢谢博主,我学习一下
[回复]
楼主加油,谢谢楼主花宝贵的时间做这么有意义的事情。
[回复]
lz辛苦啦,按照lz的文章配置好了VIM,那是相当好用了,期待继续更新~~
[回复]
此系列相当棒,见过的最好的vim教程系列,感谢。
[回复]
非常好的教程,谢谢分享
[回复]
Pingback: 嵌入式组新人任务——Linux&VIM基础 | iMID
今天鼓了一包子要学vim,这样就可一告别万恶的vs了,谢谢楼主的文章!非常敬佩楼主的分享美德!
[回复]
希望楼主再接再厉,把还没有写完的东东写完,谢谢楼主了!
[回复]
支持博主分享知识!thx.
[回复]
非常感谢楼主,这是我找到的最完整的入门教程
[回复]
谢谢站长!!!!
真的非常非常有用!!
抱走了pdf版本~>_<~
[回复]
很赞的教程!十分期待博主继续更新这个系列!
[回复]
太感谢楼主的辛勤奉献了
[回复]
Pingback: 小丫头 » VIM配置(持续更新中)