当前位置: 首页 > news >正文

Linux系统Vim编辑器

如果你刚接触 Linux,面对黑漆漆的终端和闪烁的光标,第一次输入vim filename后可能会手足无措:为什么按键盘没反应?怎么才能打字?甚至不知道该怎么退出?

别慌,你遇到的困惑几乎每个 Linux 开发者都经历过。Vim(Vi IMproved)虽然学习曲线陡峭,但一旦掌握了它的逻辑,这种双手不离开键盘、行云流水般的编辑体验,绝对会让你直呼“真香”。今天,我们就用最短的时间,带你从零驯服这款被称为“编辑器之神”的强大工具

vim与vi

Vim与Vi:它们是什么关系?

在开始之前,我们先厘清一个概念。Vi (Visual Interface) 是 Unix 系统上历史悠久的经典文本编辑器;而 Vim (Vi IMproved) 则是 Vi 的全面增强版,它在兼容 Vi 的基础上增加了语法高亮、多级撤销、插件支持等现代化特性。在现代 Linux 系统中,执行vi命令通常实际上启动的就是vim。因此,本教程将以功能更强大的 Vim 为例进行讲解,但所学内容在 Vi 上基本通用

Vim的三种模式

学习vim可以使用官方的教程,在shell下输入命令就能查看vim教程

vimtutor

Vim 与其他编辑器最大的不同在于它的多模式设计。它不像记事本那样打开就能直接打字,而是将“浏览/操作”和“输入文字”完全分开。理解并熟练切换这三种模式,是掌握 Vim 的第一步,也是最关键的一步。

  1. 命令模式:这是 Vim 启动后的默认模式。在此模式下,你敲击键盘的大部分按键都被视为命令(如移动光标、复制、删除),而不是输入文本。这是你进行导航和高效操作的“指挥中心”。
  2. 输入模式:这才是你真正输入和编辑文本的模式,行为类似于普通的记事本。屏幕左下角通常会显示-- INSERT ---- 插入 --字样。
  3. 底线命令行模式:以:开始,通常用于文件的保存、退出。在此模式下,你可以执行保存、退出、全局搜索、批量替换等操作。

新手口诀:打开 Vim 是命令模式,按i进入编辑,按Esc回命令,按:进底线命令模式,保存退出用:wq

命令模式

如果需要通过vi/vim编辑器编辑文件,请通过如下命令:

vi 文件路径 vim 文件路径

vim兼容全部的vi功能,后续全部使用vim命令

  • 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
  • 如果文件路径表示的文件存在,那么此命令用于编辑已有文件

命令模式快捷键

经过刚刚的快速体验,想必同学们对于3种模式的切换有了一定的了解,现在我们来看一下,在命令模式下的一些常见快捷键

模式命令描述
命令模式i在当前光标位置进入输入模式
命令模式a在当前光标位置之后进入输入模式
命令模式I在当前行的开头进入输入模式
命令模式A在当前行的结尾进入输入模式
命令模式o在当前光标下一行进入输入模式
命令模式O在当前光标上一行进入输入模式
输入模式esc任何情况下输入[Esc]都能回到命令模式
命令模式键盘上、键盘k向上移动光标
命令模式键盘下、键盘j向下移动光标
命令模式键盘左、键盘h向左移动光标
命令模式键盘右、键盘l向右移动光标
命令模式0移动光标到当前行的开头
命令模式$移动光标到当前行的结尾
命令模式pageup(PgUp)向上翻页
命令模式pagedown(PgDn)向下翻页
命令模式/进入搜索模式
命令模式n向下继续搜索
命令模式N向上继续搜索
命令模式dd删除光标所在行的内容
命令模式nddn是数字,表示删除当前光标向下n行
命令模式yy复制当前行
命令模式nyyn是数字,复制当前行和下面的n行
命令模式p粘贴复制的内容
命令模式u撤销修改
命令模式ctrl+r反向撤销修改
命令模式gg跳到首行
命令模式G跳到行尾
命令模式dG从当前行开始,向下全部删除
命令模式dgg从当前行开始,向上全部删除
命令模式d$从当前光标开始,删除到本行结尾
命令模式d0从当前光标开始,删除到本行开头

底线命令模式

编辑模式没有什么特殊的,进入编辑模式后,任何快捷键都没有作用,就是正常输入文本而已,唯一大家需要记住的,就是通过esc,可以退回到命令模式中即可。然后输入命令用于文件的保存、退出

模式命令描述
底线命令模式:wq保存并退出
底线命令模式:q仅退出
底线命令模式:q!强制退出
底线命令模式:w仅保存
底线命令模式:set nu显示行号
底线命令模式:set paste设置粘贴模式

从打开到退出的完整流程

让我们通过一个完整的编辑流程,来熟悉最基本的操作。假设我们要新建或编辑一个叫test.txt的文件:

  1. 启动 Vim:在终端中输入vim test.txt。如果文件不存在,Vim 会新建它;如果存在,则打开已有文件。此时你处于普通模式
  2. 进入编辑状态:按下键盘上的i键,左下角出现-- INSERT --,说明进入了插入模式。现在你可以像在记事本里一样自由输入文字了。
  3. 保存与退出:编辑完成后,先按一下Esc键确保回到普通模式。接着输入冒号:进入命令行模式,此时光标会跳到屏幕最底端。输入以下命令之一并按回车:
    • :wq:保存文件并退出(Write and Quit)。
    • :q!:强制退出,放弃所有未保存的修改。
    • ZZ:在普通模式下直接按两次大写 Z,效果等同于:wq

高效移动与编辑

在命令模式下,使用方向键移动光标效率很低。Vim 提供了一套经典的移动方式,让你的手指无需离开主键盘区即可飞速穿梭:

  • 基本移动h(左)、j(下)、k(上)、l(右)。
  • 快速跳转gg(跳转到文件首行)、G(跳转到文件尾行)、5G(直接跳转到第 5 行)。
  • 常用编辑yy(复制当前行)、dd(删除/剪切当前行)、p(粘贴刚才复制或剪切的内容)、u(撤销上一步操作)。

比如你想复制第 3 行的内容粘贴到第 5 行下面,只需要在普通模式下依次按下:3G(跳到第3行) ->yy(复制) ->5G(跳到第5行) ->p(粘贴)。

让 Vim 更好用

原生的 Vim 界面比较简陋(没有行号、没有语法高亮)。为了让你在入门阶段获得更好的体验,我们可以简单配置一下。在终端执行vim ~/.vimrc,按i进入插入模式,复制以下内容并保存退出:

# 开启语法高亮,看代码更清晰 syntax on # 显示行号,方便定位 set number # 在状态栏显示光标当前位置 set ruler # 搜索时忽略大小写 set ignorecase set smartcase # 启用鼠标支持(对新手非常友好,允许用鼠标点击定位光标) set mouse=a # 缩进设置:Tab键宽度为4个空格 set tabstop=4 set shiftwidth=4 set expandtab

~/.vimrc是 Vim 的用户级配置文件,系统默认不会自动为普通用户创建它。

找不到~/.vimrc这个文件?

  1. 隐藏属性:在 Linux 中,以.(点)开头的文件和目录都是隐藏的。即使该文件存在,你直接使用普通的ls命令也看不到它,必须使用ls -a才能显示出来。
  2. 按需创建.vimrc是为了让 Vim 记住你的个人偏好(比如开启行号、语法高亮等)而存在的。如果你之前没有手动配置过 Vim,这个文件自然就不会被生成。

既然系统没有自带,我们只需要自己动手创建一个即可。你可以直接在终端执行以下命令,将常用的基础配置一键写入你的.vimrc文件中:

cat > ~/.vimrc << 'EOF' " 开启语法高亮,代码看起来更清晰 syntax on " 显示行号,方便定位代码 set number " 在状态栏显示光标当前位置 set ruler " 搜索时忽略大小写,但如果输入了大写字母则区分大小写 set ignorecase set smartcase " 启用鼠标支持,对新手非常友好(可以用鼠标点击定位光标) set mouse=a " 缩进设置:将 Tab 键设置为 4 个空格 set tabstop=4 set shiftwidth=4 set expandtab EOF

即使你在.vimrc里写了syntax on,在以下几种常见情况下,代码依然可能看起来是白茫茫一片。

如果你是在终端里直接输入vim打开一个空白界面,然后再粘贴或编写 C++ 代码,Vim 此时并不知道你正在写 C++,它只会把你当成普通文本处理。

  • 解决方法:在 Vim 中手动告诉它:“嘿,这是 C++ 代码!”
    • 按下冒号:进入底行模式,输入set filetype=cpp并回车。你会发现高亮瞬间就出来了!
  • 最佳习惯:以后尽量通过带文件名的命令打开 Vim,例如vim demo.cpp。只要文件名带有.cpp后缀,Vim 就会自动开启 C++ 语法高亮。
http://www.jsqmd.com/news/886707/

相关文章:

  • 你的企业还在用“人海战术”处理发票和报表?2026智能体进化论
  • 别再死磕理论了!用Python手搓一个蒙特卡洛强化学习小游戏(附完整代码)
  • pan-baidu-download:百度网盘多线程下载加速器架构解析与性能优化指南
  • 【绝密PEST压力测试报告】:Claude 3.5在金融/医疗/政务三大敏感领域的17项穿透式评估结果(仅剩最后87份)
  • 边缘AI落地总失败?DeepSeek架构的4层容错机制,92%故障在毫秒级自愈
  • DeepSeek多卡训练通信开销超62%?紧急发布:NCCL拓扑感知AllReduce重排+梯度压缩阈值动态调优指南
  • Neon Glowing效果失效全解析,深度解读--v 6.2下--style raw与--no ambient_light的冲突机制及绕过方案
  • 面试必问:Temperature=0为何仍不确定?真相揭秘
  • 博弈论导向的车辆队列运动协同分层控制算法【附算法】
  • 幽灵请求与内存泄漏:一次全栈高并发下的性能惊魂复盘
  • 【2026收藏版】小白程序员必学的20个核心AI大模型基础概念(通俗易懂无废话)
  • Hugging Face 中tokenizer.json 和vocab.json 有区别?
  • 冰雪重制版手游官网下载:冰雪重制版最新官方下载渠道
  • 如何为Nintendo Switch安装游戏?Awoo Installer的3种安装方式全解析
  • 【Lovable电商网站搭建黄金标准】:基于137个真实项目数据验证的6项LCP/CLS/INP硬性阈值
  • 2026年数字化转型真相:为何空有大模型却带不动老系统?
  • 三维视图查看器项目(QT/C++)
  • Python中构造函数init与类的实例化
  • 收藏2026版|后端行业遇冷已成定局?程序员该扎根Java还是全力冲刺大模型
  • vectorizer图像矢量化工具:3步实现PNG/JPG到SVG的智能转换
  • 为什么你的粒子效果永远“糊”?Midjourney底层采样器对粒子密度的隐式限制(附GPU显存占用热力图)
  • 用Python+OpenCV+MediaPipe做个手势识别小游戏:从摄像头捕捉到虚拟控制
  • 高性能B站m4s格式转换:跨平台兼容的零质量损失技术方案
  • Java反射:从运行时窥探到动态代理的工程实践
  • 从零开始在个人项目中接入Taotoken API的完整记录
  • 2026年义乌餐饮收银服务商专业评估与场景化选型指南 - 万事通达
  • 孤舟笔记 互联网常用框架篇二 Dubbo服务请求失败怎么处理?集群容错策略你用过几种
  • Docker 安装RocktMQ 和管理平台
  • 企业AI编程部署方案:2026最新权威8款AI编程工具必看清单
  • taotoken多模型广场如何在ubuntu开发中辅助模型选型