vim编辑器

回顾:    正则表达式(BRE,ERE)BRE:    字符匹配:. []  [^]    分组:\(\)   \1,\2     次数匹配:* \?  \+  \{m,n\}    位置锚定:^ $   \《     \>  \b ERE:    字符匹配:. []  [^]    分组:()   \1,\2     次数匹配:*  ?  +  {m,n}  //前字符    位置锚定:^  $   \《     \>  \b     或者:  |grep,egrep,fgrepwc,cut,sort,uniq,diff,patch    wc 字,词行统计    cut 列切割    sort 排序    uniq 去除重复    diff 比较,制作补丁    patch 打补丁

目录

1.vim简介2.模式转换3.关闭文件:4.编辑模式光标调整5.翻屏操作6.编辑命令7.可视化模式8.撤销操作;undo9.重复执行前一个编辑操作10.vimturo教程11.vim末行模式12.编辑命令13.查找和替换14.vim的多文件模式15.定制vim的工作特性16.帮助

1.vim简介

文本编辑器:

文本:纯文本,ASCII text;Unicode字符集//全球统一编码

文本编辑器种类:

行编辑器

sed,

全屏编辑器:

nano ,vim ,vi

vi:visual interface

vim: VI Improved

模式化的编辑器

获取帮助信息:

:help

:help usr1_01.txt //获取帮助信息

2.模式转换

基本模式:

编辑模式:命令模式 //默认模式

编辑模式-->输入模式

i:insert,在光标所在处输入

a:append,在光标后方输入

o:在光标所在处下方打开一个新行

I:在光标所在行的行首输入

A:在光标所在行的行尾插入

O:上一行插入

输入模式--->编辑模式:ESC

输入模式:

末行模式:

编辑模式-->末行模式 :

1,10d //删除1-10行

vim +3 /etc/passwd //光标定位到第三行

vim +/PATTERN  //打开文件后,直接让光标定位到第一个被PATTERN匹配到的行的行首

vim + file //定位到最后一行

3.关闭文件:

ZZ 保存文件 //编辑模式退出

:q 退出 //末行模式退出

:q! //强制退出,不保存

:wq //保存然后退出

:x //保存并退出

:w  /PATH/TO/SOMEFILE  //保存到其他文件

:w  >> /PATH/TO/SOMEFILE  //追加到其他文件

4.编辑模式光标调整

字符间调整

h,j,k,l //左,下,上,右 ,四个键刚好紧挨着

#COMMAND 跳转由#指定的个数的字符

10l //向右10个字符 小写的L

10h //向左

5k //向上几行

6j //向下几行

单词间调整

w:下一个单词的词首

e:当前或后一个单词的词尾

b:当前或前一个单词的词首

#COMMAND 跳转由#指定的个数的单词

行首行尾调整

^:跳转至行首的第一个非空白字符

0:跳转至绝对行首

$:跳转至行尾

行间调整

#G 跳转至#指定的行

1G,gg 第一行 

G:最后一行

句间调整 //小括号

(

)

段间调整 //花括号

{

}

5.翻屏操作

     //翻吧{一瓶},赌半屏

ctrl+f 向文件尾部翻一屏

ctrl+b 向文件首部翻一屏

ctrl+ d/u //向文件尾部/首部翻半屏

enter:按行向后翻

6.编辑命令

        //编辑模式

字符编辑

x:删除光标所在处的字符

#x:删除光标所在处起始的#个字符

xp:交换光标所在处的字符与及其后面的字符位置

替换命令

r替换字符:替换光标所在处的字符

2r:光标所在处的两个字符都替换为输入的字符

删除命令

d:删除,可结合光标跳转字符,实现范围删除;

d$ :光标所在处到行尾

d^:光标所在处到行首

dw:删除当前单词

de:

db:

#d[w|e|b|...] //都可以结合数字使用

dd:删除一整行

3dd :向下删除3行

//删除的最后的东西,会被保存到缓冲区

粘贴命令

(p,put,paste)

P:小写:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下行

如果不是整行,站在当前光标的后面

p:大写:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上行

如果不是整行,站在当前光标的前面

复制命令

复制命令(yank,y)

y复制,类似于d命令

y^,y$,y0

ye,yw,yb

#COMMAND

yy:复制一行

改变命令:(change,C)//和d命令的使用一样

编辑模式-->输入命令,实现删除操作

cc :清空所在行,转为输入模式

cw:清空光标所在单词,转为输入模式

cb,ce,cw

#COMMAND //删除多个

7.可视化模式

v :类似于鼠标托选,字符选定

V大写:选中所在行,整行

结合编辑命令使用:d,c,y

8.撤销操作;undo

u;一步一步撤销

#u:撤销此前的#次操作

ctrl+r //redo

9.重复执行前一个编辑操作

. 重复执行上一个命令

vim自带的练习教程

10.vimturo教程

11.vim末行模式

地址定界

:start_pos[,end_pos]

#:特定的第#行,例如5即第5行

#,# //指定行范围

#,+# //指定行范围,第#行开始向后几行

. ,+# //当前行,往后几行

$ //最后一行

.,$-1 //当前行到倒数最后一行

1,$ //全文

% //全文

/pattern/: 从光标所在处向文件尾部,第一次被指定模式匹配到的行

/first/,$

/pat1/,/pat2/:从光标所在处起始,由第一次pat1匹配到的行,至第一次pat2匹配到的行结束

12.编辑命令

可同编辑命令一起使用,实现编辑操作:

d:删除

y:复制

c:修改

w /PATH/TO/SOMEFILE //将范围内容,保存至指定位置

5r /etc/passwd /从第几行之后读入某文件的内容

13.查找和替换

/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有

s :末行模式的命令

    s/要查找的内容/替换为/修饰符

        要查找的内容可以使用正则表达式:

替换为的内容:不能使用正则表达式,但可以引用

    如果“要查找的内容”,部分在模式中使用了分组符号;可以使用引用

     直接引用查找模式匹配到的文本;&

    修饰符:

        i:查找时忽略大小写

g:全局替换,意味着一行中如果匹配到多次,则均替换

路径需要替换

/etc/sysconfig

\/etc\/sysconfig

分隔符:

/ /

@ @

# #

:%s@\《t\(.*\)\>@T\1@g

//小写t开头的替换为大写T

:%s#\《t\(.*\)#T\1#g

//注意,小括号得用转义符

:%s@\《t\([[:alpha:]]\+\)@T\1er@g

//开头变成大写,后面加上er

:%s@\《t\([[:alpha:]]\+\)@T&er@g

//使用&引用匹配到的所有文本

:%s@^[[:space:]]\+@@

//删除行首空白

14.vim的多文件模式

vim file1 file2 ...

last,next,prev,first

wqall :保存所有文件并退出

wall:保存所有文件

qall:退出所有

多窗口:

-o :水平分割

ctrl + 向上箭头|向下箭头 //切换文件

-O :垂直分割

ctrl + w 向左箭头|向右箭头 //切换文件

单文件多窗口分割查看:

ctrl+w  s/v  //水平和垂直分割,split,vertical

15.定制vim的工作特性

注意:在末行模式下的设定,仅对当前vim进程有效

永久有效:

全局:/etc/vimrc

个人:

1.行号

set nu /set number 显示行号

set nonu //取消显示

2.括号匹配高亮显示

匹配:set showmatch //set sm

括号对应,光标定位左括号,右括号会直接显示

取消:set nosm

3.自动缩进

set ai  //auto indent缩进 

set noai  

4.高亮搜素结果

set hlsearch

set nohlsearch //取消高亮

5.语法高亮

syntax on/off

6.忽略字母大消息

set ic //ignorecase忽略大小写

set noic //取消忽略

16.帮助

:help

:help set //查看帮助文档

:help usr_01.txt //查看帮助信息

练习:

1.复制/etc/grub2.cfg文件到/tmp目录中,删除/tmp/grub2.cfg文件中以空白字符开头的行的行首字符

2.复制/etc/rc.d/init.d/functions/文件到/tmp目录中,用查找替换命令,为/tmp/functions文件的每个以空白字符开头的行的行首加上#

3.为/tmp/grub2.cfg文件的前三行的行首,加上#号

4.将/etc/yum.repos.d/CentOS-Base.repo文件中,所有的enabled=0,替换为enabled=1,所有的gpgcheck=0替换为1

:%s@^[[:space:]]\+@@

:%s@\(^[[:space:]]\)\+[^[:space:]]@#\1@ 

:%s@\(^[[:space:]]\)@#&@  

//() 对应\1,vim可以使用&引用前者

//前面是空白,但是后面不是空白的行

:1,3s@^@#@

:%s@\(enabled\|gpgcheck\)=0@\1=1@

//中间的 | 也要转义

课外作业:

如何设置tab键缩进4个字符 //vim中

vim ~/.vimrc

set nu

set ts=4 //tabstop