【Linux】开发工具命令指南:深度解析Vim的使用操作

在这里插入图片描述
欢迎各位佬进行交流,我们一起无限进步!!!!!!!!!!

文章目录

    • Vim:多模式高效文本编辑器
      • 1. 初次体验 Vim
      • 2. Vim 核心工作模式(5 种模式详解)
      • 3. 命令模式:高效操作核心区
        • (1)光标定位(精准移动,告别方向键)
        • (2)编辑命令(复制、删除、撤销)
        • (3)模式切换命令
      • 4. 命令行模式(底行模式):文件与编译操作
        • (1)文件基础操作
        • (2)搜索与替换
        • (3)编译与运行(以 C 语言为例)
        • (4)分屏操作(多文件同时编辑)
      • 5. 可视模式:批量操作神器
        • (1)批量添加注释(以 C 语言 `//` 为例)
        • (2)批量取消注释
        • (3)批量剪切/复制
      • 6. Vim 配置:自定义你的编辑器
        • (1)基础配置流程(新手必备)
        • (2)进阶配置与模式查询


Vim:多模式高效文本编辑器

1. 初次体验 Vim

  • 启动与基础操作:终端输入 vim 文件名(如 vim test.c)启动,默认进入命令模式(此时输入字符会被识别为命令,而非文本);
    • 若启动后无明显反应,无需慌张,按 i 键即可进入插入模式(界面会显示 --INSERT-- 提示),此时可正常输入代码;
    • 退出提示:若需放弃编辑退出,按 Esc 返回命令模式,输入 :q! 强制退出;若需保存退出,输入 :wq 或快捷键 Shift+zz
  • Vim 界面参考:
    Vim 界面示意图:展示命令模式与插入模式切换

2. Vim 核心工作模式(5 种模式详解)

Vim 的核心优势是“模式化编辑”,不同模式对应不同操作场景,新手可先掌握前 3 种基础模式,后续逐步熟悉剩余模式。模式分类及操作逻辑如下表:

模式类型触发方式核心用途退出方式(返回命令模式)新手重点度
命令模式(默认)启动 Vim 或按 Esc光标移动、复制/删除/撤销等无需退出(默认状态)★★★★★
插入模式i(光标前)/a(光标后)/o(新行)输入文本内容Esc★★★★★
命令行模式(底行):(即 Shift+;保存、退出、编译、搜索等Esc 或执行命令后返回★★★★☆
可视模式(块级/行级)Ctrl+v(块级)/v(字符级)/V(行级)批量注释、删除、复制Esc★★★☆☆
替换模式Shift+r(即 R实时替换光标后字符Esc★★☆☆☆

关键规则:插入模式、命令行模式、可视模式、替换模式之间无法直接切换,必须先按 Esc 返回命令模式,再切换至其他模式。

  • 模式切换逻辑参考:
    Vim 模式切换示意图:展示各模式间的切换关系

3. 命令模式:高效操作核心区

命令模式无需触发,启动后默认进入,所有操作通过“快捷键命令”完成,按功能分类如下:

(1)光标定位(精准移动,告别方向键)
  • 行级定位:

    • 跳转到第 n 行:n gg(n 为数字,如 5 gg 跳转到第 5 行,无需加“+”);
    • 跳转到文件首行:gg(无数字,直接按 gg);
    • 跳转到文件末尾:G(即 Shift+G无需加数字,原“n+Shift+G”为错误命令,会导致跳转到第 n 行而非末尾)。
  • 行内定位:

    • 行尾:Shift+$(光标快速移到当前行最后一个字符);
    • 行首:Shift+^(光标快速移到当前行第一个非空字符);
    • 方向替代(兼容无方向键设备):h(左)、j(下)、k(上)、l(右)(原“左下上右”顺序错误,需纠正为“左、下、上、右”);
    • 单词级移动:w(跳转到下一个单词开头)、b(跳转到上一个单词开头)。
(2)编辑命令(复制、删除、撤销)
  • 复制与粘贴:
    • 复制 n 行:n yy(如 3 yy 复制当前行及下方共 3 行);
    • 粘贴:n p(将复制内容粘贴到当前行下方,n 为粘贴次数,如 2 p 粘贴 2 次)。
  • 撤销与重做:
    • 撤销上一步:u(可连续撤销,只要不退出 Vim);
    • 重做撤销操作:Ctrl+r(恢复被 u 撤销的步骤)。
  • 删除与剪切:
    • 删除 n 行(剪切):n dd(如 2 dd 删除当前行及下方 1 行,删除内容可通过 p 粘贴,等同于“剪切”);
    • 字符级删除:x(删除光标后 1 个字符)、X(删除光标前 1 个字符)。
  • 其他实用命令:
    • 大小写转换:Shift+~(光标所在字符切换大小写,按 n Shift+~ 连续转换 n 个字符);
    • 局部替换:n r(从光标开始替换 n 个字符,如 4 r1 将光标及后续 3 个字符替换为 1)。
(3)模式切换命令
  • 进入替换模式:Shift+r(即 R),此时输入的字符会直接覆盖光标后的字符,界面显示 --REPLACE-- 提示;
    Vim 替换模式示意图:展示实时替换字符的效果
  • 进入插入模式:i(光标前插入)、a(光标后插入)、o(当前行下方新增一行并插入),按需选择即可(如在单词末尾补全用 a,新增行写代码用 o)。

4. 命令行模式(底行模式):文件与编译操作

: 触发命令行模式,输入命令后按回车执行,核心命令按场景分类:

(1)文件基础操作
  • 保存与退出:
    • :w:仅保存文件(不退出,适合编辑中阶段性保存);
    • :q:退出 Vim(需先保存,未保存时会报错);
    • :wq:保存并退出(等同于命令模式的 Shift+zz);
    • :!:强制执行(如 :q! 强制退出不保存、:w! 强制保存只读文件)。
  • 行号控制:
    • :set nu:显示行号(写代码查错必备);
    • :set nonu:隐藏行号(需简洁界面时使用)。
(2)搜索与替换
  • 关键词搜索::/关键词(如 :/printf,回车后定位到第一个匹配项,按 n 找下一个,Shift+n 找上一个);
  • 全局替换:::%s/旧内容/新内容/g% 表示整个文件,s 表示替换,g 表示全局匹配,如 :%s/int/long/g 将所有 int 改为 long);
    Vim 全局替换示意图:展示底行模式下的替换命令与效果
(3)编译与运行(以 C 语言为例)
  • 编译代码::! gcc 源码文件 -o 输出文件名(如 :! gcc code.c -o myprog,生成可执行文件 myprog);
    • 简化编译:若无需自定义文件名,可直接输入 :! gcc code.c(默认生成 a.out);
  • 运行程序::! ./输出文件名(如 :! ./myprog,执行编译后的程序并查看输出);
  • 快速执行历史命令:按 :! 后加“命令首字母”,按 Tab 键可补全历史命令(如 :!g 补全 ! gcc code.c)。
(4)分屏操作(多文件同时编辑)
  • 垂直分屏::vs 文件名(如 :vs test.c,在当前窗口右侧新增分屏并打开 test.c,光标在哪就从哪个窗口分屏);
    Vim 垂直分屏示意图:展示两个文件同时编辑的分屏界面
  • 分屏切换:Ctrl+ww(在多个分屏间循环切换,按一次切换一个窗口);
  • 关闭分屏:在目标分屏中输入 :q(若为最后一个分屏则退出 Vim)。

5. 可视模式:批量操作神器

可视模式主要用于“批量选中文本”,其中 块级可视模式Ctrl+v 触发)最适合代码注释、删除等场景,操作步骤如下:

(1)批量添加注释(以 C 语言 // 为例)
  1. 命令模式下按 Ctrl+v 进入块级可视模式;
  2. j/k 方向键选中需要注释的所有行(仅需选中每行的开头位置,无需全选);
  3. Shift+i 进入“块插入模式”,输入注释符号 //(此时仅第一行显示输入内容);
  4. Esc 键,选中的所有行开头会自动添加 //,完成批量注释;
    Vim 批量注释示意图:展示块级可视模式选中与注释添加过程
(2)批量取消注释
  1. 命令模式下按 Ctrl+v 进入块级可视模式;
  2. h/l/j/k 选中所有行的 // 符号(确保仅选中注释部分,不包含代码);
  3. d 键删除选中的 //,所有行注释同步取消;
    Vim 批量取消注释示意图:展示块级可视模式选中注释符号与删除过程
(3)批量剪切/复制
  • 批量剪切:选中内容后按 d 键,直接删除并保存到剪贴板;
  • 批量复制:选中内容后按 y 键,复制到剪贴板,再按 p 粘贴到目标位置。

6. Vim 配置:自定义你的编辑器

Vim 支持通过 ~/.vimrc 文件自定义功能(如默认显示行号、自动缩进),配置仅对当前用户生效,步骤如下:

(1)基础配置流程(新手必备)
  1. 返回家目录:终端输入 cd ~~ 代表当前用户的主目录,如 /home/yourname);
  2. 创建配置文件:输入 touch .vimrc.vimrc 是 Vim 的默认配置文件,前缀 . 表示隐藏文件);
  3. 编辑配置文件:输入 vim .vimrc,进入 Vim 编辑界面;
  4. 添加基础配置(可直接复制以下内容,按 Esc 后输入 :wq 保存生效):
    " 显示行号(写代码查错必备)
    set nu
    " Tab 键对应 4 个空格(符合多数代码缩进规范)
    set tabstop=4
    " 自动缩进(新行与上一行缩进对齐,写循环/函数时不用手动缩进)
    set autoindent
    " 高亮当前行(方便定位光标位置)
    set cursorline
    " 插入模式下按 jj 快速返回命令模式(替代 Esc 键,更顺手)
    inoremap jj <Esc>
    " 搜索时忽略大小写(输入 /Printf 和 /printf 效果一致)
    set ignorecase
    
(2)进阶配置与模式查询
  • 进阶配置:若需代码补全、主题美化等功能,可创建 ~/.vim 目录,下载插件(如 Vundle 插件管理器)放入该目录,具体配置可参考 AI 或 Vim 插件文档;
  • 查看所有模式:vim-modes 命令错误(Vim 无此命令),正确方式是在 Vim 内输入 :help modes 并回车,查看官方模式说明文档;
    Vim 模式说明文档示意图:展示通过 help 命令查看模式的界面
  • 配置效果参考:
    Vim 配置示例示意图:展示配置后的行号、高亮等效果

注意:不同用户的 Vim 配置相互独立(每个用户的 ~/.vimrc 仅作用于自己),无需担心影响其他用户。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920090.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Day 12】73.矩阵置零

文章目录73.矩阵置零题目&#xff1a;思路&#xff1a;方法一&#xff1a;用两个标记数组&#xff08;易理解&#xff0c;额外空间 O(mn)&#xff09;思路&#xff08;直观&#xff09;举例&#xff08;[[1,1,1],[1,0,1],[1,1,1]]&#xff09;优缺点代码实现&#xff08;Go&…

Clustering Enabled Wireless Channel Modeling Using Big Data Algorithms

文章目录Clustering TechniquesPartitioning-Based AlgorithmsDensity-Based AlgorithmsHierarchical-based algorithmsClustering Enabled Channel ModelingCluster-Based Channel ModelsClustering AlgorithmsClustering Techniques 聚类是一种已被广泛用于数据分析的技术。…

基于「多模态大模型 + BGE向量检索增强RAG」的儿童绘画心理健康分析系统(vue+flask+AI算法)

一、项目演示视频 基于「多模态大模型 BGE向量检索增强RAG」的儿童绘画心理健康分析系统(vueflaskAI算法)二、技术栈 前端技术栈 (web-vue) 核心框架: Vue 3.5.13 (Composition API) UI组件库: Element Plus 2.9.4 状态管理: Pinia 2.3.1 路由管理: Vue Router 4.5.0 HTTP客户…

QML中的Component

目录 &#x1f9e0; 核心概念&#xff1a;什么是 Component&#xff1f; &#x1f4ca; Component 的两种主要形式 1. 内联 Component&#xff08;在 QML 文件内部定义&#xff09; 2. 外部 Component&#xff08;单独的 .qml 文件&#xff09; &#x1f3af; Component 的…

什么是模型训练中的 特征提取,如何对光伏发电预测中的特征进行提取

&#x1f50d; 什么是模型训练中的“特征提取” 定义&#xff1a;特征提取是从原始数据中提炼出对预测或分类最有用的信息的过程。它的目标是去掉冗余和噪声&#xff0c;保留能最好反映数据规律的特征。 作用&#xff1a; 降低数据维度&#xff0c;减少计算量 提高模型的泛化…

Linux应急响应一般思路(三)

日志分析Linux日志分析Linux日志类型大致可以分为三类&#xff0c;内核和系统日志、用户日志、应用日志内核和系统日志&#xff1a;这种日志主要由syslog管理、根据其配置文件/etc/syslog.conf中的设置决定内核消息和各种系统程序信息记录到哪个位置用户日志&#xff1a;用户日…

【酒店酒水寄存管理效率低?】佳易王酒水寄存管理系统操作教程全解析

前言&#xff1a; &#xff08;一&#xff09;试用版获取方式 资源下载路径&#xff1a;进入博主头像主页第一篇文章末尾&#xff0c;点击卡片按钮&#xff1b;或访问左上角博客主页&#xff0c;通过右侧按钮获取详细资料。 说明&#xff1a;下载文件为压缩包&#xff0c;使用…

Unity 套圈捕捉 UI 实现分享:椭圆环 Shader + 动态进度

Unity 套圈捕捉 UI 实现分享 期望表现效果 《拼贴冒险传 / PatchQuest》 捕捉进度 动态UI实现效果 目标&#xff1a;角色 A 套圈怪物 B&#xff0c;进度环显示围绕角度。技术点&#xff1a;Shader 绘制椭圆环&#xff0c;支持描边、顺/逆时针,需要对两个切口也进行描边。 技术…

MyBatis-Plus代码生成器

MyBatis-Plus 代码生成器是一款高效、灵活的自动化工具,旨在简化 Java 后端开发中的持久层代码编写。通过配置数据库连接和模板参数,它可以一键生成实体类、Mapper 接口、XML 文件、Service 层及 Controller 层代码,大幅提升开发效率,减少重复劳动。 核心优势: 快速生成:…

06-导入Maven项目模块

文章目录1、文章介绍2、模块复制3、导入pom文件4、效果图1、文章介绍 视频定位 2、模块复制 复制资料“02.maven项目”中的两个项目模块到刚刚新建的项目文件路径中 导入后的效果图 3、导入pom文件 4、效果图

Jenkins+docker 微服务实现自动化部署安装和部署过程

Jenkins 是一款流行的开源自动化服务器&#xff0c;广泛用于持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;流程的自动化。通过 Docker 部署 Jenkins 可以简化安装和配置过程&#xff0c;同时保证在不同环境下的一致性。本篇文章将介绍如何使用 Dock…

【芯片后端设计的灵魂:Placement的作用与重要性】

在芯片设计的浩瀚宇宙中&#xff0c;后端物理设计扮演着决定成败的关键角色。其中&#xff0c;​Placement&#xff08;布局&#xff09;​​ 作为整个流程的核心环节&#xff0c;被誉为芯片性能、功耗和面积的“奠基者”。今天&#xff0c;我们就来深入探讨Placement的作用、重…

将FGUI的Shader全部预热后,WebGL平台没有加载成功

1&#xff09;将FGUI的Shader全部预热后&#xff0c;WebGL平台没有加载成功 2&#xff09;iOS如何确认内存扩展使用生效 3&#xff09;SpriteAtlasManager.atlasRequested延后一帧回调 4&#xff09;Unity如何使用Java 17打包 这是第442篇UWA技术知识分享的推送&#xff0c;精选…

Python二进制、八进制与十六进制高级操作指南:从底层处理到工程实践

引言&#xff1a;为何需要掌握进制操作&#xff1f;在现代计算领域&#xff0c;直接操作不同进制的数值是一项核心技术能力。根据2024年Stack Overflow开发者调查报告&#xff1a;73%的低级系统开发涉及位级操作65%的网络协议要求理解十六进制数据80%的硬件接口配置使用二进制控…

离线可用的网络急救方案

在使用电脑的过程中&#xff0c;经常会遇到断网的状况&#xff0c;这种情况让人十分头疼&#xff0c;很多时候我们都不知道去哪里找相关的教程来解决这样的问题。它能一键操作解决电脑的网络故障问题&#xff0c;最关键的是它是完全免费的。它只需解压就可以直接双击使用。把工…

华为云Stack环境中计算资源,存储资源,网络资源发放前的准备工作(中篇)

实验流程说明再上期文章链接如下&#xff1a; 华为云Stack环境中计算资源&#xff0c;存储资源&#xff0c;网络资源发放前的准备工作&#xff08;上篇&#xff09; 华为云Stack环境中计算资源&#xff0c;存储资源&#xff0c;网络资源发放前的准备工作&#xff08;中篇篇&am…

设置密钥连接服务器

要将本地电脑的 SSH 公钥添加到服务器登录&#xff0c;可按以下步骤操作&#xff0c;确保服务器仅允许密钥认证&#xff1a; 一、将本地公钥添加到服务器 &#xff08;前提&#xff1a;你已通过密码或现有方式能登录服务器&#xff0c;且本地已生成 SSH 密钥对&#xff09; 1. …

k8s笔记04-常用部署命令

Kubernetes&#xff08;K8s&#xff09;部署与版本管理命令笔记 一、部署核心命令分类与应用场景 K8s中用于应用部署、版本控制与实例扩缩容的核心命令主要包括三类&#xff0c;分别对应“版本回滚”“手动扩缩容”“自动扩缩容”场景&#xff0c;是CKA考试中部署类题目的核心考…

[系统架构设计师]知识产权(二十)

[系统架构设计师]知识产权&#xff08;二十&#xff09; 一.知识产权的特性 1.特性 无体性&#xff1a;抽象财富 专有性&#xff1a;权利人同意或法律规定外&#xff0c;权利人以外的任何人不得享有或使用该项权力 地域性&#xff1a;只能在该国范围内手法律保护 时间性&#x…

rk3566编译squashfs报错解决

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 编译开源的rk3566代码squashfs报错&#xff0c;tspi_linux_sdk_repo_20240131.tar.gz 下之前先读我 1.tspi_linux_sdk_20230916.tar.gz这个是之前老的没有git和repo的版本&#xff0c;后面会删除掉大家…