教程——vi和vim编辑器使用

vi和vim编辑器使用教程

前言:

  • 在很多时候VSCode可以替代vi这种命令行编辑器,但是在服务器的环境上,一般没有图形界面,也没有VSCode这种图形化编辑器,只能通过命令行来操作
  • vi编辑器就是这种场景下最常用的编辑器
  • 在服务器上出了问题,需要查看某个日志文件来排查问题的原因,或者需要定位某一个错误的位置,找到错误之后可能还需要修改某个配置文件等等(等把日志文件下载到本地,用VSCode查看和编辑,花费时间长)

vivim 是 Linux/Unix 系统中最常用的文本编辑器,vimvi 的增强版(支持语法高亮、代码补全等),操作逻辑基本一致。以下是最核心的使用教程,涵盖入门到常用操作:

一、基本概念:三种模式

image-20251030185939188

vim 的核心是模式切换,必须先掌握三种基础模式:

  1. 命令模式(Normal Mode)

    打开文件默认进入的模式,用于执行操作命令(如移动光标、删除、复制等)。

  2. 插入模式(Insert Mode)

    用于输入文本,按i/a/o等键进入,按Esc返回命令模式。

  3. 末行模式(Command-Line Mode)

    用于执行保存、退出、查找等命令,按:进入,按Esc返回命令模式。

二、入门操作:从打开到保存退出

1. 打开文件

1
2
vim 文件名    # 打开指定文件(若文件不存在,保存时会新建)
例:vim test.txt
  • ls是看命令用来查看当前目录下的文件和文件夹:本身没有test.txt

image-20251030184525282

  • vim test.txt之后会新建
  • cat test.txt可以查看文件的内容

image-20251030185416564

2. 进入插入模式(开始编辑)

在命令模式下按以下键进入插入模式:

  • i:在光标当前位置前插入
  • a:在光标当前位置后插入
  • o:在光标下一行新建一行插入
  • I:在当前行开头插入(大写 I)
  • A:在当前行末尾插入(大写 A)
  • O:在光标上一行新建一行插入(大写 O)

image-20251030190624897

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 新文件名:把当前内容另存为新文件(不影响原文件)

五、实战技巧(提高效率)

  1. 批量注释 / 取消注释
    • 命令模式下按 Ctrl + v 进入块选择模式,移动光标选中多行的行首,按 I 进入插入模式,输入 #(注释符),按 Esc 自动对选中行加注释。
    • 取消注释:同样块选择模式选中注释符,按 x 删除。
  2. 快速缩进
    • 命令模式下按 >> 缩进当前行,<< 取消缩进。
    • n>>(如 3>>)缩进 3 行。
  3. 分屏编辑
    • :split 文件名(或 :sp):横向分屏(上下两个窗口)
    • :vsplit 文件名(或 :vsp):纵向分屏(左右两个窗口)
    • Ctrl + w + w:切换分屏窗口