news 2026/5/25 23:47:40

Linux系统Vim编辑器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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++ 语法高亮。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 23:47:37

solidworks导出step c#

https://help.solidworks.com/2023/english/api/swconst/filesaveasstepoptions.htmprivate void ImportSelectedStepBatchSldprt(){try{StartCancelableCommand();if (swApp null){Debug.WriteLine("SolidWorks 未初始化");return;}string[] selectedPaths;using (…

作者头像 李华
网站建设 2026/5/25 23:46:04

基于扩散模型的电网故障智能生成:从N-1筛选到主动风险预测

1. 项目概述&#xff1a;当扩散模型遇见电网安全在电力系统这个庞大而精密的“生命体”中&#xff0c;安全稳定运行是永恒的命题。作为一名长期与电网调度、安全分析打交道的工程师&#xff0c;我深知“故障筛选”这项工作的分量。它就像是电网的“体检医生”&#xff0c;需要在…

作者头像 李华
网站建设 2026/5/25 23:45:55

什么是X402

x402 是最近 Web3 AI Agent&#xff08;AI 智能体&#xff09;领域非常火的一个协议。 你可以把它理解成&#xff1a; “让 AI 和 API 能自动付款的 HTTP 支付协议。” 它的核心目标&#xff1a; 让互联网本身直接支持支付。 一、先理解“402”是什么 互联网里每次访问网站&a…

作者头像 李华
网站建设 2026/5/25 23:44:58

基于ESP32与MQTT的家庭环境监测系统:从传感器选型到数据可视化实战

1. 项目概述与核心价值最近几年&#xff0c;我身边越来越多的朋友开始关注家里的空气质量、温湿度这些看不见摸不着&#xff0c;但又实实在在影响生活舒适度和健康的环境指标。从新装修的房子担心甲醛&#xff0c;到有老人小孩的家庭在意PM2.5和二氧化碳浓度&#xff0c;再到南…

作者头像 李华
网站建设 2026/5/25 23:44:15

“烟雾飘散方向不对”是Prompt问题还是模型缺陷?2024 Q2 Midjourney烟雾物理引擎更新深度逆向分析(含3大未公开--stylize影响因子)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;烟雾物理引擎的底层架构与设计哲学 烟雾物理引擎并非传统刚体或流体模拟的简单延伸&#xff0c;而是一种面向视觉真实感与实时交互双重目标的轻量级粒子场耦合系统。其设计哲学根植于“可预测的混沌”——在保…

作者头像 李华