Linux下 vim(vi)编辑器的使用-各种模式介绍

进入Vim

创建一个文件进入编辑

bash 复制代码
vi filename

一、编辑模式介绍

在 vi / vim 编辑器中,删除字符的操作取决于你当前所处的模式。vi 有三种主要模式:

  • 普通模式(Normal mode):启动后默认进入,用于导航和执行命令
  • 插入模式(Insert mode):用于输入文本
  • 命令行模式(Command-line mode) :通过 : 进入,用于保存、退出等
模式 说明 进入方式 退出方式
普通模式(Normal mode) 默认模式,用于导航、编辑命令(如删除、复制、跳转) 启动 Vim 自动进入;按Esc或Ctrl+[ 从其他模式返回 按i/a/o等进入插入模式,或: 进入命令行模式
插入模式(Insert mode) 输入文本内容 在普通模式下按: •i(当前光标前插入) •a(光标后插入) •o(下一行新建行) •I(行首插入) •A(行尾插入) 按Esc或Ctrl+[ 返回普通模式
命令行模式(Command-line mode) 执行保存、退出、搜索、替换等命令 在普通模式下按:(冒号)就是shift+; 按Enter执行命令,或Esc 取消返回普通模式

💡 还有可视模式(Visual mode)(用于选择文本):

  • v:字符级选择
  • V:整行选择
  • Ctrl+v:块选择(列模式)

二、普通模式(Normal Mode)常用命令

1.光标移动

命令 作用
h/j/k/l 左 / 下 / 上 / 右
w 跳到下一个单词开头
b 跳到上一个单词开头
e 跳到当前/下一个单词结尾
0(零) 跳到行首
^ 跳到行首第一个非空白字符
$ 跳到行尾
gg 跳到文件开头
G 跳到文件末尾
5G或:5 跳到第 5 行
Ctrl+d/Ctrl+u 向下 / 向上翻半页
Ctrl+f/Ctrl+b 向下 / 向上翻整页

2.编辑操作(删除、复制、粘贴)

命令 作用
x 删除当前字符
X 删除前一个字符
dw 删除到下一个单词开头
d$或D 删除到行尾
d0 删除到行首
dd 删除整行
5dd 删除5 行
yy 复制(yank)当前行
5yy 复制 5 行
yw 复制一个单词
p 在光标后粘贴
P 在光标前粘贴
u 撤销(undo)
Ctrl+r 重做(redo)
.(点) 重复上一次编辑操作

3.查找与替换

命令 作用
/word 向下搜索word,按n下一个,N 上一个
?word 向上搜索
:%s/old/new/g 全文将old替换为new(全局)
:s/old/new/g 仅当前行替换
:%s/old/new/gc 全文替换,每处确认(c = confirm)

✍️ 三、插入模式(Insert Mode)操作

  • 正常打字输入即可
  • 常用快捷键(部分终端支持):
    • Backspace:删除前一个字符
    • Delete:删除后一个字符(部分环境不支持)
    • Ctrl+h:等效 Backspace
    • Ctrl+w:删除前一个单词
    • Ctrl+u:删除整行已输入内容

⚠️ 插入模式下无法使用x、dd等命令!需先按Esc 回普通模式。


📜 四、命令行模式(Command-line Mode)常用命令

在普通模式下按: 进入:

命令 作用
:w 保存文件
:q 退出(无修改时)
:wq或:x 保存并退出
:q! 强制退出(不保存)
:w filename 另存为filename
:set nu :set number 显示行号
:set nonu 隐藏行号
:syntax on 开启语法高亮
:!ls 执行 shell 命令(如:!pwd)
:r filename 读入另一个文件内容到当前光标下
:help 打开帮助文档

相关推荐
jaronho12 分钟前
【脚本】 【Linux】启动所有网卡
linux·运维·服务器
草莓熊Lotso12 分钟前
【C++ 基于微服务的即时通讯系统】基建三件套:gflags + gtest + spdlog 源码编译安装与实战入门
linux·网络·数据库·c++·微服务·log4j
H.莓飛24 分钟前
【C++】类与对象(末):static、友元与拷贝优化
linux·开发语言·c++·visual studio
golang学习记9 小时前
VSCode多光标迎来重大更新
ide·vscode·编辑器
程序员-Benothing9 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
sm_926787059 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
‎ദ്ദിᵔ.˛.ᵔ₎9 小时前
linux 进程信号 (上)
linux·服务器
15Moonlight9 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
wuminyu10 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
liulilittle10 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c