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程序
相关推荐
Harvy_没救了1 小时前
【网络部署】 Win11 + VMware CentOS8 + Nginx 文件共享服务 Wiki
运维·网络·nginx
春风有信1 小时前
【2026.05.01】Windows10安装Docker Desktop 4.71.0.0步骤及问题解决
运维·docker·容器
嵌入式×边缘AI:打怪升级日志1 小时前
100ASK-T113 Pro 开发板 Bootloader 完全开发指南
linux·ubuntu·bootloader
2401_873479402 小时前
断网时如何实时判断IP归属?嵌入本地离线库,保障风控不中断
运维·服务器·网络
守城小轩2 小时前
基于Chrome140的Yahoo自动化(关键词浏览)——需求分析&环境搭建(一)
运维·自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
charlie1145141912 小时前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c
handler013 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
zhouwy1133 小时前
Linux进程与线程编程详解
linux·c++
我星期八休息3 小时前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表
切糕师学AI3 小时前
深入解析 Zsh 与 Oh-My-Zsh:打造高效现代化终端
linux·终端·zsh