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

相关推荐
小林ixn3 小时前
Node.js 文件系统与路径处理:从 API 到工程化实战
node.js·编辑器·vim
RisunJan6 小时前
Linux命令-rlogin(远程登录)
linux·运维
大飞记Python9 小时前
Linux命令速查手册(测试开发4年实战总结,附PDF)
linux·网络·pdf
顾喵10 小时前
PetaLinux 2017.4 实操指南:PREEMPT_RT实时补丁移植+Zynq PL中断UIO用户态配置(超完整避坑版)
linux
小樱花的樱花11 小时前
Linux 线程的创建
linux·c语言·开发语言
mounter62511 小时前
BPF 的进化史:从网络过滤器到 AI 时代的 Linux 核心引擎
linux·网络·人工智能·ebpf·linux kernel·kernel
YMWM_11 小时前
video.preset的值为null和ultrafast的区别
linux·video
Luoxi_812 小时前
Anaconda超详细的安装教程+VScode的使用
ide·vscode·编辑器
代码AC不AC14 小时前
【Linux】线程池
linux·线程池
网络小白不怕黑15 小时前
12.DHCP服务搭建
linux·运维·服务器·网络