zoukankan      html  css  js  c++  java
  • 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命令可以进入练习模式
    
  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/shenxm/p/8378083.html
Copyright © 2011-2022 走看看