Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514912
  • 博文数量: 484
  • 博客积分: 10145
  • 博客等级: 上将
  • 技术积分: 5805
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 18:34
文章分类

全部博文(484)

文章存档

2011年(52)

2010年(107)

2009年(287)

2008年(38)

我的朋友

分类: LINUX

2009-11-10 22:27:12

vim奇技淫巧(一)
总结一下自己经常用vim的一些技巧和操作,很基本的就不写了,很高深的还有待以后补充:
  • 替换
:%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
阅读(419) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~