教程——vi和vim编辑器使用
教程——vi和vim编辑器使用
zhangzhangvi和vim编辑器使用教程
前言:
- 在很多时候
VSCode可以替代vi这种命令行编辑器,但是在服务器的环境上,一般没有图形界面,也没有VSCode这种图形化编辑器,只能通过命令行来操作 - 而vi编辑器就是这种场景下最常用的编辑器
- 在服务器上出了问题,需要查看某个日志文件来排查问题的原因,或者需要定位某一个错误的位置,找到错误之后可能还需要修改某个配置文件等等(等把日志文件下载到本地,用
VSCode查看和编辑,花费时间长)
vi 和 vim 是 Linux/Unix 系统中最常用的文本编辑器,vim 是 vi 的增强版(支持语法高亮、代码补全等),操作逻辑基本一致。以下是最核心的使用教程,涵盖入门到常用操作:
一、基本概念:三种模式
vim 的核心是模式切换,必须先掌握三种基础模式:
命令模式(Normal Mode)
打开文件默认进入的模式,用于执行操作命令(如移动光标、删除、复制等)。
插入模式(Insert Mode)
用于输入文本,按i/a/o等键进入,按Esc返回命令模式。
末行模式(Command-Line Mode)
用于执行保存、退出、查找等命令,按:进入,按Esc返回命令模式。
二、入门操作:从打开到保存退出
1. 打开文件
1 | vim 文件名 # 打开指定文件(若文件不存在,保存时会新建) |
- ls是看命令用来查看当前目录下的文件和文件夹:本身没有test.txt
- vim test.txt之后会新建
- cat test.txt可以查看文件的内容
2. 进入插入模式(开始编辑)
在命令模式下按以下键进入插入模式:
i:在光标当前位置前插入a:在光标当前位置后插入o:在光标下一行新建一行插入I:在当前行开头插入(大写 I)A:在当前行末尾插入(大写 A)O:在光标上一行新建一行插入(大写 O)
3. 保存与退出(末行模式)
在命令模式下按 : 进入末行模式,输入以下命令:
:w:保存文件(不退出):q:退出(未修改时可用):wq或:x:保存并退出:q!:强制退出(不保存修改,用于放弃编辑)
三、命令模式:常用操作(必学)
1. 光标移动(高效移动,减少鼠标依赖)
- 方向键:
↑↓←→(或k j h l,左手更顺手) - 行内快速移动:
0(数字 0):移动到行首^:也是移动到行首$:移动到行尾w:移动到下一个单词开头b:移动到上一个单词开头
- 全文快速移动:
gg:跳转到文件首行G(大写):跳转到文件末行nG(如5G):跳转到第 5 行Ctrl + f:向下翻一页(forward)Ctrl + b:向上翻一页(backward)Ctrl + d:向下翻半页(down)Ctrl + u:向上翻半页(up)
2. 删除操作
x:删除光标所在字符dd:删除光标所在行(常用!)ndd(如3dd):删除从当前行开始的 3 行d0:删除从光标到行首的内容d$:删除从光标到行尾的内容
3. 复制与粘贴
yy:复制光标所在行(常用!)nyy(如2yy):复制从当前行开始的 两行(两行都复制)p(小写):在光标下一行粘贴(3p就是把复制的粘贴3次)P(大写):在光标上一行粘贴
4. 撤销与重做
u:撤销上一步操作(undo)Ctrl + r:重做(恢复被撤销的操作,redo)
四、末行模式:实用功能
1. 查找与替换
查找:
/关键词(如/error查找 error,按n找下一个,N找上一个)(默认区分大小写)(后面加\c不区分大小写)(或者在末行模式下输入
set ic (ignore case)修改全局忽略大小写设置)全局替换:
:%s/旧内容/新内容/g(全局替换,%表示全文,g表示一行内所有匹配)例:
:%s/hello/world/g把全文的 hello 换成 world局部替换:
:起始行,结束行s/旧内容/新内容/g(如:3,5s/abc/def/g替换 3-5 行的 abc 为 def)
2. 显示行号
:set nu:显示行号(number):set nonu:隐藏行号
3. 保存为新文件
:w 新文件名:把当前内容另存为新文件(不影响原文件)
五、实战技巧(提高效率)
- 批量注释 / 取消注释
- 命令模式下按
Ctrl + v进入块选择模式,移动光标选中多行的行首,按I进入插入模式,输入#(注释符),按Esc自动对选中行加注释。 - 取消注释:同样块选择模式选中注释符,按
x删除。
- 命令模式下按
- 快速缩进
- 命令模式下按
>>缩进当前行,<<取消缩进。 n>>(如3>>)缩进 3 行。
- 命令模式下按
- 分屏编辑
:split 文件名(或:sp):横向分屏(上下两个窗口):vsplit 文件名(或:vsp):纵向分屏(左右两个窗口)Ctrl + w + w:切换分屏窗口






