Vi和Vim常用指令

摘要

  本文主要介绍Vi的常用操作命令,以及Vim的一些特有操作命令。


提示:以下是本篇文章正文内容,下面命令及案例可供参考

一、Vi的基本指令

Vi不同模式切换

1. 命令模式

1.1 文件操作

vi file			新建或打开一个file文件
vi /[str] file	在第一次出现str代表的文本的位置打开file文件
rm file			删除文件
mv file /path/	移动file到path路径下
mv file newfile	重命名文件名file为newfile
Ctrl + Z		文件挂起
fg id			恢复后台执行的任务	id: Ctrl +Z 后出现的任务序号(非进程号),或使用 :jobs 查看当前后台执行的任务的序号;

1.2 光标操作

1、键盘“上、下、左、右”方向键;
2、键盘“0、$、H、M、L、K、J”
	0:	移动到一行的开头;
	$:	移动到一行的结尾;
	H:	将光标移动到home位置;
	M:	将光标移动到屏幕中间那一行;
	L:	将光标移动到末行结尾;
	K:	上移一行;
	J:	下移一行。
3、Ctrl + ?
	Ctrl + F	往前滚动一整屏
	Ctrl + B	往下滚动一整屏
	Ctrl + U	往前滚动半屏
	Ctrl + D	往下滚动半屏		

1.3 内容编辑

	grep -n [str] file	显示file文件中包含str代表的字符串所在行及行号
	G			跳转到第一行
	gg			跳转到最后一行
	[num]G		跳转到第num行	例如:5G 光标跳转到第5行的开头

	/[str]		往前搜索str代表的文本	
	?[str]		往后搜索str代表的文本
	
	yy			复制当前一行
	[num]yy		复制以光标为起始num行内容
	p			粘贴在光标处的下一行
	P			粘贴到光标处的上一行
	[num]j => p 粘贴在光标之下num行位置处  例如::5yy => 3j => p	复制从光标起5行的内容,粘贴到光标之下3行的位置	

	[num]i => ?插入num个?代表的文本		例如:5i => *	插入5个*		

2. 插入模式(按ESC返回命令模式)

2.1 插入、删除及撤销

:i				插入操作
:a				在光标位置附加内容
:A				在一行的最后附加内容
:o				在光标下方新建一行
:D				删除或剪切光标及之后的本行内容
:dd				删除或剪切光标所在的一行内容
:[num]dd 		删除或剪切从光标处起num行的内容
:de				删除或剪切单词到结尾,不包含单词后的空格
:dw				删除或剪切单词到结尾,不包含单词后的标点
:dW				删除或剪切单词到结尾,包含单词后的空格及标点
:x				删除或剪切光标所在字符
:[num]x			删除或剪切从光标起num个字符,例如:5x
:p				放置光标;与剪切一起用时,相当于粘贴
:o				在光标的下一行打开新一行
:O				在光标的上一行打开新行
:u				撤销上一个操作
:U				将一整行恢复到原来的状态
:.				重复上一个操作

2.2 更改

:r[char]		更改光标处的字符(执行后,不使用ESC)	char:更改后的字符,例如:ra	将光标处的字符更改为a
:cw				更改光标处的单词(从光标处到此单词结尾)
:c$				更改光标处到本行结尾的内容
:c0				更改光标处到本行开头的内容
:s[char]		更改光标处的字符	例如:s5
:[num]s[str]	更改从光标起num个字符,更改为str代表的文本	例如:5shello
:[num]S[str]	更改从光标起num行内容,更改为str代表的num行文本	例如:5S?????

2.3 替换

:[num1],[num2] s /old/new/g		将第num1行到第num2行的每一个old替换成new	例如::50,100 s /a/r/g 将第50行到第100行的a全都替换成r
:/[str1] => :cw[str2] => ESC => [n] =>[.] =>[n] =>[.] => .......	查找str1代表的文本,更改str1代表的文本为str2代表的文本,ESC切换到命令模式,n:重复搜索	. :重复上一个编辑命令

3. 末行模式

3.1 退出、保存

:q				退出,不保存
:q!				强制退出,不保存
:wq				退出,保存
:wq! 			强制退出,保存
:w				保存
:w newfile		另存为newfile(原文件仍存在)

3.2 跳转到特定行

:set nu			显示行号
:set nonu		取消显示行号
:[nu]G			跳转到特定行	例如:5G

3.3 ex指令

d		删除
:[num1],[num2] d			从删除第num1行到第num2行删除	例如:	:5,17 d 删除第5行到第7行的内容
m		移动
:[num1],[num2] m [num3]		将第num1行到第num2行内容移动到第num3行	例如: :5,17 m 25 将第5行到第17行的内容移动到第25行后
co		复制
:[num1],[num2] co [num3]	将第num1行到第num2行内容复制到第num3行之后	例如: :5,17 m 25 将第5行到第17行的内容复制到第25行之后

:/[str]/=					显示第一次出现字符串的行号	str: 代表查找的内容
:=							显示文件总行号
:.=							显示当前光标所在的行号

3.4 Unix命令

使用Vi编辑器时,可以显示或读取任何Unix命令所产生的结果。感叹号(!)会告诉编辑器创建一个shell,并将后续文本视为Unix命令,即 :![command]	command:代表指令
:!date			显示当前的日期与时间(按Enter回到原来文件中的位置继续编辑)
:!ls			显示与当前文件同一位置下的所有文件名

:sh				创建一个shell(下达多个Unix命令,中途不返回vi,直到按Ctrl +D)	

二、Vim的基本使用

1. Vim特有的操作

1.1 打开、比较、撤销

vim file			新建或打开file文件
vim -o file1 file2	打开两个文件,两个文件各占编辑窗口一半
vim -d file1 file2	比较file1文件和file2文件的差异
Ctrl + r			重做上一次撤销的操作

vim -b file			以二进制格式打开file文件(推荐使用vim打开二进制文件)
:%!xxd				将二进制内容转换为十六进制(想要修改二进制文件内容,需要将文件修改为十六进制以后再进行修改)
:%!xxd -r			将当前文本转换回文本格式
:wq					保存并退出

1.2 分割窗口

:sp					将窗口水平分割成两半,均显示相同缓冲区内容(即 两个窗口浏览相同文件内容)
:vsp				将窗口竖直分割成两半,均显示相同缓冲区内容(即 两个窗口浏览相同文件内容)
:Ctrl + w			跳转不同窗口
:only				保留当前窗口,关闭其他窗口
:close				关闭当前窗口,若当前窗口为最后一个,则不会关闭
:quite				关闭当前窗口,若当前窗口为最后一个,则关闭窗口,退出vim

1.3 其他

:syntax enable		打开语法高亮(如果未变化,再打开语法设置 :syntax on 即可)	

总结

  本文主要介绍Vi的常用操作命令,以及Vim的一些特有操作命令;Vim兼容Vi的常用操作命令;不定期更新和补充。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值