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++编译器将代码变成可执行程序。

相关推荐
lsh曙光1 小时前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫1 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
似的8352 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
我不管我就要叫小猪3 小时前
嵌入式Linux----网络通信
linux·运维·服务器
泡沫冰@3 小时前
ECS 的介绍和使用
linux·服务器·网络
姜太小白4 小时前
【Linux】df -h 卡住问题的通用排查与解决方案总结
linux·运维·php
fengyehongWorld4 小时前
Linux 终端快捷键
linux·运维
哎呦喂我去去去5 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
easy_coder6 小时前
Linux LVM 知识文档
linux·运维
小小的木头人7 小时前
Ubuntu 使用 udev + systemd + UUID 实现 USB 硬盘自动挂载
linux·运维·ubuntu