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

相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush44 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
VidDown4 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
载数而行5204 天前
Linux 11 动态监控指令top
linux