VIm学习笔记

               VIm学习笔记

VIM(interface improvrd  VI)VI(visual interface)的增强版,是处理ASCII码的模式化的文本编辑器,功能很多,对于我们初学者来说,只需要先学会基本的操作就可以了,好了废话不多说,直接进入主题。


VI的三种模式:命令行模式(command mode),为刚进入VI的默认模式,此在此模式中,向里面输入的任何数据VI都会把它理解为命令----表现为扬声器在不停的滴滴作响,也就是说在命令行模式是不能输入任何数据的,只能输入命令。
想要对文件进行编辑的话要转换为输入输入模式(input mode)才能进行输入,按下小写字母a(append)键就进入了输入模式,左下角会有‘insert’提示信息,可以在当前光标停留处的下一个字符对文本附加编辑。

对文本进行编辑完了之需要对文本进行保存等操作,此时按键盘左上角的(esc)首先进入命令模式,然后再按冒号(:)就进入了VI的第三种模式:末行模式(last mode),整个屏幕的最下面那一行,在此模式中可以对文本进行编辑,可以显示行号(set =num/nonum) 、显示脚本颜色(set syntax =on/off)等,所有在编辑模式下的操作都能在末行模式下操作;而且末行模式还能完成一些编辑模式下不能完成的功能和特性;如使用正则表达式对文本进行查找、替换等。
VI三种模式简图


一、字符间跳转:

h 左边

i右边

j

k

支持数字加跳转字符使用,如5h表示向左边跳转5个字符

二、单词间跳转:

w跳至后一个单词的词首;

e跳至当前和下一个单词词尾;

b跳至当前和下一个单词词首;

三、句子间跳转:

)下一句

(前一句

段落间跳转:

}下一段

{前一段

四、行间跳转:

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

$跳转到行尾

0跳转到绝对行首

1Ggg跳转至文件首部的第一个字符

G:最后一行

NG:某一行

五、关闭文件:

在末行模式下:

w保存

q退出

:!强制

wq保存退出

q!强制退出

x保存退出=wq

wall:所有的都保存

qall:所有的都不保存

w!强制保存

wqall:所有的都保存退出

在编辑模式下:

输入大写的ZZ也可以保存退出

六、打开文件:

Vi+选项+文件

Vi+数字-----表示打开文件之后光标停留在数字行

Vi打开多个文件的方法及文件间切换:

next 下一个

Last最后一个

First第一个

Prev前一个

-o水平分割

-O垂直分割

按住ctrl别松开按w,,松开ctrlw,,再按上下键箭头即可切换

q退出光标所在文件,qall退出所有的,都可以和all结合使用。

七、编辑命令:

x删除光标所在处右边单个字符

nx删除光标所在处右边n个字符

八、d删除命令

通常和跳转的单词一起结合使用,,只要能跳转就能删,能跳到哪儿就能删到哪儿

dw

db

de

d)

d(

dd删除光标所在行

ndd删除光标所在行及向下n

d^删除光标所在出一直到行首

d$删除光标所在处一直到行尾

在末行模式下使用d命令

末行模式地址定界:

起始地址,结束地址

1,7d删除从第一行到第七行

%表示全文

1$(不但可以表示行尾还可以表示最后一行,定界用的)在定界时还支持相对表达法

1+6从第一行开始往下再走六行

1$-2从第一行到倒数第三行

.点表示当前光标所在行

.+3

,.+3d除了这一行之外再加三行总共是四行

%d全文删除

注:在VI编辑过程中,如果对之前的操作没有保存,所有的操作都可以撤销到最原始的状,态,默认会保存最近50次的操作,u命令可逐一撤销此前的编辑操作。

撤销此前的撤销!Ctrl+r

粘贴:paste,put,p

删除的是整行:

p在光标所在行的下方粘贴

P在光标所在行的上方粘贴

删除的不是整行:

p在当前光标所在字符的后方粘贴

P在当前光标所在字符处的前方粘贴

复制:y--yank

      yy复制一行

nyy复制n

y$复制到行首

y^复制到行首

复制的是整行:

P在当前光标所在行的下方粘贴

P在当前光标所在行的上方粘贴

复制的不是整行:

P在当前光标所在字符处的后方粘贴

P在当前光标所在字符处的前方粘贴

Vimtutor--Vi自带的练习VI文本操作

Vi练习案例一、写一个脚本添加10个用户,密码同用户名相同,并统计这10个用户的ID号之和

1 #author:ice
 2 #date:2013-07-17
 3 #weather:just fine
 4 #!/bin/bash
 5 for U in {1..10};
 6 do
 7 useradd user$U;
 8 echo user$U | passwd --stdin user$U
 9 done


#chomod +x adduser.sh#赋权
#bash -n assuser.sh#检查语法错误
#./adduser.sh#执行脚本
#tail /etc/passwd#查看执行结果

九、翻屏操作:

Ctrl+f向文件尾部翻一屏

Ctrl+b向文件首部翻一屏

Enterj键逐行向下翻

K键向上逐行跳转

Ctrl+d向文件尾部翻半屏

Ctrl+u向文件首部翻半屏

搜索:

/关键字从当前光标所在处向尾部查找

?关键字从当前光标所在处向首部查找

n下一个跟查找方向相同的方向

N前一个跟查找命令相反的方向

VI编辑器中,可以使用模式正则表达式所构成的匹配标准

如查找以d开头n结尾中间跟了任意两个字母

#/\<d[]:alpha:]]\{2\}n\>

补充:正则表达式在不同的语言中几乎都支持,perlpythonJavaphp等,但是他们所支持的元字符是各不相同的。

grep正则表达式所兼容的元字符是兼容POSIX的,其用法之独特,功能之强大,实乃是运维人员的必备利器。

十、基本正则表达式:

1)指定匹配字符类:

1).______________点代表任意单个字符
2)[  ]————中括号指定范围内的任意单个字符
3)[^ ]指定范围外的任意单个字符使用脱字符取反
指定匹配次数:
1)*星号匹配其前的字符任意次
2)\?问号匹配其前的字符零次或一次
3)\{m,n\}匹配其前的字符指定次数则使用花括号,至少m次之多n次
4)\{m\}精确匹配前面出现的字符m次

2)匹配位置锚定:

^----------锚定行首使用脱字符

$-----------锚定行尾使用美元符号

\<锚定词首使用f反斜线加左尖括号

\>锚定词尾使用反斜线加右尖括号

\(\)小括号是用来分组的,内容都写在小括号中间,分组以后可以在后面进行引用,\1,\2

1表示第一个左括号以及与之匹配的右括号括起来的内容;2表示第二个左括号以及与之匹配的第二个右括号匹配起来的内容。以此类推。。。。。。

在后方引用前面匹配到的内容。

扩展的正则表达式元字符:

+一次以上至少一次

{m.n}至少m次,之多n

|或者    a|b|获得的是左侧的所有内容

也支持分组()不需要加反斜线了

十一、编辑命令:

c:删除和编辑一些内容并转换至输入模式
cc删除一行并转换至输入模式
Ncc删除n行并转换至输入模式
c$删除从当前光标所在位置到行尾并转换至输入模式
c^删除删除当前光标所在位置到行首并转换至输入模式
c0删除当前光标所在字符到行首并转换至输入模式

十二、VIM可视化模式:


Visual模式,
v------选中光标划过的字符
V-------选中光标划过的行,整行选取
Esc,esc回到编辑模式
复制大篇文档,光标所过之处按下y键就复制了

十二、同一文档窗口分割:

Ctrl+w,s水平分割
Ctrl+w,v垂直分割
Ctrl+箭头,分割窗口之间跳转

十三、窗口属性定义:

显示行号:在末行模式下设定数字,所有的功能想关闭,只需在前面加no即可

Set number,set nu
Set number,set nonu
只对当前窗口生效
自动缩进:
Set ai ----auto indent自动缩进,set ai

十四、不区分字符大小写

Set igonrecase ,set ic
Set noic

十五、获取帮助:

末行模式下直接输入Set

十六、显示匹配的括号:

Set showmatch ,set sm
Set nosm

十七、语法着色:

Syntax on
Syntax off

十八、搜索结果高亮显示:

Set hlsearch
Set nohlsearch


十九、VIM的配置文件

全局:/etc/vomrc
个人:~/.vimrc不存在,需自己创建

案例:

# vim /etc/vimrc

添加一行

#Se nu------------显示行号

wq保存退出即可,下次使用VI编辑就显示行号了,对系统中所有用户有效

注:只有管理员root才有权限修改全局配置。

二十、查找替换:

:s ///---------->s和三个斜线后面跟上修饰符组成;


两个斜线之间的查找模式后两斜线之间是替换成的内容,三个斜线表示分隔符,用来分割那一部分是查找模式,哪一部分是替换成的内容。

格式:------>地址定界s/查找模式/替换成的内容/gigi是修饰符,修饰什么呢?默认情况下查找命令在一行中查找到被匹配过的字符串以后只替换第一个,如果一行中有多个都能匹配到,它只能替换第一个;如果一行当中出现N个都给替换则使用g--global表示全都替换。I表示不区分大小写

注:查找的模式可以使用正则表达式,替换后的内容不能使用模式

%=1,$-------->表示全文

示例如下:


#1,$s/good/i love linux so much/g


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章