Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4611372
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: LINUX

2006-12-26 15:44:33

复制当前光标下单词到命令行 ctrl-r ctrl-w


还有一个有用的命令就是g
g是global的意思
意思是执行全局操作

语法如下
:范围g/条件/[动作]

:%g/hello/d
表示删除所有包含hello的行 是不是很方便

当然动作可以没有 没有时只打印查找到的结果


正则表达式


在vim的查找和代替及全局操作命令中都可以使用正则表达式
有了正则表达式的帮助 写出强大的命令更方便

下面就说说在vim中使用的正则表达式吧

CODE

^  匹配行首
$  匹配行尾
\< 匹配单词的开始
\> 匹配单词的末尾
.  匹配除换行符外的任意一个字符
\_.匹配任意一个字符 包括换行符
\w 匹配一个单词字符 也就是a-zA-Z0-9 可以h \w得到详细信息
\s 匹配空格字符包括空格和tab字符
\n 匹配换行符
特殊字符 使用CTRL-V CTRL-要输入的特殊字符, 注意在win下使用ctrl-q代替ctrl-v
如ctrl-v ctrl-M 是^M
[] 匹配这里面的任意一个字符 如[a-z]匹配任意一个a-z的字符

\(串\) 把这个串保存起来 后面可以使用\1 \2来引用符合条件的串

*  匹配0次或多次
\+ 匹配1次或多次
\= 匹配0次到1次
\{最少次数,最多次数}匹配指定的次数 ,如果最少次数为- 表示匹配最小的的次数 看帮助



如 想去掉行尾无用的空格
如下
%s/\s\+$//g
想查找单词foo
/\
相当于在foo下输入*或是#

想把所有的fool开始的单词 代替成 is fool这个单词
:%s/\(\
查找所有的以hello开始的段 并把它删除 段的结束符号是\n\n
:%s/^hello\_.\{-1,1000000}\n\n//g
-1表示最少匹配1 次 并且使用最少匹配



自动缩进使用gg=G

偶下面再讲一下查找代替功能吧 vim带有正则表达式功能 所以功能比其它vimdows下的都要强大

查找与替换


按键名称

/ 向后查找
? 向前查找
:s 替换

查找时按键
n 正向一个
N 反向下一个

快速查找(在命令模式下)
* 向后查找光标下的单词 全字匹配
# 向前查找光标下的单词 全字匹配

范围
%全文代替
替换时模式
g 全部代替 如果没有这个表示只代替一个
c 需要确认

高级命令:
g



下面开始讲上面的命令
查找命令
在命令模式下输入
/要查找的内容<回车>
然后就开始跳到找到的内容了
按n表示下一个
按N表示上一个

按?是向上查找 这时n表示上一个 N表示下一个 动手试一试


在命令模式下 把光标停在某个单词下面 然后按*
这时就会向下查找这个单词
按#是向上查找 这时一样可以使用n N跳转



替换功能:
替换命令是在命令模式下输入
:范围s/要查找的内容/代替后的词/参数
如果没有指定参数,那只代替一次 如果想代替多次可以加上/g 如果需要确认那可以加上c


:%s/helo/hello/gc
在全文范围内查找helo 并把它代替成hello 代替时需要确认

范围的表示
%表示全文
开始行号,结束行号 表示在这个范围内代替
结束行号可以使用绝对行号 如1090
也可以使用相对行号 如+5表示向下5行
还可以使用查找条件

:1,/helo/s/wwww/web/gc
表示从第一行查找到包含helo的行 在这个范围内替换

.表示当前行 或是可以不写
这样上面的命令就可以变成
:.,/helo/s/wwww/web/gc

:,/helo/s/wwww/web/gc



打开多个文件以后,简单的切换方法是:b1,:b2这样切换,具体的可以用:ls看打开的文件列表

如果当前目录是在makefile的地方或者automake的build下面,可以:make编译,后面的许多事情自然可以水到渠成了
阅读(2737) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~