Vim编辑器从入门到熟练 —— 三种模式与常用命令详解

引言

Vim是Linux下最强大的文本编辑器之一,被誉为"编辑器之神"。它完全基于键盘操作,无需鼠标,熟练后编辑效率极高。本文将从零开始介绍Vim的基本概念、三种核心模式、常用命令以及简单的个性化配置,帮助你快速上手。

一、Vim与Vi的区别

Vi是Unix系统最早的全屏幕编辑器,而Vim(Vi Improved)是其增强版,增加了语法高亮、可视化操作、多窗口编辑、插件支持等特性。Vim可以在终端、X Window、macOS、Windows等环境下运行。我们统一使用Vim进行学习。

二、Vim的三种基本模式

Vim之所以强大,是因为它拥有多种模式,其中最重要的是以下三种:

模式 功能描述
命令模式(Normal mode) 控制光标移动、删除字符/行、复制粘贴、进入其他模式。刚打开Vim时默认在此模式。
插入模式(Insert mode) 可以输入文字,像普通编辑器一样。按iao等从命令模式进入,按ESC返回命令模式。
末行模式(Last line mode) 用于保存文件、退出Vim、查找替换、设置行号等。在命令模式下按:进入。

除了这三种,Vim还有可视模式、选择模式、Ex模式等,总共12种模式,但初级阶段掌握上述三种足够。

三、基本操作流程

  1. 打开文件:vim test.c

  2. 开始编辑:按i进入插入模式,输入代码。

  3. 返回命令模式:按ESC

  4. 保存并退出:在命令模式下按:进入末行模式,输入wq回车。

  5. 强制退出不保存:末行模式输入q!

四、命令模式常用命令集

1. 光标移动(建议使用标准键位)
按键 作用
h / j / k / l 左 / 下 / 上 / 右
w 跳到下一个单词开头
b 跳到上一个单词开头
e 跳到单词末尾
0^ 跳到行首
$ 跳到行尾
gg 跳到文件首行
G 跳到文件末行
nG:n 跳到第n行
Ctrl+f / Ctrl+b 向前/向后翻一页
Ctrl+d / Ctrl+u 向前/向后翻半页
2. 删除操作
按键 作用
x 删除光标所在字符
nx 删除光标后n个字符(包含当前)
X 删除光标前一个字符
dd 删除整行
ndd 删除从当前行开始的n行
3. 复制与粘贴
按键 作用
yy 复制当前行
nyy 复制n行
yw 复制光标到单词末尾
p 粘贴到光标后
P 粘贴到光标前
4. 撤销与恢复
按键 作用
u 撤销上一次操作
Ctrl+r 恢复撤销的操作
5. 替换
按键 作用
r 替换光标处的一个字符
R 连续替换多个字符(覆盖模式)

五、末行模式常用命令集

命令 作用
:w 保存文件
:q 退出(未保存会提示)
:q! 强制退出不保存
:wq:x 保存并退出
:set nu 显示行号
:set nonu 取消行号
:n 跳转到第n行(如:15跳转到15行)
:/关键字 向下搜索关键字,按n继续下一个
:?关键字 向上搜索关键字
:%s/old/new/g 全局替换所有old为new
:s/old/new/ 替换当前行第一个old
:n,ms/old/new/g 替换n到m行所有old

六、简单Vim配置(~/.vimrc)

Vim的配置通过主目录下的.vimrc文件实现。以下是一个基础配置示例:

复制代码
syntax on              " 语法高亮
set nu                 " 显示行号
set tabstop=4          " Tab键宽度为4空格
set shiftwidth=4       " 自动缩进宽度
set expandtab          " 将Tab转换为空格
set autoindent         " 自动缩进
set cursorline         " 高亮当前行

你还可以安装插件,如TagList(代码标签列表)、WinManager(文件浏览器)等,让Vim更像IDE。

七、练习建议

  1. 新建一个test.txt,用Vim打开,练习光标移动、删除、复制、粘贴。

  2. 编写一个简单的C程序,保存、编译、运行。

  3. 尝试搜索与替换功能。

  4. 配置.vimrc,体验语法高亮和行号。

八、总结

Vim的学习曲线较陡,但只要坚持使用一周,你就会爱上这种手不离键盘的编辑方式。记住三种模式:命令模式、插入模式、末行模式 ,并熟练核心命令:iESCddyypu:wq。下一篇文章我们将学习如何使用gcc/g++编译器将代码变成可执行程序。

相关推荐
bosins6 小时前
WSL 迁移指南:如何将 Linux 环境完整复制到另一台电脑
linux·运维·服务器
企鹅的蚂蚁7 小时前
LubanCat RK3588 实时 Linux 开发(六):启用 gs_usb 驱动并完成 USB-CAN 收发
linux·rk3588·linux驱动·socketcan·gs_usb·usb-can
2601_962299888 小时前
Linux执行Python脚本方法
linux·python·脚本·解释器·shebang
snow@li8 小时前
服务器运维:Linux命令速查手册(全景梳理)
linux·服务器·网络
handler018 小时前
【Linux】线程与虚拟内存的底层世界
linux·运维·服务器·c++·线程·虚拟地址空间·共享内存
新时代牛马8 小时前
实时 Linux:PREEMPT_RT、延迟来源与观测
linux·运维·服务器
微露清风9 小时前
# Linux 进程全景:从 PCB 到 O(1) 调度队列
linux·服务器
H_oRIZoN_9 小时前
Linux入门DAY38(手写 HTTP 客户端抓取天气 + 简易 HTTP 服务器实现元器件 Web 系统)
linux·linux应用编程
fangjianj9 小时前
windows环境反弹shell
linux·windows·web安全
明月不会写代码9 小时前
Ubuntu 下 Kitty 终端配置记录
linux·ubuntu