有关vim编辑器使用心得的十个分享

  • 【51CTO独家特稿】Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被 推崇为类Vi编辑器中最好的一个。Vim目前已经有类Unix版和Windows版,尽管vim较vi已经改良了不少,但是初次使用还是会一头雾水,不知 如何操作,所以学习vim要首先过2关。在本文中会有资深的系统管理员与大家分享他对vim的使用心得,并且在本文最后为大家附上vim的常用命令表。

第一关是理解vim的设计思路,vim设计之初就是整个文本编辑都用键盘而非鼠标来完成,键盘上几乎每个键都有固定的用法,且vim的制作者希望用 户在普通模式(也就是命令模式,只可输入命令)完成大部分的编辑工作,将此模式设计为默认模式,初学者打开vim,如果直接输入单词,结果就会滴滴乱响, 这是因为vim把用户输入的单词理解为命令了。

第二关是命令关,vim有过百条命令对应编辑的需要,如果能熟练使用vim这些命令,编辑速度确实比鼠标要快很多,但是想全都记住它们也是一件难 事,我想记住它们最好的方法就是多多来练习,确实把vim用在日常的文本编辑中去,且遇到难题不要放弃,而是查找解决的方法,每解决一个难题,你的vim 技能就上升一级。

资深管理员的使用心得

一、FreeBSD下的vim与Linux是不一样的,建议优化各用户下的.vimrc文件,我现在的习惯做法就是随身带着二个优化文 件.cshrc、.vimrc,哪台机器上有我的帐户,我就直接导入到哪台机器的/home/andrewy的帐户下,这样用起来就得心应手了;

二、在下面附表中的用法仅仅只满足System Administrator的基础工作,如果是Devoleper人员,强烈建议继续深入研究其高深语法;特别是作为PHP和JAVA的Devoleper,用vim编辑程序代码更不是问题;

三、如果跟图形界面打交道比较多的哥们,可以下载一个gvim用来学习及工作;

四、在加深vim学习的同时,也建议加强sed的理解和学习,尽量用vim+sed来完成日常中的一切编辑工作;

五、尽量用h、j、k、l来完成左下上右的工作,这个远远比你用键盘的方向键更有效率,但这是大家很容易忽视的一个问题,切肤之痛就是有的unix机器不支持方向键;

六、vim不仅仅是一个编辑器,你也可以用它来查看服务器的配置文件(.conf)、php(.php)文件及shell(.sh)文件等,如果玩得很熟练的话,也可以用其来查看日志文件,注意最后不保存退出即可;

七、这里只介绍两个有用的插件(事实上我也基本只用这两个)taglist和ctags。用过eclipse的人可能会对按住ctrl点击程序中的函数、变量等,自动跳转到其定义处的功能赞叹不已,而这个功能Vim也可以实现,用的就是ctags;

八、辅助Excel等系统处理数据,主要利用正则替换、列模式功能。如把2006-6-30替换为2006.6.30或2006.06.30;

九、我现在用的较多的gvim主要是用来编辑shell文件和处理文本文档,感觉效果非常方便;C文件也是可以用vim来编辑的;

十、我同事在windows xp下用gvim来看txt小说,看起来效果也不错;我昨天尝试在我的工作机windows 2003下用gvim看《明朝那些事儿》的txt,确实可以。

Vim常用命令表:

命令模式 光标移动
h或 向左方向键 光标向左移动一个字符
j或 向下方向键 光标向下移动一个字符
k或 向上方向键 光标向上移动一个字符
l或 向右方向键 光标向右移动一个字符
Ctrl+f 屏幕向前翻一页(常用)
Ctrl+b 屏幕向后翻一页(常用)
Ctrl+d 屏幕向前翻半页
Ctrl+u 屏幕向前翻半页
+ 光标移动到非空格符的下一列
光标移动到非空格符的上一列
n<space> 按下数字后再按空格键,光标会向右移动这一行的n个字符。例如20<space>,则光标会向右移动20个字符
0(HOME) (是数字0)动到这一行的第一个字符处(常用)
$(END) 移动到这一行的最后一个字符处(常用)
H 光标移动到这个屏幕最上方的那一行
M 光标移动到这个屏幕中央的那一行
L 光标移动到这个屏幕最下方的那一行
G 光标移动到文件的最后一行
nG 移动到这个文件的第n行。例如20G,则会移动到这个文件的第20行(可配合:set nu)
n<Enter> 光标向下移动n行(常用)
命令模式 查找与替换
/word 在光标之后查找一个名为word的字符串(常用)
?word 在光标之前查找一个名为word的字符串
:n1,n2s/word1/word2/g
在第n1与n2行之间查找word1这个字符串,并将该字符串替换为word2(常用)
:1,$s/ word1/word2/g 在第一行与最后一行之间查找word1这个字符串,并将该字符串替换为word2(常用)
:1,$s/ word1/word2/gc 在第一行与最后一行之间查找word1这个字符串,并将该字符串替换为word2,且在替换前显示提示符让用户确认(conform)(常用)
一般模式 删除、复制与粘贴
x,X X为向后删除一个字符,X为向前删除一个字符(常用)
Nx 向后删除n个字符
Dd 删除光标所在的那一整行(常用)
Ndd 删除光标所在列的向下n列,例如,20dd则事删除20列(常用)
d1G 删除光标所在行到第一行的所有数据
dG 删除光标所在列到最后一行的所有数据
Yy 复制光标所在行(常用)
Nyy 复制光标所在列的向下n列,例如,20yy则是复制20列(常用)
y1G 复制光标所在列到第一列的所有数据
yG 复制光标所在列到最后一列的所有数据
p,P p为复制的数据粘贴在光标下一列,P则为粘贴在光标上一列(常用)
J 将光标所在列与下一列的数据结合成一列
U 恢复前一个动作(undo)
编辑模式
i,I 插入:在当前光标所在处插入输入的文字,已存在
a,A 添加:由当前光标所在处的下一个字符开始输入,已存在的字符会向后退(常用)
o,O 插入新的一行:从光标所在行的下一行行首开始输入字符(常用)
r,R 替换:r会替换光标所指的那一个字符;R会一直替换光标所指的文字,直到按下Esc为止(常用)
Esc 退出编辑模式,回到一般模式(常用)
命令行模式
:w 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为只读,强制写入该文件
:q 退出vi(常用),快捷方式为SHIFT+ZZ
:q! 若曾修改过文件,又不想保存,使用!为强制退出不保存文件,快捷方式为SHIFT+ZQ
:wq 保存后退出,若为:wq!,则为强制保存后退出(常用)
:w[filename] 将编辑数据保存为另一个文件(类似另存新文档)
:r[filename] 在编辑的数据中,读入另一个文件的数据。即将filename这个文件内容加到光标所在行的后面
:set nu 显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu 与ser nu相反,为取消行号
:set nohlsearch 可取消高亮,可编辑/etc/vimrc来编辑取消所有高亮
n1,n2 w[filename] 将n1到n2的内容保存为filename这个文件

【51CTO独家特稿 转载请标明作者与出处】

from http://os.51cto.com/art/201009/227285.htm

发表评论?

0 条评论。

发表评论