vim编辑器

vim编辑器

vi(visual interface)
vim(vi improved)
gvim(graph vim)

vim

	vim - Vi IMproved, a programmers text editor
	vim [arguments] [file ..]       编辑指定文件(s)
	vim [arguments] -               从标准输入读取text内容
	vim [arguments] -t tag          编辑tag已被定义的文件
	vim [arguments] -q [errorfile]  edit file with first error
	Arguments:
		--			仅跟随此后的文件名
		-v			Vi 模式 (like "vi")
		-e			Ex 模式 (like "ex")
		-E			增强版的 Ex 模式
		-s			沉默模式 (only for "ex")
		-d			微分模式 (like "vimdiff")
		-y			简单模式 (like "evim", modeless)
		-R			只读模式 (like "view")
		-Z			受限模式 (like "rvim")
		-m			不被允许修正
		-M			在text中的修正不被允许
		-b			二进制模式
		-l			模糊模式
		-C			兼容 Vi: 'compatible'
		-N			不充分兼容 Vi : 'nocompatible'
		-V[N][fname]		详情 [level N] [log messages to fname]
		-D			调试模式
		-n			不使用交换分区文件,仅使用内存
		-r			列出交换分区文件并退出
		-r (with file name)	恢复毁坏的会话
		-L			同 -r
		-A			以阿拉伯语模式开始
		-H			以希伯来语模式开始
		-F			以波斯语模式开始
		-T <terminal>	           设置终端类型为 <terminal>
		-u <vimrc>		使用<vimrc> 代替任何的 .vimrc
		--noplugin		不加载插件脚本
		-p[N]		打开N个标签页(default: one for each file)
		-o[N]		打开N个窗口(default: one for each file)
		-O[N]		和-o 类似,但垂直划分
		+			以文件最后开始
		+<lnum>		以指定行开始
		--cmd <command>	在加载任何vimrc文件前,执行命令
		-c <command>		在加载第一个文件后执行命令
		-S <session>		加载第一个文件后的源文件会话
		-s <scriptin>	          从文件<scriptin>中读取正常模式命令
		-w <scriptout>	附加所有类型命令到文件 <scriptout>
		-W <scriptout>	写所有类型命令到文件<scriptout>
		-x			编辑加密的文件
		--startuptime <file>	写开始时间信息到文件
		-i <viminfo>		使用 <viminfo> 取代.viminfo

vim打开文件

	+#:  	打开文件后 ,让光标处于第# 行的 行首,+ 默认行尾
	+/ PATTERN :	打开文件后,直接让光标处于第一个被PATTERN 匹配到的行的行首
	–b file  	二进制方式打开文件
	–d file1 file2… 	比较多个文件
	-m file 	只读打开文件
	ex file 或 vim –e 	直接进入ex 模式
	如果该文件存在,文件被打开并显示内容
	如果该文件不存在,当编辑后第一次存盘时创建它

vim 的三种主要模式:

	命令(Normal) 模式: 	默认模式,移动光标,剪切/ 粘贴文本
	插入(Insert):	编辑模式,修改文本
	扩展命令(extended command ) 模式:	保存,退出等
	Esc键退出当前模式
	Esc键总是返回到命令模式

vim的模式转换

    图中:
		INSERT代表进行插入模式
		ALL代表进入命令模式
		VISUAL代表进行可视化模式
		:代表进行扩展命令模式
	进入命令模式(ALL)的方法
		vim(vi)进入文本后就进入了命令模式
		按ESC键退出其他模式同样就进入了命令模式
	进入插入模式的方法
		i: 	insert,  在光标所在处输入
		I:	在当前光标所在行的行首 输入
		a: 	append,  在光标所在处后面输入
		A :	在当前光标所在行的行尾 输入
		o:  	在当前光标所在行的下方打开一个新行
		O :	在当前光标所在行的上方打开一个新行
	进入可视化模式(VISUAL)的方法
		按v键,进入面向字符的模式,提示为VISUAL,可进行字符级别的选择
		按V键,进入面向行的模式,提示为VISUAL LINE,可进行到行级别的选择
		按Ctrl + v|V,进入面向块的模式,提示为VISUAL BLOCK,可进行块级别的选择
		进入可视化模式后,突出显示的文字可被删除d,复制y,过滤,搜索,替换等

扩展模式进行的操作

	按“: ”进入扩展模式
	创建一个命令提示符: ,处于底部的屏幕左侧
	命令:
		w 	写(存)磁盘文件
		wq 	写入并退出
		x 	写入并退出
		q  	退出
		q! 	不存盘退出,即使更改都将丢失
		r filename 	读文件内容到当前文件中
		w filename 	将当前文件内容写入另一个文件
		!command 	执行命令
		r!command 	读入 命令的输出
	地址定界:
		:start_pos,end_pos
		#  	具体第#行,例如2表示第2行
		#,#  	从左侧#表示起始行,到右侧#表示结尾行
		#,+# 	从左侧#表示的起始行,加上右侧#表示的行数
		2,+3 	表示2到5行行
		. 	当前行
		$ 	最后一行
		.,$-1  	当前行到倒数第二行
		% 	全文,  相当于1,$
		/pat1/,/pat2/	从第一次被pat1模式匹配到的行开始,一直到第一次被pat2 匹配到的行结束
		#,/pat/	
		/pat/,$	
		使用方式:地址定界后再加个编辑命令
			d	删除
			y	复制
			w file:  	将范围内的行另存至指定文件中
			r file:	在指定位置插入指定文件中的所有内容
	查找字符串:
		/PATTERN :	从当前光标所在处向文件尾部查找
		?PATTERN :	从当前光标所在处向文件首部查找
		n :	与命令同方向
		N :	与命令反方向
	查找并替换:
		满足正则表达式
		s:  在扩展模式下完成查找替换操作
			格式:<范围指定>s/ 要查找的内容/ 替换为的内容/ 修饰符
				<范围指定>:指定从那个到那个进行查找替换。
					N1,N2:表示从第N1行到N2行。
					%:表示全部查找替换
				要查找的内容:可使用模式
				替换为的内容:不能使用模式,但可以使用1, 2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
				修饰符:
					i:  忽略大小写
					g: 对全局查找,默认情况下,每一行只替换匹配到的第一个
					c: 每次替换前询问
			分隔符“/”可以替换为其他字符,如“@”,“#”。
				<范围指定>s@要查找的内容@替换为的内容@修饰符
				<范围指定>s#要查找的内容#替换为的内容#修饰符
		示例:
			s@/etc@/var@g
			s#/boot#/#i
			%s#/boot#/#i

命令模式进行的命令

	ZZ:  	保存退出
	ZQ:	不保存退出
	字符间跳转:
		h: 	左  
		l: 	右 
		j: 	下  
		k: 	上 
		#COMMAND :	跳转由#指定的个数的字符
	单词间跳转:
		w :	下一个单词的词首
		e :	当前或下一单词的词尾
		b :	当前或前一个单词的词首
		#COMMAND :	由# 指定次跳转的单词数
	当前页跳转:
		H:	页首 
		M:	页中间行
		L: 	页底
	行首行尾跳转:
		^:  	跳转至行首的第一个非空白字符
		0:  	跳转至行首
		$:  	跳转至行尾
	行间移动:
		#G:	跳转至由#指定行
		G :	最后一行
		1G, gg:  	第一行
	句间移动:
		) :	下一句 
		( :	上一句
	段落间移动:
		}: 	下一段 
		{ :	上一段
	翻屏操作
		Ctrl+f:  	向文件尾部翻一屏
		Ctrl+b:  	向文件首部翻一屏
		Ctrl+d:  	向文件尾部翻半屏
		Ctrl+u :	向文件首部翻半屏
	字符编辑:
		x:  	删除光标处的字符
		#x:  	删除光标处起始的#个字符
		xp:  	交换光标所在处的字符及其后面字符的位置
		~: 	转换大小写
		J: 	删除当前行后的换行符
	替换命令(r, replace)
		r:  	替换光标所在处的字符
		R: 	切换成REPLACE 模式
	删除命令:
		d:  	删除命令,可结合光标跳转字符,实现范围删除
		d$: 	删除到行尾
		d^: 	删除到非空行首
		d0: 	删除到行首
		dd: 	删除光标所在的行
		#dd:	多行删除
		D:	从当前光标位置一直删除到行尾,留空行==d$
		#COMMAND	#次操作上述操作
	复制命令(y, yank): :
		y:	复制
		y$:	复制当前位置到行尾
		y0:	复制当前位置到行头
		y^:	复制当前位置到行首
		yy :	复制行
		#yy:  	复制多行
		Y:  	复制整行
		#COMMAND	#次上述操作
	粘贴命令(p, paste): :
		p:	缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
	改变命令(c, change)
		c:  	修改后切换成插入模式,命令模式 -->  插入模式
		c$	
		c^	
		c0	
		cc :	删除当前行并输入新内容
		#cc:	
		C :	删除当前光标到行尾,并切换成插入模式
		#COMMAND	#次上述操作
	技巧操作
		<start position><command><end position>
		Command:
			y  复制、d  删除、gU  变大写、gu  变小写
			ye  从当前位置拷贝到本单词的最后一个字符
			示例
				0y$  命令意味着:
				0 →  先到行头
				y →  从这里开始拷贝
				$ →  拷贝到本行最后一个字符
	撤消之前的更改
		u 	撤销最近的更改
		#u 	撤销之前多次更改
		U  	撤消光标落在这行后所有此行的更改
		Ctrl + r 	重做最后的“撤消”更改
		.  	重复前一个操作
		n. 	重复前一个操作n次

编辑二进制文件

	以二进制方式打开文件
		vim –b binaryfile
	扩展命令模式下,利用xxd 命令转换为可读的十六进制
		:%!xxd
	扩展命令模式下,利用xxd 命令转换回二进制
		:%!xxd –r
	保存退出:wq

定制vim 的工作特性

	配置文件:
		进行永久有效的修改
		全局:/etc/vimrc
		个人:~/.vimrc
	仅对当前vim 进程有效设置
		“:”,进入扩展模式进行设置
		(1)  行号设置
			显示:set number,  简写为set nu
			取消显示:set nonumber,  简写为set nonu
		(2)  括号成对匹配设置
			匹配:set showmatch,  简写为set sm
			取消:set nosm
		(3)  自动缩进设置
			启用:set ai
			禁用:set noai
		(4)  高亮搜索设置
			启用:set hlsearch
			禁用:set nohlsearch
		(5)  语法高亮设置
			启用:syntax on
			禁用:syntax off
		(6)  忽略字符的大小写的设置
			启用:set ic
			不忽略:set noic
		(7)  文件格式设置
			启用windows 格式:set fileformat=dos
			启用unix 格式:set fileformat=unix
		(8)  设置文本宽度
			:set textwidth=65 (vim only)
			:set wrapmargin=15
			:set 
			:set all

vim高级

	多文件模式
		vim FILE1 FILE2 FILE3 ...
		文件选择:
			:next  	下一个
			:prev  	前一个
			:first  	第一个
			:last  	最后一个
			:wall  	保存所有
			:qall  	退出所有
			:wqall	保存退出所有
	多个“窗口”模式
		多文件窗口分割:
			vim -o|-O FILE1 FILE2 ...
			-o	水平分割
			-O	垂直分割
			在窗口间切换	Ctrl+w(且按上下左右键)
		单文件窗口分割:
			Ctrl+w,s:	split, 水平分割
			Ctrl+w,v	vertical,  垂直分割
			ctrl+w,q 	取消相邻窗口
			ctrl+w,o	取消全部窗口
			:wqall 	退出
	vim寄存器
		vim(vi)有26 个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享
		寄存器名称a ,b,…,z
		格式:"字符
			3"tyy  表示复制3 行到t 寄存器中
			"tp 表示将t寄存器内容粘贴
			未指定时将使用无命名寄存器
		有10 个数字寄存器,用0 ,1 ,… ,9 表示,0存放最近复制内容
			1 存放最近删除内容,当新的文本变更和删除时,1 转存到2,2 转存到3,以此类推,数字寄存器不能在不同会话间共享

帮助

	vim(vi)内置帮助
		:help
		:help topic
		按q退出帮助
	vimtutor命令可以进入练习模式
原文地址:https://www.cnblogs.com/shenxm/p/8378083.html