Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1181556
  • 博文数量: 181
  • 博客积分: 4968
  • 博客等级: 上校
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-13 21:52
文章分类

全部博文(181)

文章存档

2015年(2)

2013年(6)

2012年(22)

2011年(41)

2010年(27)

2009年(51)

2008年(32)

我的朋友

分类: LINUX

2009-11-24 22:12:39

vim的技巧

 
  • 粘贴板
vim有多个粘贴板,常用的是0-9、a、""、+,用reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到""粘贴板里,用p粘贴的也是这个粘贴板里的内容

要将vim的内容复制到某个粘贴板,选择要复制的内容,然后按"Ny完成复制,其中N为粘贴板号

""号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容

+号粘贴板是系统粘贴板,用"+y将内容复制到该粘贴板后可以使用Ctrl+v将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用Ctrl+c或右键复制的内容复制到vim中,需要在正常模式下按"+p

要将vim某个粘贴板里的内容粘贴进来,按"Np,其中N为粘贴板号,如"9p
 
  • 替换
:%s/abc/abcc/gc
c表示询问
:$s/abc/abcc/ge
e表示即使整个文件没找到一个匹配的目标也不要报错
:.,$s/yes/no
.表示当前行,$表示最后一行。总体的语句表示从当前行到最后一样进行匹配
:s+one/two+one or two+g
用+替换/
:s/good\|nice/handsome/g 
把good或nice替换成handsome
:s/aaa/bbb/g4   
只替换4行
:4,9s/\d\+/\=submatch(0)+1/
第4到9行的数字加一
:%s/^\w/\=toupper(submatch(0))/g
首字母大写
:%s/^/\=line(".").". "/g
加行号
  • 跳转
/^abc
转到以abc开始的行
ctrl+-> /  ctrl + <- 
一次移动一个单词
30+ /  30- 
向前/向后移动30行
ctrl+o / ctrl_i 
跳到更老的位置/跳到更新的位置
{
跳到上一段    
} 跳到下一段
‘“
跳到上次关闭文件时,在NOMAL模式下的光标所在行
’^
跳到上次关闭文件时,在INSERT模式下的光标所在行
qa
开始记录宏(这里的a可以用任意一个字母代替)

结束宏记录
@a
执行名字为a的宏
  • 标记
ma  
标记此行为a
‘a  
移到标记为a的行
mA/'A 
可以跨文件进行标记
  • 补全
Insert模式下,ctrl+n  / ctrl+p 
补全
ctrl+a        
重复上次在Insert模式下的动作
Insert模式下,ctrl+y / ctrl+e 
重复上一行/下一行光标处的字符
:iab xl xulei
当键入xl(空格)时,会被替换成xulei
ctrl+x ctrl+n
在文件中补全以前出现过的单词
ctrl+x ctrl+p
在文件中补全以前出现过的单词
ctrl+x ctrl+l
在文件中补全以前出现过的一行
ctrl+x ctrl+f
补全文件名
ctrl+x ctrl+k
单词补全
ctrl+x ctrl+t
同义词补全
  • 其他
用v选中多行, 然后 !sort        
可以实现排序
g ctrl+G(先按g然后按ctrl+G)    
统计字数(或先用v选中部分需要统计的文字)
将光标移到一个函数上,K(大写)   
将自动man此函数
在一个vim文件中:grep abc *     
将匹配到所有包好abc的文件 :cn下一个  :cp上一个  :cl文件列表
vim `grep -l abc *`          
打开包含abc的所有文件
ctrl+c=esc
:history                     
命令记录
q:                           
打开命令行历史窗口
q/                           
打开查找历史窗口
:w filename                  
另存为
:1,3w filename             
1-3行另存为
Insert模式下,ctrl+w 
删除前一个单词
Insert模式下,ctrl+u 
删除此行光标前所有单词
:set showmatch 
当键入if(i>0)的)的时候,光标会跳到(处停留1/10秒,再回来
:set cindent shiftwidth=4  
设置缩进
=a{    
调整{}之间的缩进格式
gu 
变小写 
gU
变大写
光标定位在数字上ctrl+a
增1
阅读(1000) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-16 15:53:44

总结的很好 很实用 拿来慢慢学习了 哈哈 谢谢