Linux编辑神器——vim工具的使用

vim的模式

vim的三种模式

  • 命令模式

  • 插入模式

  • 退出模式

命令模式

1)调整vim的工作方式

复制代码
:set nu				#设置行号
:set nonu			#取消行号
:set mouse=a		#添加鼠标选择
:set cursorline		#设置行线

!NOTE

以上设置退出后再使用vim打开都会失效,原理是打开vim时会打开进程运行在内存中,当退出后就会释放掉

想要永久保存vim的工作方式需要编辑vim的配置文件/etc/vimrc

2)字符的搜索

复制代码
/关键字			#搜索到了会显示高亮关键字
n向下匹配
N向上匹配
:noh			  #取消高亮显示的关键字

3)字符的管理

复制代码
y				#复制
	yl			#复制1个字母
	y3y			#复制3个字母
	yw			#复制1个单词
	y3w			#复制3个单词
	yy			#复制1行
	y3y			#复制3行
	
d				#删除
	dl			#删除1个字母
	d3l			#删除3个字母
	dw			#删除1个单词
	d3w			#删除3个单词
	dd			#删除1行
	d3d			#删除3行  
	
c				#剪切
	cl			#剪切1个字母
	c3l			#剪切3个字母
	cw			#剪切1个单词
	c3w			#剪切3个单词
	cc			#剪切1行
	c3c			#剪切3行
#在剪切后vim会进入插入模式,如果要粘贴需要按【esc】退出插入模式然后按p粘贴

p		#粘贴
u		#撤回
ctrl+r	#恢复撤销

4)可视化模式

复制代码
#进入可视化模式
ctrl + v 

#在此模式可以通过上下左右键来选择区域按下对应键来实现对应操作
#y为复制,d为删除,c为剪切

#批量添加字符
1.ctrl + v 选中要加入字符所在的列
2.按大写I插入
3.输入要插入的字符
4.按esc

5)字符的替换

复制代码
:%s/sbin/fjwwwwwwwww/g		#替换全文的sbin为fjwwwwwwwww
:%s/:/@/g					#替换全文的 : 为@
:1,5s/:/@/g					#替换1-5行的 : 为@
:/adm/,/halt/s/:/@/g		#替换adm到halt之前的 : 为@
其中:
%s标示为所有的行
g标示为所有的列

6)vim的分屏功能

复制代码
#一个文件要保存为多个文件
ctrl+w s				#上下分屏
ctrl+w v				#左右分屏
ctrl+w c				#关闭光标所在屏幕 
ctrl+w 上下左右			 #光标移动到指定屏幕
:wq /root/Desktop/file2 	#保存到指定路径
#一次性编辑多个文件
:sp file2				#同时编辑当前文件和file2

一次性编辑多个文件也可以使用

bash 复制代码
vim -o file1 file2 			#上下模式打开两个文件
							#<ctrl>+<w> <上|下>来转换控制窗口

7)命令模式下光标的移动

复制代码
gg			#光标移动到文件的第一行
G 			#光标移动到文件的最后
:数字		   #移动到指 定的行数

插入模式

1)插入模式下光标的移动

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

退出模式

复制代码
:q			#退出,文件内容未被修改时使用
:wq			#退出保存
:q!			#强制退出不保存,改变文件后不想保存时使用
:wq!		#强制退出保存 在对只读文件编写时使用,所编辑的文件要为当前用户的或者root用户的

处理vim的异常退出

当vim编写文件时在未保存更改内容被强制关闭,那么vim进入异常模式,当再次用vim打开文件后文件 出现异常

处理方法如下:

复制代码
#(O) 只读打开文件
#(E) 继续编辑
#(R) 恢复未保存内容编辑
#(D) 删除.swp文件进入编辑
#(Q) 退出当前文件编辑
#(A) 退出vim程序
相关推荐
小北方城市网5 分钟前
第 6 课:Vue 3 工程化与项目部署实战 —— 从本地开发到线上发布
大数据·运维·前端·ai
旖旎夜光1 小时前
Linux(3)(下)
linux·学习
小鹿学程序1 小时前
任务一-1.子任务一:基础环境准备
linux·bigdata
Nautiluss1 小时前
一起玩XVF3800麦克风阵列(十)
linux·人工智能·python·音频·语音识别·实时音视频·dsp开发
悲喜自渡7211 小时前
Python 编程(gem5 )
java·linux·开发语言
不怕犯错,就怕不做2 小时前
RK3562 +RK817的dts布尔属性解析(uboot基础知识)
linux·驱动开发·嵌入式硬件
记得记得就1512 小时前
docker作业
运维·docker·容器
运维行者_2 小时前
OPM 与传统管理工具的区别,在网络修复与自动化运维方面的优势在哪里?
运维·服务器·开发语言·网络·自动化·php·ssl
HaSaKing_7213 小时前
EMQX 多机集群部署完整实践(Docker + 社区版 5.8.8)
运维·docker·容器·emqx
广州灵眸科技有限公司3 小时前
瑞芯微(EASY EAI)RV1126B 音频输入
linux·开发语言·网络·音视频