普通人的编辑利器——VIM (for windows)

This item was filled under [ 写程序工具 ]
FROM linxuelin
2005年5月,我开始用VIM。此后渐入佳境,原来因版权自律而放弃盗版UltraEdit的遗憾一扫而空。并且,从VIM我才体会到,什么才是真正的编辑利器。在
善用佳软或其他论坛发文,我都是先在VIM中输入,并方便高效地编辑好格式,再贴到网上。而我的通讯录、记事、读书笔记、工作

记 录也是在VIM中完成的。包括一些文档、数据的处理,让VIM过一下,也会提高不少效率。一句话,自用VIM以来,对它迷恋日深,几乎要超过 Total Commander。但是,正如善用佳软及论坛发文所提,我大力推荐“用IrfanView/XnView代替ACDSee、用7-zip代 替 WinRar/WinZip、用GIMP代替PhotoShop”,但并未推荐VIM代替UltraEdit。这并不意味着VIM不能胜任,恰恰相 反,如果说IrfanView等替代品比原共享软件还有些差距的话,VIM则远胜UltraEdit。不推荐的唯一原因是,VIM对初学者有点难。

但今天仍写了此文推荐给大家。原因有二:其一,编辑大人选定了题目,要向大众宣讲VIM和Emacs,这种勇气鼓舞了我。其二,已发两位高手的文章(

王垠之《Emacs是一种信仰!世界最强编辑器介绍》Dieken之《程序员的编辑器——VIM》

)可能会吓住一些对它们产生了兴趣的人,对此我要做些修正。
因此本文内容有二:一是帮新手体验VIM。这部分有些象实验教程,多用实例,且行文风格尽量傻瓜化,以便于新手(包括以前从未听说过VIM)可以照我的操作,一步步体验VIM。二是介绍我的应用,即VIM如何便利我的日常工作和生活,而非编程。
1 对VIM的基本介绍
一句话介绍就是:VIM是一个超级超级强大的文本编辑器。它和Emacs是一个数量级;而我认为,比UltraEdit、Editpad、 EmEditor要高一个(至少半个数量级)。如果你有兴趣,不妨一读《程序员的编辑器——VIM》,以便于对VIM有更详尽全面的理论认识。
要点1:VIM及前身VI,历史悠久(可能比多数读者的年龄更大),经历了几十年的考验和发展,值得信赖。
要点2:VIM有模式。通俗地做一下对比。notepad无模式(或称为只有一种编辑模式),你按下j,就是在正文中输入j;要保存,就要ctrl+ s;要下移一行,就要↓或鼠标。而在VIM中,打开一个文件后,并不处在编辑模式,而是Normal模式,此时你按j,VIM并不认为你要在正文中输入 j,而是代表光标下移一行。此时按i表示进入insert模式,即编辑模式,即notepad的模式。编辑模式按Esc退回normal模式。 normal模式下按:进入命令行模式,用于输入较复杂的命令。比如:w代表保存文件,:e a.txt代表打开文件a.txt。即VIM可以不用鼠 标、方向键、菜单、Ctrl、alt……发出命令。因此,以下的体验中切记进入正确的模式:Esc 到Normal;Normal下i到编辑; Normal下:到命令行。再说明一点是:文中:打头的是命令行模式,此外多数Normal模式。
要点3:复杂对抗复杂。VIM有的命令行很吓人,长长一串字符恍若天书。这些貌似复杂,实际上无非是一些简单命令的组合而已。借助于此,VIM用户可以实现非常复杂的需求。如果你没有这样的需求,就无须理会它们。
要点4:一能百能。这一点是Unix或命令行风格软件的显著长处,经过实用可以深刻体会。本文尽管有一些例子,但它运用之妙,存乎一心的感觉,仍未能 充分展示。这里先打个比方,如果windows下某软件号称能炒菜,那意味着你点一下菜单,菜就做好了——这就是易用哲学。到底怎么做,你是没有多少发言 权的,而是由软件开发者固化。而如果VIM说能,那它就是有一个“炒菜”命令,你可以把这个命令与原有的“原料”“数量”“火候”“风味”“灶具”命令结 合在一起用,甚至在它前面加上“买菜”“洗菜”,后面加上“装盘”“洗碗”做成一个自动脚本,在合适的情况下自动执行。

要点5:无限灵活,个性由我。你只要有具体需求,VIM几乎都能满足。因此不同人的VIM是不一样的,即,把

下载来的VIM配置成自己的VIM。

就此打住,开始体验之旅吧!

2 下载和安装
VIM是跨平台的。在Windows下,我们用的是gVIM for windows版。最新的是7.0版,下载包约8MB,完全安装后约20MB。
注:体积太大?你如果是高手,完全可以把不用的文件删除(包括帮助文件,它是我见过的软件中最好的帮助),精简后的体积可以不到2MB。或反之,仅下 载一个gVIM.exe(1.5MB)就能运行。但对于这次体验,鉴于第一次使用,建议全部按默认项安装,这样才能达到文中预想的结果。

PCOnline下载官方下载

安装,基本上,一直Agree、Next就行了。我通常是装在d:\program files\VIM下。
可参见







3 体验之旅
3.1 初见界面

安装完成后,按提示打开readme,你将看到

或自行打开桌面的快捷方式,也可直接运行d:\program files\VIM\VIM70\gVIM.exe,你应该看到如此界面:

什么?难看?土?我第一次见到它也是这种感觉,现在却只觉得亲切。

再一点,你有没有奇怪它是中文界面?难道我给你下载的是汉化版?会不会捆绑流氓插件啊?你如果真这样想,我只能叹息无语了。

3.2 试读html
请把此网页保存为htm,比如test.htm,然后用VIM打开它。暂时用菜单吧!结果可能是这样:

平平无奇,是吧?因为它是一个标准的VIM,并且是性能优先,视效忽略的VIM。无妨,请进入命令行模式(就是按一下冒号,注意是英文冒号:),注意到最下面一行的变化了吧。再输入sy on再回车。是不是有颜色了?它应该看起来象这个样子

重要提醒:为简化起见,下文将用
:sy on
表示(先确认在Normal模式,如不确认,请按几次Esc)你先按:进入命令行模式,再输入sy on,再回车。

补充说明:sy表示语法加亮,on当然是打开。:sy clear表示取消加亮。

3.3 改头换面
体验VIM就要按VIM的思路,所以我们要把gVIM改回VIM的本来面目。
对了,如果你认为它的界面很土,请更要多看一眼当前的样子,因为下面的操作后可能会更土!
执行如下命令
:set go=
这时的VIM应该是

不要大惊小怪,不就是菜单和工具栏不见了嘛?VIM中是不应该用到它们的。
补充说明:set表示一般性设置;go是gui option的缩写,就是界面;等于空就是什么都没有
再输入半条命令(先不要回车)
:colo ev
然后,按一下tab键。是不是自动补全为evening了?VIM是非常聪明的(但是不会象MS Word那样自做聪明)。
然后你回车,看到了什么?

天色全黑了?没错,现在是evening嘛。

补充说明:colo就是设置调色方案。VIM自带了近十种调色方案,当然你还可以在网上下载更多,或改编自己的调色方案。你可以直接在:colo (加一个空格)就连续tab,选择不同的配色方案来体验一下。当然,evening是比较经典的一种。我一直就用它。

3.4 准备并打开范例文件
简化起见,请

下载test.txt并保存为d:\test.txt。然后,在VIM中输入半条命令
:tabnew d:\t
输到这里后不要回车,按一下tab,VIM会自动补全为test.txt的。如果不对,再按几次tab,直到正确为止。然后回车。

你会看到VIM打开了test.txt,并且是以多页签(tab page)的方式。你可以点击各页签在打开的文件中间切换(高手有更方便的
键盘命令做法)。在VIM6.3中,还没有此功能。当然了,这并不意味着VIM 的用户没办法享受多页签的便利,下载一个插件后——VIM有上千个插件——就可以了。面对多页签风格的流行(IE6→Maxthon→IE7), VIM7.0也新增了此功能。
我喜欢这种简单的页签。如果你认为此页签太难看,可试一下:set go=e
这时应如下效果

3.5 统一格式,下载vimrc
上面所操作的各种命令,都是对VIM的设置。把它们写到一个_vimrc文件中就成了默认选项。每个VIM用户的_vimrc文件都不一样,因为每个人的需求不同。
为了保证下面的操作得到预期的效果,请下载我的_vimrc。依次执行下述操作:
① 关闭所有的VIM
② 找到你的d:\program files\vim\vim7\_vimrc,复制一份。

右键点击此处,“另存为”覆盖你的d:\program files\vim\vim7\_vimrc。

注:这并不是标准做法,但对windows用户是比较方便的做法。

3.6 打开test.txt
再次就模式进行提醒:Esc到Normal;Normal下i到编辑;Normal下:到命令行。
运行VIM,并在命令行执行
:e d:\test.txt
接下来,我们把此文章排一下版。如果你认为可以手工排版,请把此文件复制到10000行再发表意见。

3.7 分段并保存
原文没有分段,观察一下,发现可以在“以下是……”前面加回车,于是
:%s/以下是/\r&/gc
输入后,界面如下

并提示,请回答y或a。如果回答y,则替换当前一个;到了下一个,VIM还会再问你。所以,你回答几个y后不妨一a了之,全部替换。
补充说明:s表示替换;s/a/b 表示把a换为b;上一命令是把“以下是”换为“\r&”,\r表示回车,&表示被替换的部分,即“以下是”;%则表示全文;/gc表示一直替换(不是仅替换第一个),并且要用户确认。
看一下文件,你或许想,空2行可能更好。很简单,再重复一下刚才的命令就好了。不过,对强大的VIM来说,无须笨笨地重复输入上次的命令。在命令行按下:后,再按一下↑(向上的方向键),看到刚才的命令了吧?直接回车,提问时输入a,任务完成。
既有变化,请及时保存。命令是
:w
当然,你也可以按ctrl+s。但ctrl+s之所以有效,是因为我在_vimrc中做了定义:当按下ctrl+s时,系统执行:w动作。因此,你完全可以定义其他热键,并把它映射到:w。

3.8 继续编辑
首先删除“坚持”两字,很简单,只要按gg2x就行了。为了看效果,你可以分开按:
gg,这时光标移到文章头。
2x,这时删掉了2个字符。
再一次体验VIM的神奇,比如按5x,于是5个字符消失了。当然,这5个字符是要保留的,没关系,你按一次u,就回来了吧?
再按一下Ctrl+r,是不是又没了?再来一次u,是不是又回来了?没错。u和Ctrl+r相当于(是相当于不是等同于)windows的undo和redo。

再试一下dd。是不是整行没有了?没关系,u回来就行了。
再试一下3dd。一下子删除了3行!没关系,u回来。
再来一个dG,哇,全文都没了?!仍然u回来啊。

3.9 更多编辑
任务a:把每一句分为一行,即达到如下效果

以**为荣、
以**为耻,
解决:如果你记得上面的替换命令,就会想到,可以用2次替换(“为荣、”换为“为荣、”加回车,“为耻,”换为“为耻,”加回车)。但这两次替换在VIM中完全可以一次完成,即用正则表达式,在“为”及后面2字符(“荣、”或“耻,”)后加入回车。怎么表示呢?
:%s/为../&\r/gc
看一下高亮,没问题,直接a

哇,是不是很壮观啊?没觉得?如果是一千行一万行呢?

任务b:把行末的标点去掉,即“荣”后的顿号和“耻”后的逗号。
解决:办法太多了,仍可以用替换。但此处还是展示一个新功能:列操作。
安全起见,按两下Esc,再gg$,这时光标应到了文章第一行最后一个字符,即顿号上。
再按ctrl+v,注意一下状态栏是否提示有“可视 块” 字样。(请确认你是采用了xbeta的_vimrc文件,如果没有,请试一下ctrl+q)
再15jx,是否标点全部删除了?因为15j表示向下选中15行,x表示删除。

任务c:错落有致
操作:这次演示一下宏的用法,请严格按本教程操作。
先做一下确认:输入法没有打开,并Esc到normal状态,gg到文首。
按qa(q表示开始录制宏,宏的名字为a)
再shift+>>(表示按住shift,连按两下>,再放开shift。此时第一行应当向后tab了一下)
再j^(此时下移一行,并置光标于行首)
再shift+>>再shift+>>(即第二行向后tab两下)
再j^(下移一行,并将光标置于行首,为后续操作做准备)
再q(表示宏录制结束,VIM会提示记录完成)
这样宏录完了,可以用了。
再@a,看到了效果了吧?宏执行了一次,即3、4行成功了。还剩下6段,但是你不用按6次@a,而是只要按下
6@a就行了!!!

太神奇了!回放一下?先u,再来一次
6@a。既然可以6,当然可以千千万万!

补充说明:高手使用VIM是千变万化的。上面的前2个操作(分行+删标点),完全可以合成一个:%s/\(为.\)./\1\r/gc;或再把第3个操作(错落有致)融合到前一个操作中。

3.10 自由体验
体验光标移动:请随意按几下j和k,看看反应;再多按几下l和h,看看反应;然后,当你的光标在英文时,请按几下w和b。
对了,gVIM的每一种功能,都有无限可能,因此,你也可以在上面几个字母前加上数字,比如 9w 2h,看它的反应。

体验自动补全:i进来吧,到目前为止还没写过字呢!为简单起见,你直接把用鼠标放到中文的下一行,我们把 Eight Do’s and Eight Don’ts 输入一遍。但是,输入一个E,先别动!按ctrl+p是不是自动补全了?

体验大小写(每次操作后,都用u恢复原状),试一下g~~和guu和gUU和g??(g??后可以不按u,再按一次g??也能恢复原状)
神奇吗?这还是VIM功能的单个表演,真正的高手是把它们组合在一起,完成你自己独特的编辑需求。

3.11 体验语法高亮和折叠
此部分讲起来太复杂。如果你有其他编辑器如UltraEdit基础,会有助于你理解。但VIM在此方面的强大灵活,UltraEdit是难忘其项背的。
仍然是我们编辑的原文件,为简化计,请下载
test2.txt;下载tx1.vim并保存在d:\program files\vim\vimfiles\syntax\tx1.vim
用VIM打开(比如要打开d:\test2.txt,请在VIM中:tabnew d:\test2.txt)它。平平无奇是吗?这是因为VIM并不 知道这个文件要加亮。键入一个命令:setf tx1,这就相当于告诉VIM此文件的类型是tx1,所以就按照刚下载的tx1.vim进行高亮和折叠。
此时你会发现test2.txt完全折起来了。如何打开?你可用鼠标点最左边的+,当然,也可以用命令zr或zR打开(zR打开全部;zr打开当前;zM折叠全部;zm折叠当前)。打开后,看到高亮效果了吧。可以对文字设定前景色、背景色、粗、斜、下划线风格。

3.12 加密文件

文本文件打开最快,编辑起来最容易,并且在VIM中查找非常方便。因此,我用它来记日记,并作为通讯录。但是安全问题怎么办呢?很简单,VIM本身即 可加密(录然解密也要用VIM)。在上述打开的文件中键入:X(是大写X),VIM就提示你设定密码,安全起见要确认第2次。然后,保存(键入:w)。把 VIM或此文件关闭,再打开时,就要输入密码了。只有你输入正确的密码,才能得到正确的文件。

4 我的应用
VIM和Total Commander一样,我把它们都设定为开机自动运行,其应用不可胜数。
比如说通讯录管理,我未用任何软件,就用VIM管理一个address.txt。它可以实现:快速启动(我在VIM中定义了书签,键入`A就会打 开),加密(用VIM的:X),超强搜索(无须多说),分组折叠(fold),email和电话号的高亮显示(自定义语法文件)吧。
再比如,笔者会用VIM来辅助word, excel, bbs发文,安全删除文件,制作精简的五笔词库等。具体可参见 《
我常用的VIM功能》,《活学善用gVIM,提高工作效率:实例篇(合集)》,《用gVIM打造个性化记事本》等文章。
如下两图分别是我的个性化txt示例,和用VIM写此篇文章时的情况:

5 后记
这篇文章比最初计划写得长很多,但仍感觉很多非常优秀的功能没有提到。比如,眼下我写这篇文章,当然用VIM。但是因为有插图,所以用了htm格式。 在插入图片时,我只要输入img,VIM会自动换为“<img src=”">”,并把光标放到两个引号中间,以便于我输入 图片名称。我输入lnk后,VIM会替换为“<a href=”"></a>”。当我想看一下 效果时,我只要:! g:\study\it\pconline\vim\xbeta-vim.htm 它就自动在浏览器中打开了。而这一个长长的路径, 因为有了自动补全和命令行历史,也非常容易。而当一些url还未确定,需要标注时,我就用一个`1,VIM就会以醒目的红色块标出来,一目了然。而下次再 打开此文件,它会记得我最后编辑的位置。
在用VIM之前,我曾试过几十种pad和editor,包括长期用Editpad,也曾经比较精通过UltraEdit,也曾经测过 EmEditor, EditPlus等。但用了VIM之后,我不再关心windows世界的成千上万的编辑器。因为使用它们的逻辑是“如果有新需求,只 能等软件升级或换一个软件”,而使用VIM的逻辑则是“如果有新需求,请做个性化配置或下载插件”。
VIM在手,夫复何求!
最后,向VIM所代表的追求卓越、开源共享的精神致敬!并希望有责任感的用户逐渐减少盗版!

————————————————————————————————————————————————————————

P.s:这篇文章的作者是善用佳软(xbeta)                      谢谢,calors的提醒
————————————————————————————————————————————————————————
Bookmark and Share
Tagged with: [ , ]

cscope 常用命令

This item was filled under [ 一步一步学习中 ]

cscope的主要功能是通过同的子命令”find”来实现的
“cscope find”的用法:
cs find c|d|e|f|g|i|s|t name

0 或 s 查找本 C 符号(可以跳过注释)
1 或 g 查找本定义
2 或 d 查找本函数调用的函数
3 或 c 查找调用本函数的函数
4 或 t 查找本字符串
6 或 e 查找本 egrep 模式
7 或 f 查找本文件
8 或 i 查找包含本文件的文件
Bookmark and Share
Tagged with: [ , ]

vim,Tlist使用要点

This item was filled under [ 一步一步学习中 ]

1、在查看源码前,需使用ctags生成函数和变量信息文件tags
#cd test
#ctags -R
#ls tags
tags
#vim test.c
2、在Vim下使用TlistToggle 或者说Tlist命令切换耿函数列表开关,按住ctrl键不放同时再按两下w键(^WW),在编辑区与tags区切换,在tags区使用方向键选择函数,再回车键就会在编辑区找到函数定义。
如果有tags区选择了不是打开程序中函数,可以用ctrl+]查看,按ctrl+O返回到原文件。

Bookmark and Share
Tagged with: [ , , ]

vim端运行python的两种方法

This item was filled under [ 一步一步学习中 ]

运行Python脚本
runscript.vim这个插件还不错,安装后直接按F11便可以运行当前的python文件。(不过,只能适用于windows下)

如果不想用插件,可以用 :pyfile % 这样的命令来运行当前文件(我常用的方法)。当然,命令行上也可以。

Bookmark and Share
Tagged with: [ , ]

进入vim退出后bash乱码的解决

This item was filled under [ 一步一步学习中 ]

从终端进入vim后,退出来,终端便出现乱码
然后再进入vim后,出来,便没有乱码
不知是怎么回事,请教下
(先前在配置vim,配置后便这样)
有什么方法可以撤回之前的配置的吗,谢谢了
当然最好能直接解决乱码拉, :em06

screenshot1

screenshot-1

screenshot-2

解决方案:

代码:
sudo update-alternatives –config vim

把vim链接到vim.basic

Bookmark and Share
Tagged with: [ , , ]

vim学习

This item was filled under [ vim, 一步一步学习中 ]

/*
* vim 基本使用
*
* 作者: 钱善海 <qianshanhai At hotmail Dot com>
* 创建时间: 2006.03.21
* 最后修改时间: 2007.08.30
*/

1.  什么是 vim

2.  vim 的基本操作
2.1 基本指令
2.2 多文件编辑
2.3 十六进制编辑
2.4 查找
2.5 替换

3.  编辑代码的设置和操作
3.1 ~/.vimrc 配置
3.2 使用 tag

4.  语法高亮
5.  文档
6.  参考文档

VIM 基本使用

1. 什么是 vim

vim 是一款编辑器, 是 Vi IMproved 的缩写. 也即 vi 的扩展版本.
(vi 的扩展版有很多, vim 是其中一种, 应该是最接近 vi 的一个扩展版)
主要作者是 Bram Moolenaar, 他编写了 Vim 的核心功能.
官方主页: www.vim.org , 使用与 GPL 兼容的协议发布, 可以获得(如下载)源代码.
(什么是 GPL ?  请看 http://www.gnu.org/copyleft/gpl.html )

那 vi 又是什么呢?  vi 也是一款编辑器, 起源于 1977 年, 作者是 Bill Joy.
vi 即 visual 的意思, 意指可视化编辑器, 非可视化编辑器有如 ed sed 等.

vim 是编辑器, 但更像是一个工具, 使用它可以高效的完成很多事情,
既然是一个工具, 我们就应该先学习再使用, 高效是在有一定的基础之上的.

vim 继承了 Unix 和 vi 的哲学: 简单, 高效.

1.1 使用 vim 的三大理由

a) vim 是用 c 语言写的, 可以移植到几乎任何操作系统
b) vim 是最接近于 vi 的一个扩展版本
c) 语法高亮, 很适合于编写各种代码

2. vim 的基本操作

2.1 基本指令

在 vim 中, 光标的移动是基础, 只有熟练光标的移动才能体会 vim 的高效,
并且, 很多操作都是和光标移动有关的. 另外, 使用 vim 时, 应该只使用
下面这个区域中的按键:

~         …         <- (即 BackSpace 键)
…       …         …
Ctrl      …         Ctrl

建议: 每天使用 vim 一个小时熟悉指令, 连续七天即可.

** 下面除了特别说明外, 使用 ^X 表示 Ctrl-X , X 为任意字符.

vim  有六种模式, 为了弄混, 先假定有三种:

a. Normal mode(common mode, c-mode)  称为普通模式
进入 vim 后的就是处于 c-mode , 只能下下按键指令, 不能输入文字.

b. Insert mode(i-mode)  称为编辑模式
按 i 就会进入 i-mode, 此时才可以输入, 按 ^[ 又会回到 c-mode

c. Ed mode(common-line mode, e-mode)   命令行模式
按冒号 :  就会进入 e-mode

e-mode (命令行模式): (简单命令, 复杂的在后面)
:q  退出文件  :q!  强制退出  :w  写入文件  :w!  强制写入   :wq  写入并退出
:w foo  写入文件 foo         :r foo  读入文件 foo

c-mode (普通模式):

进入 i-mode:
i  在光标前编辑    I  在行首编辑    o  在光标所在行下开启新行
a  在光标后编辑    A  在行尾编辑    O  在光标所在行上开启新行
s  删除当前光标所在字符后编辑       S  删除当前行(不包括行前空白)后编辑
s 和 S 并不常用.

光标移动和删除:                       k            H  屏幕左上角非空白处
h  左  j  下  k  上  l  右       h     l         M  屏幕中间非空白处
j            L  屏幕左下角非空白处
w  右移下一个字的开始处,  e  移到所在字的末端  b  移到上一个字开始处
W E B 与上面一样, 不同的是以空白区分字(word)
gg 文件首   G  文件尾  x  删除光标所在字符  X 删除光标前的字符
0  行前        ^  行前非空白处   $  行尾
d  删除指令,与其它指令组合, 如 dw  删除一个字  d0  删至行首
dd 删除当前行     D  删至行尾
** 删除的内容会放到缓冲区, 使用后面的 p 可以粘贴

以上指令可以和数字组合, 如:
50l 表示向后移 50 个单元,   d5w  删除后面 5 个字
dL  删除到屏幕底端          100gg  跳至文件的第 100 行, 或者 100G

另外一些基本操作:
K  查找当前的字的 man 页, 相当于执行 :! man <cword>, 写 C 代码非常有用.
.  重复上一个改变, 这里的改变是插入, 删除或替换操.作
u  撤销
^R 反撤销
%  当光标位于小中大括号时, 移动到小中大括号相对应的左右括号,
J  把一行连接到当前行
=  重新排版指令, 如   =% , =L 等等
>> 向右缩进,   3>>                     ^F  向后翻页
<< 向左缩进                            ^B  向前翻页
zz 使当前位置成为屏幕的中间      [I  显示包含当前字的所有行

标签 mark  --  方便跳来跳去

m   标签指令,  mx  把当前位置标为 x , x 可为 a-zA-Z
'x  跳至标签为 x 所在行的行首非空白处
`x  跳至标签为 x 所在行标签时的位置

选中:

v   按行选中, 以单元为单位
V   按行选中, 以行为单位
ctrl-v  按列选中
v%   vL  v$
选中后可以进行一些操作:
u   转成小写   U  转成大写   y  拷贝  >  向右缩进    <   向左缩进

yank & paste:
y  拷贝指令    p   粘贴指令, 粘贴由 x, X, d, D, y 引起的缓冲区
yy 拷贝当前行  y4j 拷贝当前行和后 4 行
y`a  拷贝至标签 a , 以行为单位
y'a  拷贝至标签 a , 以字符为单位
2p   粘贴 2 次,  xp  对换当前字符和下一字符, ddp 对换当前行和下一行

替换(r):

rx  把当前字符替换为 x, x 为任意字符
R   替换 n 个字符, 直到按 Esc 或 ^[ 为止
例子:  05l^V3jra  把当前行向后开始的 4 行的第 6 列换成 a

查找:

/   向后查找               ?   向前查找
*   向后查找光标所在字     #   向前查找光标所在字
n   下一个                 N   上一个

查找时在 e-mode 下的相关设置:
:set hls   显示查找高亮        :set nohls  取消查找高亮

文件和当前信息:
^G         g^G

记录和重复操作: (这类功能极少用到, 用到时再来查找)
q  记录指令         @   重复操作指令
qx...q   x 为 a-zA-Z , ... 表示一系列的操作, 最后的 q 表示结束这个记录.
@x  重复标签为 x 的记录,  n@x  表示重复 n 次.

两类指令:
1.  与区域无关, 像 h, j, k, l ^F ^B 这些基本的光标移动指令和 m 等等
2.  与区域有关:
a)  d  y  =
这一类的操作与当前光标和最后的光标有关, 所以称做与区域有关,
如 dG 将删到文件尾, 当然是从当前位置开始的了,
又如  d%  =100j yL , 并且这几个指令在选中块之后也能使用
b)  > < u U  指令在选中块之后使用

折叠:
zf  后加上移动指令, 就能折叠这个区域, 如 zf%  zfG  等等,
通常在看代码时使用. 对着折叠的行按 0 展开.

快速移动:
a.  ^F ^B w W  %  30j 等
b.  /  ?
c.  fo  移到行中第一个字符 o 的位置

列编辑:
a. ^V3jISTRING^[    在选中的三列插入 STRING
b. ^V3j$ASTRING^[   在选中的三列的行尾添加 STRING
c.  请看 :h  中的 visual.txt

大小写:
~  大小写互换  g~~  把该行的大小写互换
guu  把当前行换成小写     gUU  把当前行换成大写   gUw  ??

更多的删除和变换见 :h 中的 change.txt

i-mode (编辑模式):

^P  自动补全,或 ^N        ^[   进入 c-mode 模式

2.2 多文件编辑

a. 命令行
$ vim file1 file2

:n 下一个文件,  :N 上一个文件
:first  第一个文件    :last 最后一个文件

b. e-mode
:sp foo  打开文件 foo      :vsp foo     :res +10  增加窗口高度

^WW  切换文件   ^Wj   ^Wk

编辑包括所有 word 的文件:
$ vim `grep -l word */*.c`

在 vim 7.0 后的版本, 还可以使用多 Tab 的模式编辑, 例如:

:tabedit file2.cpp

或者在命令行加上 -p 使用:

$ vim -p  *.cpp

全部退出:

:qa

2.3  16 进制编辑

vim 本身不支持 16 进制编辑, 也建议不要使用 vim 进行十六进制编辑,
但偶尔想简单编辑时, 可以通过外部命令 xxd 来编辑:

:% !xxd   编辑     :% !xxd -r   恢复

2.4  查找

默认情况下查找是大小写敏感的, 可以  :set ignorecase 使之忽略大小写,
执行  :set noignorecase  又变成大小写敏感了.

2.5  替换

:%s/a/b/g   把文件当中的所有的 a 换成 b , % 表示整个文件内容, g 表示全部替换
s/a/b/g 可以写成 s|a|b|g  等等
:%s/^/  /g  每一行前面加上两个空格, 还记得 ^ 嘛?
:n,m s/$/ ,/g   在第 n 行和第 m 行的每一行的行尾加上" ,"
:% s/^M//g  当中的 ^M 为 ^VM , 即回车符, 意即把回车符替换为空

:g /^$/d    删除掉所有空行:

2.6  调用外部命令

:! cmd   执行命令 cmd                 :sh  暂时退出 vim, 执行 $SHELL

例如, 调用 sort 排序:

:%!sort

3.  编辑代码的设置和操作
3.1 ~/.vimrc 配置
vim 在启动时会先读取文件 ~/.vimrc , 因为可以把一些设置写到该文件中:
如我的 ~/.vimrc 文件内容为:

"set term=vt100
set ts=4
set sw=4
set fileencoding=cp936
set fileencodings=cp936
set encoding=cp936
set autoindent
set showcmd
set nocompatible
set smartindent
set showmatch
set t_Co=8
set t_Sf=^[[1;3%p1%dm
set t_Sb=^[[1;4%p1%dm
map <C-J> :set filetype=cpp<CR>
set hls
set incsearch

set path=.,/usr/include,include,inc,../include,../inc
set path+=/usr/local/SRBC2.0/include

set tags+=tags;

"set wrap
syntax on
highlight Comment ctermfg=cyan
highlight Macro   ctermfg=gray
highlight Include ctermfg=magenta

if has("autocmd")
filetype plugin indent on
augroup vimrcEx
au!
autocmd FileType text setlocal textwidth=78
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\   exe "normal g`\"" |
\ endif
augroup END
endif

map <C-K> gt  "在多 TAb 编辑时方便跳转
map <C-H> gT
map <Tab> gt

** 注意上面的 ^[ 是这样输入的: ^V[
注释使用双引号.

3.2 使用 tag

tag 是什么? 那是一个索引文件, 能够在 vim 或多种编辑器中使用.
使用 tag 分两步, 一是制作 tag 文件, 二是在编辑器中使用.

3.2.1 制作 tag

3.2.1.1 生成 tags 文件

制作 tag 是个简单的过程, 需要使用外部命令 ctags 完成, 需要注意的是,
这里的 ctags 是 GNU ctags, 如果发现当前系统的 ctags 使用不了, 请找
系统管理员或者本文作者帮忙解决.

在 vim 中, 只需要在最上层的目录生成 tags 文件即可,
这时在 .vimrc 中加入:  set tags+=tags;  表示如果当前目录找不到文件 tags,
那么往上一层目录查找, 直到找到为此.

当然了, 可以在任意一个目录下生成 tags 文件.

生成 tags 文件最简单的方法是在 ctags 中使用 -R 参数, 表示包括所有子目录
中的文件, 如:

ctags -R .

或者指定文件: ctags *.cpp *.h

有时候源代码中包括了如 esqlc 或 proc 的代码, 这时可加上 --language-force
参数, 让 ctags 强制认成某种语言, 如认成 c++ 语言:

ctags -R --language-force=C++ .

3.2.1.2 svn 问题

使用 svn checkout 出来的代码, 会有一份相同的在目录 .svn 下, 这时如果用 -R
参数制作 tags 文件, 会包含多份一样的标记, 可用 --exclude 把它排除掉:

ctags -R --language-force=C++ --exclude=.svn .

3.2.2 使用 tag

在 vim 中, 可按下面的命令使用 tag :

^]   跳至该 tag 处, 如果存在多个一样的 tag, 跳至第一个, 可用 g] 显示全部.
^T  返回
g]   显示该 tag 的所有信息, 这时可按数字加回车选择.

如果找不到 tags 文件, 可以直接使用 set tag=/path/to/tags 指定.

4.  语法高亮

使用   :syntax on   就能够激活语法高亮显示了, 如果还没有显示颜色,
可能需要  :set filetype=cpp  表示使用 cpp.vim 作为语法高亮显示.
使用不同颜色方案:
:colorscheme default
如果没有设置环境变量 VIMRUNTIME 可能也会没有显示语法高亮

[qsh@thai src]$ ls /usr/local/share/vim/vim64/colors/
README.txt     default.vim    elflord.vim    morning.vim    peachpuff.vim
blue.vim       delek.vim      evening.vim    murphy.vim     ron.vim
darkblue.vim   desert.vim     koehler.vim    pablo.vim      shine.vim
[qsh@thai src]$ echo $VIMRUNTIME
/usr/local/share/vim/vim64

还可以使用自己的配色方案:

$ mkdir ~/.vim/colors
$ cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim

然后这样使用:       :colo  mine

一般来说, 默认的配色方案就已经很好看了.

有时想自己定义关键字颜色:

:highlight Comment ctermfg=cyan guifg=cyan

这句在写代码时很管用的, 表示注释用蓝色显示.
其它具体使用可参考 vim 自带的文档(见后面)

5.  文档

5.1 查看帮助

———————————————————————–
条目                          前缀                      例子
———————————————————————–
Normal模式命令                  无                     :h k
CRTL控制字符                    CRTL_                  :h CRTL_r
Visual视图模式                  v                      :h v_u
Insert插入模式命令              i                      :h i_CRTL-o
ex-模式命令                     :                      :h :set
Command-line命令行编辑          c                      :h c_<BS>
命令参数                        -                      :h -m
选项                            ‘                      :h ‘winminwidth’
———————————————————————–

:h <Left>
:h <CR>
:h <Up>
:helpg[rep] {pattern}  搜索所有的帮助文本并给出一个匹配 {pattern} 行的列表.

5.2  入门文档

a. $ vimtutor
在 shell 下执行 vimtutor 就会进会 vim 的入门教程.

b.  进入 vim 后输入 :h 就进入 vim 的帮助, 蓝色如下面的这些

|usr_22.txt|  Finding the file to edit
|usr_23.txt|  Editing other files
|usr_24.txt|  Inserting quickly

的两竖线之间的文档都已经作了 tag , 把光标移到相应位置就可以用 ^] 跳转了.

c.  若想看指令 f 的帮助, 输入 :h f 即可.

d.  可以到 www.vim.org 查看

6.  参考文档

参考了 vim 自带的文档: 即进入 vim 后, 按 :h

Bookmark and Share
Tagged with: [ ]

vim常用插件介绍(转)

This item was filled under [ vim, 一步一步学习中 ]

转自:http://blog.csdn.net/xuzhihong_gdut/archive/2009/01/15/3789080.aspx

vim常用插件介绍:

vim是Linux下强大的编辑器之一,是每个linuxer并不可少的工具。vim的插件扩展
工能为vim增加了不少的特色。关于如何将vim打造IDE网上的资料也不少,下面只是
我自己对vim的配置。

推荐文章:http://blog.csdn.net/wooin
<<手把手教你把 Vim 改装成一个 IDE 编程环境>>

工具或插件介绍,如想进一步了解请参照官方文档。
1) Exuberant Ctags : 它可以为你的源码产生一个tags文件,并且在tags文件中记录
源文件的索引以帮助你快速得找到某个符号的定义。它支持相当多的语言,如C、C++、C#、Shell等等。
常用命令:Ctrl+] 跳到声明定义处  Ctrl+T 跳回原处
下载地址:http://ctags.sourceforge.net

2) trinity.vim : Build the trinity of srcexpl, taglist, NERD_tree to
be a good IDE. 这个插件将 srcexpl、taglist、NERD_tree这三个插件集中起来做成IDE
taglist: Source code browser (supports C/C++, java etc)
srcexpl: A Source code Explorer based on tags works like context
window in Source Insight
NERD_tree: A tree explorer plugin for navigating the filesystem
下载地址:http://www.vim.org/scripts/script.php?script_id=2347

3) omnicppcomplete: C/C++ omni-completion with ctags database
这个插件用于自动补全,可用于 . ->  :: 等操作符。
下载地址:http://www.vim.org/scripts/script.php?script_id=1520

4) c.vim: C/C++ IDE –  Write and run programs. Insert statements, idioms,
comments etc. 这个插件的功能比较多,它集成了编译、链接、运行、注释等许多IDE常用的功能。
下载地址:http://www.vim.org/scripts/script.php?script_id=213

5) echofunc.vim : Echo the function declaration in the command line for C/C++.
这个插件主要用于显示函数声明。
下载地址:http://www.vim.org/scripts/script.php?script_id=1735

6) stl.vim: Improved C++ STL syntax highlighting.
原来的vim对C++的语法高亮不支持像string、 vector之类的STL模板类。
下载地址:http://www.vim.org/scripts/script.php?script_id=2224

7) stlrefvim.vim: A C++ Standard Template Library reference manual.
这个插件让你轻松的拥有C++ STL的文档帮助
下载地址:http://www.vim.org/scripts/script.php?script_id=2353

知道了这个插件的作用之后就可以行动了,首先需要具备一些vim的基本知识:像如何使用插件(每个插件
都有它的安装帮助)、vim一些文件夹的作用(如plugin,syntax…)、vim键映射等。
建议在使用这些插件之前先读一读它的文档,了解一下这些插件的作用和主要的功能,并且看一下它的文件
结构,大概看一下它的源码,这样就方便你以后对插件的修改(如改变快捷键映射)。这个学习过程并不困
难也无须花大量的时间。

下面是我的vim配置文件

“基本配置
set mouse=a                 ”启动鼠标功能
set nocompatible         “不兼容旧版本
set nu                   “显示行号
set tabstop=4            “tab=4
set shiftwidth=4         “缩进4
set wrap                 “折行
set ruler                “在vim窗口右下角显示光标位置
set ignorecase           “忽略大小写
“set hlsearch             “查找时高亮显示
set showmode             “显示当前工作模式

syntax enable            “打开色彩
syntax on                “打开语法高亮
set cindent              “使用C语言的缩进方式
set autoindent             ”自动缩进
set showmatch            “显示括号配对
set smartindent          “智能对齐
“set whichwrap+=h,l      “使用h,l移动可以跨行
“set mps+=<:>            “让<>可以使用%跳转
“set foldmarker={{{,}}}

“备份相关配置
set nobackup
set backupext=.bak
set writebackup          “写备份但关闭vim后自动删除
“set backupdir=path      “设置备份路径

“Omnicppcomplete Configuration
“下面两行开启了vim三种智能
“1.自动识别file类型
“2.用file type plugin脚本
“3.使用缩进定义文件
“set nocompatible
filetype plugin on
filetype indent on
let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_MayCompleteScope=1
set completeopt=longest,menu          “关掉智能补全时的预览窗口
map <silent> <F12> :!ctags -R –c++-kinds=+p –fields=+iaS –extra=+q .<CR>
set tags+=/usr/include/c++/4.2.4/tags

“Tlist Configuration  taglist.vim
let Tlist_Process_File_Always=1     “Always Process File
“let Tlist_Auto_Open=1              “Open Tlist when vim start
let Tlist_Enable_Fold_Column=1
let Tlist_Exit_OnlyWindow=1         “If only Tlist window works, vim exit.
let Tlist_Sort_Type=”name”          “sort by name
let Tlist_Show_One_File=1

“echofunc Configuration
let g:EchoFuncKeyPrev=’<C-b>’
let g:EchoFuncKeyNext=’<C-n>’

“trinity.vim: Build the trinity of srcexpl,taglist,
“NERD_tree to be a good IDE
nmap <F8> :TrinityToggleAll<CR>
nmap <F9> :TrinityToggleSourceExplorer<CR>
nmap <F10> :TrinityToggleTagList<CR>
nmap <F11> :TrinityToggleNERDTree<CR>

gvim

Bookmark and Share
Tagged with: [ ]

配置VIM下面的Python环境

This item was filled under [ vim, 一步一步学习中 ]

原文:http://hi.baidu.com/camark/blog/item/0806cc3f37a390c67d1e71ae.html]http://hi.baidu.com/camark/blog/item/0806cc3f37a390c67d1e71ae.html(有改动)
不知道为什么,我的vi安装了vim-python以后依然没有语法加亮和自动缩进功能,使用起来非常的不顺手。今天下定决心,自己Google一下,终于搞定。
完成以后有一下功能:
1、Python语法加亮
2、自动缩进
3、自动补全
4、自动完成
哈哈,用起来是否顺手。
在这里记录一下,配置过程。
1、安装软件包,最好安装vim-full包和vim-python
sudo aptitude install vim-full vim-python
2、建立自己的.vimrc 文件,我的配置如下(参考自ubuntu中文论坛)
” 自动补全命令时候使用菜单式匹配列表
set wildmenu
” 允许退格键删除
set backspace=2
” 启用鼠标
set mouse=a
” 文件类型
filetype on
filetype plugin on
filetype indent on
” 设置编码自动识别, 中文引号显示
“set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom
set fileencodings=utf-8,gbk
set ambiwidth=double
” 移动长行
nnoremap  gj
nnoremap  gk
” 高亮
syntax on
” 设置高亮搜索
set hlsearch
” 输入字符串就显示匹配点
set incsearch
” 输入的命令显示出来,看的清楚些。
set showcmd
” 打开当前目录文件列表
map  :e .
” Taglist
let Tlist_File_Fold_Auto_Close=1
set updatetime=1000
map  :Tlist
” 按 F8 智能补全
inoremap
” vim 自动补全 Python 代码
” 来自http://vim.sourceforge.net/scripts/script.php?script_id=850
autocmd FileType python set complete+=k~/.vim/tools/pydiction-1.2
自动补全需要下载pydiction这个软件包,可以从这里下载:

http://vim.sourceforge.net/scripts/script.php?script_id=850

解压文件
tar xzvf pydiction-1.2.tar.gz
得到一个文件夹pydiction-1.2文件夹。
拷贝文件夹里面的pydiction文件到Home目录下面的.vim/tools目录下面(如果没有,需要手工建立):
mkdir -p ~/.vim/tools
然后启动vim,就会看到vim自动进入Python模式了,包括语法加亮和自动缩进功能。
按F8或者Ctrl+N会出现“自动完成的提示”。

还是非常舒服啊!
对于vim,我还是一个初学者,自己加油啊!

Bookmark and Share
Tagged with: [ , , , ]

VI(VIM)编写程序技巧

This item was filled under [ vim, 一步一步学习中 ]

VI(VIM)编写程序技巧

此页由Linux Wiki用户Chenxing于2008年11月19日 (星期三) 09:56的最后更改。 在Linux Wiki用户MinuxPigguo的工作基础上。

出自Linux Wiki

热切期盼您改进本页,要改进本页,请先登录,并选择编辑。

由于转载不当很可能造成格式的破坏,降低文档价值,本文不推荐转载。但是您确实有转载本文档的权利,如果您一定要转载,请一定保留本文的所有信息。

vi作为优秀的文本编辑器,同样可以胜任程序编写任务。本文介绍使用VI进行程序设计的一些技巧。

语法加亮显示

目前的vim支持多种语言的语法高亮显示。在命令状态下输入:

:syntax on

也可缩写为:

:syn on

也可以指定语言,如C语言:

:set syntax=c

括号匹配

在命令状态下,可以使用%进行括号匹配。即在括号处按下”%”,光标会跳转到与之匹配的括号。

在VIM 7或更高版本中,支持在插入状态下括号的自动匹配,即高亮显示光标所在处的括号和与之匹配的括号。若要关闭此功能,可用

:NoMatchParen

如果要再开启,可以用

 :D oMatchParen

如果要更改颜色,可以用hi,例如:

:hi MatchParen ctermbg=blue ctermfg=white

如果要更改需要匹配的符号,可以编辑matchpairs选项

注释管理

手动地逐行加注释一般较繁,推荐装一些插件来快速地注释(或取消注释)代码,参见Vim与程序注释

缩进

使用自动缩进可能需要设置,vim中对自动缩进的详细设置办法见Vim代码缩进设置。下面介绍调整缩进的方法:

插入状态

Ctrl-T
右缩
Ctrl-D
左缩
^Ctrl-D
删除行首空格

命令状态下左右缩进

>> 右缩进
<< 左缩进
n<< 或 n>> 缩进多行,如4>>

可视状态下的缩进

使用<>进行缩进,也可使用n<n>多节缩进

可以用 = 对选中的部分进行自动缩进。

粘贴时的自动缩进

]p 可以实现p的粘贴功能,并自动缩进

光标移动

gd 到局部变量的定义
gD 到全局变量的定义
[[ 到当前块起始的{处
]] 到当前块结束的}处
Ctrl-O 返回到跳转前的地方

配合ctags,还可使用Ctrl-]进入函数,Ctrl-T返回

其它

K 转到当前函数的文档,需要安装manpages-dev。
:set number 或 :set nu 显示行号
:set nonumber 或 :set nonu 不显示行号
Ctrl-N 或 Ctrl-P 插入模式下的自动补全功能。
Bookmark and Share
Tagged with: [ ]