不知不觉一周的时间又过完了,感觉前所未有的充实!这周学习了vim编辑器据说很重要!
一.打开文件
vim +n filename 打开文件后,让光标处于第n行的行首,+默认尾行。
vim +/要搜索的词 filename 打开文件后,直接让光标处于第一个被匹配到的行的行首。
vim
-m 只读方式打开文件
-b 二进制打开文件
-d file1 file2 比较多个文件
二.vim编辑器模式的切换
插入模式-------->命令模式
esc
命令模式--------->扩展命令模式
:
扩展命令模式-------->命令模式
enter,esc
命令模式
ZZ: 保存退出
ZQ :不保存退出
命令模式翻屏操作:
ctrl +f 向下翻一屏
ctrl +b 向上翻一屏
ctrl +d 向下翻半屏
ctrl +u 向上翻半屏
扩展命令模式:
:q 退出
:q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出
注意:wq!或x!当文件对当前用户权限为read-only时,可以强制保存并退出(仅限root和当前文件的owner)
扩展命令模式
按“: ”进入扩展模式
创建一个命令提示符: 处于底部的屏幕左侧
命令:w 写(存)磁盘文件
wq 写入并退出
x 写入并退出
q 退出
q! ! 不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出
地址界定(扩展命令模式)
#具体第# 行,例如2 表示第2行 行
#,# 从左侧#表示起始行,到右侧#表示结尾行
#,+# 从左侧#表示的起始行,加上右侧#表示的行数 。":2,+3表示2到5行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文, 相当于1,$
/pat1/,/pat2/
从第一次被pat1 模式匹配到的行开始,一直到第一次被pat2 匹配到的行结束
查找(扩展命令模式)
?PATTERN :从当前光标所在处向文件首部查找
n :与命令同方向
N:与命令反方向
替换 (扩展命令模式)
格式:s/ 要查找的内容/ 替换为的内容/ 修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以 使用“&” 引用前面查找时查找到的整个内容。
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现
gc: 全局替换,每次替换前询问
查找替换中的分隔符/ 可替换为其它字符,例如 s@/etc@/var@g s#/boot#/#i
多文件模式:vim f1 f2 f3
:first 第一个
:next 下一个
:last 最后一个
:prev 前一个
:wall保存所有
:qall退出所有
:wqall保存退出所有
使用多个窗口
多文件分割:vim -o|-O file1 file2 file3
-o 水平分割
-O 垂直分割
在多个窗口间切换: ctrl+w Arrow
单文件分割:
ctrl+w,s : split 水平分割
ctrl+w,v : vertical 垂直分割
ctrl+w,q : 取消相邻的窗口
ctrl+w,o : 取消所有的窗口
:wqall 退出
◆习题
1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符。
这道题中用到的知识点有:
1.地址界定 %表示全
2.替换的格式:格式:s/ 要查找的内容/ 替换为的内容/ 修饰符
3. 要查找的内容用到正则表达式
4. 要替换成空格可以用//表示
2.复制/etc/rc.d/init.d/functions 文件至/tmp 目录,用查找替换命令为/tmp/functions 的每行开头为空白字符的行的行首添加一个#号。
与上道题相比,这道题要用到后项引用,但是要注意的是后向引用的时候,要引用的内容一定要加()
3.复制/etc/rc.d/init.d/functions 文件至/tmp 目录,替换/tmp/functions 文件中的/etc/sysconfig/init 为/var/log 。
答案: :%s@\/etc\/sysconfig\/init@\/var\/log@g
解析:这道题中有许多"/",为防混淆可将查找替换中的分隔符/换成别的,如:@,#,此外查找替换中的/要进行转义
本文转自 honeyorange 51CTO博客,原文链接:http://blog.51cto.com/13172732/1953826