Work Better Than Yesterday!

zhangge's stupid and messy life


Home| Life| Technique Concentrate On One Thing.

Linux下的神级文本编辑器vim/vi

02 May 2013

关于vim/vi的介绍网上太多了,我是从鸟哥的私房菜那里学习到vim的,确实它很厉害,迷上了它,学习了它,却没有熟练使用它。

VIM练级操作命令记录

1.cw:				删除从光标所在位置到一个单词结尾的字符
2.0,$,^,g_:			到行头,到行尾,到本行第一个不是blank的字符,到本行最后一个不是blank的字符
3.:e filename,:bn,:bN:		打开一个文件,移动到下一个文件,注意以鸟哥给的不一样
4.saveas filename:		另存为一个文件
5.N<command>:			重复command命令N次
6.100idesc[ESC],.,3.:		插入100个desc,重复插入100个desc,插入3个desc(还是不明白为什么只插入三个)
7.:n<Enter>,w/W,e/E:		到下一个单词/下一个程序语句(空格分隔)的开头,到下一个单词/程序语句的结尾。
8.*,#:				匹配光标当前所在的单词,分别移动到下一个和上一个
9.%:				匹配大中小括号移动,即从一边括号移动到另一边括号。需要把光标先移到括号上.
10.gU2,gu2:			以下2行变大写,小写。
11.y,ye:			y是从光标开始复制,ye是复制到单词最后一个字符
12.3fa:				到下一个为a的字符处,改变3和a即可。F即是相反方向。
9.t,:				到逗号前的第一个字符,同上
10.dt“:				删除所有的内容,直到遇到双引号
11.区域选择<action>a<object>或<action>i<object>,action可以是任何命令,object可以是单词,句子,段落,符号" ' ) } ]
   例如:(map (+) ("foo"))光标位于o,有以下操作:
   vi":选择foo
   va":选择"foo"
   vi):选择"foo"
   va):选择("foo")
   v2i):选择map(+)("foo")
   v2a):选择(map(+)("foo"))
12.块操作:<C-v>。典型的操作:0 <C-v> <C-d> I-- [ESC]。
   0:到行头。<C-v>:开始块操作。<C-d>:向下移动,也可以使用其他移动。I--:I是插入--。[ESC]:为每一行生效。
13.自动提示:<C-n>和<C-p>,在insert模式下可以使用自动补全。
14.宏录制:qa操作序列q,@a,@@。qa把你的操作记录在寄存器a;于是@a会replay被录制的宏;@@是一个快捷键用来replay最新录制的宏。
   示例操作:qaYp<C-a>q,@a,@@,100@@
   qa开始录制,Yp复制行,<C-a>新行增加1,q停止录制,@a回放一次,@@回放一次,100@@回放100次
15.C-v选择块后,<,>,=:分别是左缩进,右缩进,自动缩进
   C-v,可以用j,C-d,方向键,/pattern,%等来选择块,$,A,输入字符,[ESC]:在所选的行后加上字符

鸟哥上的操作说明:

1.n1, n2 w filename:		将n1到n2行保存到filename
2.hjkl:			左下上右移动,同时可以用方向键,可以结合数字来加快移动
3.C-f,C-b,C-d,C-u:		向下移动一页,向上移动一页,后面两个是半页
4.+,-:				游标移动到非空白的下一列/上一列
5.n<space>:			向右移动n个字符
6.H,M,L:			移动光标到屏幕最上方/中央/最下方那一行的第一个字符
7.G,nG,gg,n<Enter>:		移动光标到最后一行/第n行/第一行/下移n行
8./word, ?word, n, N:		向下/向上搜索word,向下/向上搜索下一个word
9.:n1,n2s/word1/word2/g:	把第n1行到第n2行的word1替换成word2
10.:1,$s/word1/word2/g:		把所有的word1替换成word2
11.:1,$s/word1/word2/gc:	C代表confirm,每次替换都要确认
12.x,X,nx:			删除下一个/前一个字符,连续删除下n个字符
13.dd,ndd,d1G,dG,d$,d0:		删除当前行,删除下n行,删除第一行到当前行,删除当前行到最后一行,删除光标到行末/行首
14.yy,nyy,y1G,yG,y$,y0:		同上,为复制
15.p,P:				粘贴到下一行/上一行
16.J,c:				删除本来的换行符,与下一行整合在一起,可以结合块操作;重复删除多个资料
17.u,C-r,.:			复原/重做上一个动作/重复前一个动作
18.i,I,a,A,o,O:			插入当前光标/插入到当前行的第一个字符,插入到光标下一个字符/插入当前行最后一个字符,向下/向上插入新行
19.r,R:				进入取代模式,r只取代一个字符,R取代一直是取代模式
20.:w,:w!,:q,:q!,:wq:		保存,强保,退出,强退,保存退出
21.ZZ:				保存退出
22.:w filename			另存为
23.:r filename			读入文件内容到光标
24.:n1,n2 w filename		将n1到n2行的内容存到filename
25.! command			暂时离开vim,并执行command,如! ls /home/zhangge
26.set nu, set nonu		显示/取消行号
27.v,V,C-v,y,d			字符区域选择,行区域选择,块区域选择,复制区域,删除区域
28.vim file1 file2, :files	同时打开多个文件,显示目前打开的文件
29.:n,:N			编辑上一个文件,下一个文件
30.:sp filename			split一个窗口打开filename,这里是水平分
31.:vsp filename		vsplit一个窗开打开filename,这里是垂直分
32.C+w+j,C+w+k			在多窗口模式移动到上一个窗口/下一个窗口

自己的操作记录:

1.K				在命令模式把光标移到一个单词上,然后按大写K则会跳到man页面,相当于:! man word

Sunday don't come easily! Subscribe to RSS Feed