1.vim编辑器#

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。 

1.初识神器:vim###

(1).vim的注意事项

编辑文件时
	a.当文件名称存在,那么进入文件直接编辑
	b.当文件名称不存在,vim会在退出保存时自动建立文件
	c.当vim命令后没有跟任何文件名称时,时无法实现":wq"退出保存的那么可以用":wq filename"(给新建文件命名并保存)

(2).当vim异常退出时,系统会建立.file.swp这个缓存文件

	这个文件中保存着没有":wq"动作保存的信息
	当用vim对文件做编辑的时候会提示
		O	##只读打开
		E	##直接忽略.file.swap信息编辑文件
		R	##利用.file.swap进行为保存数据恢复
		D	##删除.file.swap
		Q	##退出
		A	##终止

例如:

2.vim操作###

ps:vim有三种模式
1.命令模式:
		在Linux终端中输入“vim 文件名”就进入了命令模式,查看文件内容,但不能输入文字。
2.编辑模式:
		在命令模式下按i/o/A等就会进入编辑模式,此时就可以写入程式,按Esc可回到命令模式。
3.末行模式:
		在命令模式下按:进入末行模式,左下角会有一个冒号出现,此时可以敲入命令并执行。

下面所有带有:的操作都表示是在行末模式进行的操作! 1.命令模式

命令模式是vim打开文件后默认进入的模式,这个模式中不能插入字符,只能浏览文件内容。但是可以按 : 进入行末模式然后设定vim的工作方式
	:set 指定信息
	:set nu                    显示行数
	:set nonu               不显示行数
	:set cursorline       添加行线展示
	:set mouse=a        添加鼠标选择

**注意:**在vim中直接设定vim的工作方式是临时设定,也就是说当vim关闭,设定失效。如果要永久设定需要编写"/etc/vimrc".这个文件也是vim的配置文件。操作如下:

vim /etc/vimrc
直接在文件末尾插入想要的设置然后保存退出,重新打开vim即可看到效果

插入设置: 设置生效: 2.在命令模式下如何管理字符

按"x":
	删除光标所在字符
按"u":
	undo 恢复
按"ctrl+r":
	redo 撤销恢复
按"y":复制 
	"yw"		##复制一个单词
	"yl"	  	##复制一个字母
	"yy"	 	##复制一整行
	"y5y"    	##复制5行
按"c":剪切
	"cw"		##剪掉一个单词
	"cl"		  ##剪掉一个字母
	"cc"		 ##剪掉一整行
	"c5c"		##剪掉5行

--------> 在命令模式下按“p“粘贴复制或剪切的字符 **注意:**用C做剪切时,会进入插入模式,如果要粘贴需要退出插入模式按<ESC>再按"p"

按"d":删除
	"dw"		##删除一个单词
	"dl"		  ##删除一个字母
	"dd"	 	##删除一整行
	"d5d"		##删除5行

3.vim的可视化操作

(1).可视化模式的基本操作
		在vim中是不能用鼠标选择区域操作的,如果要操作某个区域,需要进入到可视化模式
		在命令模式下 "ctrl + v"  就可以进入到可视模式了
		按"上|下|左|右"移动光标选择区域,按相应操作键就可以对选择区域进行操作

(2).可视化模式下批量添加字符
		1.把光标停留在想要加入字符所在的列的第一行
		2.移动光标选择添加字符所在列
		3."I"进入插入模式
		4.写入要插入的字符
		5.按"ESC"退出插入模式,字符批量添加成功

4.vim的字符替换(进入行末模式)

:%s/原有字符/新字符/g  		#全文替换
:1,5s/原有字符/新字符/g		#替换1到5行的字符
									  g	  #替换出现的所有关键字,如果不加"g"只替换没行出现的第一个

输入字符替换的命令: 成功替换字符: 5.vim总字符的查找及光标的移动(行末模式)

1.字符的查找
:/关键字
n			 ##向下匹配关键字
N			##向上匹配关键子
2.光标的移动
:数字		  ##光标快速移动到指定行
gg			  ##光标移动到文件的第一行
G			   ##光标移动到文件的最后以行

6.vim同时编辑多个文件

进入行末模式:
	sp filename      在当前vim另外打开一个新的文件
进入命令模式:
	ctrl + w   上		  #光标进入上边文件窗口
	ctrl + w   下		  #光标进入下边文件窗口

7.进入编辑模式

"i"			#在光标所在位置插入字符
"I"			#光标所在行的行首插入字符
"o"			#光标所在行的下一行新行插入字符
"O"			#光标所在行的上以行新行插入
"s"			#删除光标所在字符并插入字符
"S"			#删除光标所在行并插入字符
"a"			#光标所在字符的下一个字符插入
"A"			#光标所在行的行尾插入字符

8.退出vim

:q		   #当vim进入文件没有对文件内容做任何操作可以按"q"退出
:q!    	  #当vim进入文件对文件内容有操作但不想保存退出
:wq		#正常保存退出
:wq!		#强行保存退出,只针对与root用户或文件所有人生效

一张图了解vim操作!##

2.文件输入输出的管理

1.输入输出的定义

1.输入
	就是我们的键盘,鼠标和我们用这些硬件在系统只哦个录入的字符
2.输入
	就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符
	输入会有两种出现:
			编号1为正确输出
			编号2为错误输出
	默认着两种输出都会被系统定向到字符设备中

2.如何管理输入

1.非交互式多行录入
	编辑文件: vim test.sh
	写入内容:passwd
	保存并退出后执行命令:sh test.sh

虽然这样能正确运行,但不是多行录入 下面举例说明多行录入 新建一个example.sh结尾文件后,在文件中编辑如下内容: passwd <<END redhat redhat END 命令行执行sh example.sh 这样可以自动运行避免交互(以上操作将用户密码改为redhat) 还是实现了多行录入,成功x修改密码。

2.如何管理输出###

重定向:重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作。
		>		    重定向正确输出(将正确的输出 输出到指定地方,错误的输出则还是输出到默认地方)
		2>	 	 重定向错误输出(将错误的输出 输出到指定地方,错误的输出则还是输出到默认地方)
		&>	 	重定向所有输出(将所有的输出都 输出到指定地方)
		2>&1	 把错误输出的编号由2转换为1(将错误的输出变成正确的输出)

举几个栗子

find /etc/ -name passwd  > file.out        -----------> 查找/etc目录下所有名字叫passwd的文件并重定向使其将正确的查找结果输出到file.out中
find /etc/ -name passwd 2> file.out       -----------> 查找/etc目录下所有名字叫passwd的文件并重定向使其将错误的找结果输出到file.out中
find /etc/ -name passwd &> file.all        -----------> 查找/etc目录下所有名字叫passwd的文件并重定向使其将所有查找结果输出到file.all中

"注意:重定向是会覆盖原文件内容的!!!" 向文件追加内容:

保持原文件内容不变的情况下把输出追加到文件之后
	>>		   追加正确输出
	2>>	 	追加错误输出
	&>>		追加所有输出

即一个>符号是覆盖,2个>符号是追加。 举几个栗子:

find /etc/ -name passwd >> westos
find /etc -name passwd 2>> westos
find /etc -name passwd &>> westos

最后文件内会有三次重定向的所有输出内容

3.管道###

把上一程序(命令)的输出变成下一个程序的输入
(管道是用来组合多条命令的使用的)
栗子:
		ls /bin | wc -l      -----------> 查询/bin下所有文件然后把结果作为输入去统计这些文件的个数

注意:通过管道后输出会变成输入,那么是无法保存在文件中的.。另外,系统中错误的输出是无法通过管道的。

tee:复制输出到指定位置
举个栗子:
		ls /bin | tee file | wc -l
执行命令:cat file		可以看到file中已经保存了ls /bin的输出

grep:全局搜索表达式

	从结果中过滤出包含关键字的输出