【Linux 04】编辑器 vim 详细介绍
文章目录
- 🌈 Ⅰ 基本概念
- 🌈 Ⅱ 基本操作
- 1. 进入 / 退出 vim
- 2. vim 模式切换
- 🌈 Ⅲ 命令模式
- 1. 光标的移动
- 2. 复制与粘贴
- 3. 剪切与删除
- 4. 撤销与恢复
- 🌈 Ⅳ 底行模式
- 1. 保存文件
- 2. 查找字符
- 3. 退出文件
- 4. 替换内容
- 5. 显示行号
- 6. 外部命令
- 7. 多文件操作
- 🌈 Ⅴ 异常退出
🌈 Ⅰ 基本概念
- vim 是一种 Linux 专门用来编写代码的多模式文本编辑器工具。
- vim 分别有命令、插入、底行三种模式,其功能区分如下:
1.命令模式
- 也称为 [ 普通模式 ] 或 [ 正常模式 ]。
- 不能直接对文件进行编辑,只能通过快捷键进行对文本的编辑控制。
2. 插入模式
- 在该模式下才可以对文本进行编辑,也就是俗称的编辑模式。
3. 底行模式
- 对文件的保存或退出,也能用来进行文件替换,找字符串,列出行号等操作。
- 在命令模式下,按下 shift + ; (也就是冒号 : ) 即可进入该模式。
🌈 Ⅱ 基本操作
1. 进入 / 退出 vim
进入 vim
- 输入 vim + 文件名后就会进入对该文件的编辑界面。
- 在进入 vim 之后,默认处于 [ 命令模式 ],切换到 [ 插入模式 ] 才能编辑该文本。
退出 vim
在 [ 底行模式 ] 下输入下列指令,就能以不同的方式退出 vim。
- q:未修改文件时,直接退出。
- q!:修改过文件时,不进行保存,强制退出。
- wq:修改过文件时,保存对文件的编辑然后退出。
2. vim 模式切换
- 注意:[ 插入模式 ] 与 [ 底行模式 ] 无法直接进行切换,需要借助 [ 命令模式 ] 进行中转。
1. 切换至命令模式
- 进入 vim 时,默认处于 [ 命令模式 ]。
- 如果处在 [ 插入模式 ] 或者 [ 底行模式 ] 时,直接按下 ESC即可。
2. 切换至插入模式
- 在 [ 命令模式 ] 下,直接按下以下指令就能以不同的形式进入 [ 插入模式 ] 。
| 选项 | 说明 |
|---|---|
| i | 在光标所在字符的前面开始插入 |
| a | 在光标所在字符的后面开始插入 |
| o | 在光标所在行的下一行开始插入 |
| l | 在光标所在行的头部开始插入,若头部有空格则在空格后插入 |
| A | 在光标所在行的末尾开始插入 |
| O | 在光标所在行的上一行开始插入 |
| S | 删除光标所在行并开始插入 |
3. 切换至底行模式
- 在英文输入法的前提下输入shift + 分号 ; 就是输入冒号 : 而已。
🌈 Ⅲ 命令模式
- 以下操作都是在 [ 命令模式 ] 下使用快捷键进行的。
1. 光标的移动
- 现有一个光标处在如下位置的文件,可以在命令模式下执行对应指令移动光标。
移动光标指令
- h:将光标向左移动
- j:将光标向下移动
- k:将光标向上移动
- l:将光标向右移动
- w:以单词为单位进行光标后移
- b:以单词为单位进行光标前移
- ^:将光标移动到光标所在行的开头
- $:将光标移动到光标所在行的结尾
- gg:将光标移动到当前文件的首行
- G:将光标移动到当前文件的尾行
- ctrl + b:向上翻屏,前提是文件内容够多
- ctrl + f:向下翻屏。前提是文件内容够多
- 数字 + G:将光标移动到指定行
2. 复制与粘贴
复制
- 复制单行:yy,复制当前光标所在行
- 复制多行:数字 + yy,从光标指定行开始向下复制指定行数。
粘贴
- 粘贴单次:p,从光标当前所处位置的下一行开始粘贴。
- 粘贴多次:数字 + p,将复制的内容粘贴指定次。
示例:使用 2 + yy 从第五行开始向下复制两行,然后使用 3 + p,将复制的内容粘贴三遍在第六行的下一行。
3. 剪切与删除
剪切
- 剪切单行:
- dd,剪切光标所在行,同时将下一行上移填补被剪切的空缺。
- d,只剪切光标所在行,但后面内容不会上移。
- 剪切多行:数字 + dd,从光标所在行向下剪切指定行,后面行会上移。
删除
- 删除整行:剪切之后不粘贴自然就是删除了。
- 行内往后局部删除
- x:删除光标后面的一个字符。
- 数字 + x:在一行内,删除从光标处开始往后的 n 个字符。
- 行内往前局部删除
- X:删除光标前面的一个字符。
- 数字 + X:在一行内,删除光标前的 n 个字符。
4. 撤销与恢复
撤销
- u:撤销上一步执行的操作,类似于 Windows 的 ctrl + z
恢复
- ctrl + r:取消之前执行的撤销操作,类似于 Windows 的 ctrl + y
🌈 Ⅳ 底行模式
- 注意:在执行下面的操作前需要先输入英文的冒号 : 进入底行模式。
1. 保存文件
- w:保存当前文件。
- w 文件路径:另存为指定文件。
2. 查找字符
- /关键字:往后查找第一个匹配的关键字。
- ?关键字:往前查找第一个匹配的关键字。
3. 退出文件
- q:若未对文件进行修改,可直接使用 q 退出文件。
- q!:若已对文件进行修改,不保存并且强制退出文件。
- wq:保存并退出当前文件
4. 替换内容
现有一份初始内容如下的文件:
- s/搜索的内容/指定内容:用指定内容替换光标所在行 第一个 被搜索到的内容。
- s/搜索的内容/指定内容/g:用指定内容替换 光标所在行 全部被搜多到的内容。
- %s/搜索的内容/指定内容:用指定内容替换 整个文件 每一行第一个被搜索到的内容。
- %s/搜索的内容/指定内容/g:用指定内容替换整个文件 全部 被搜索到的内容。
5. 显示行号
- set nu:显示的行号是暂时的,下次再打开该文件时不会显示。
6. 外部命令
- 可以不用退出 vim 在命令行执行基本操作指令。
- 在 vim 界面的底行模式可以使用 ! 指令 的方式调用外部命令。
7. 多文件操作
- 在当前文件工作时,vim 不能像 vs 那样直接切换到其他文件进行操作 。
- 此时可以使用 vs 文件名,分屏打开其他文件进行操作。
- 分频模式下如何编辑文件:光标在哪个文件就是对哪个文件进行操作。
- 切换光标 (切换操作文件):ctrl + ww
🌈 Ⅴ 异常退出
- 编辑中的文件未保存直接退出就是异常退出。
- 见的最多的异常退出就是在命令模式下不小心 ctrl + z 之后,之后再打开文件就会出现以下情况。
1. 临时解决
- 按下 q 之后出现以下信息,输入 E 或者 R 就能进入文件,但是之后还是会出现该提示。
2. 永久解决
- 异常退出只是将 vim 暂停,此时 vim 变成了一个后端任务,并没有真的退出。一个 Linux 文件只能被一个程序打开。
- 在异常退出 vim 时,vim 会自动在当前目录下生成一个隐藏的==.swp 临时文件==方便恢复数据。
- 这个临时文件会一直占着 vim,只要删除该临时文件即可。
隐藏文件的名字已经在提示时给出了。
- 知道了隐藏文件的名字之后只需要使用 rm 指令删除该文件即可。
相关文章:
【Linux 04】编辑器 vim 详细介绍
文章目录 🌈 Ⅰ 基本概念🌈 Ⅱ 基本操作1. 进入 / 退出 vim2. vim 模式切换 🌈 Ⅲ 命令模式1. 光标的移动2. 复制与粘贴3. 剪切与删除4. 撤销与恢复 🌈 Ⅳ 底行模式1. 保存文件2. 查找字符3. 退出文件4. 替换内容5. 显示行号6. 外…...
KMP算法详解
1. 问题引入 链接:leetcode_28 题目:s1字符串是否包含s2字符串,如果包含返回s1中包含s2的最左开头位置,不包含返回-1 暴力方法就是s1的每个位置都做开头,然后去匹配s2整体,时间复杂度O(n*m) KMP算法可以…...
ubuntu22.04@laptop OpenCV Get Started: 013_contour_detection
ubuntu22.04laptop OpenCV Get Started: 013_contour_detection 1. 源由2. 应用Demo2.1 C应用Demo2.2 Python应用Demo 3. contour_approx应用3.1 读取图像并将其转换为灰度格式3.2 应用二进制阈值过滤算法3.3 查找对象轮廓3.4 绘制对象轮廓3.5 效果3.6 CHAIN_APPROX_SIMPLE v.s…...
[ai笔记5] 个人AI资讯助手实战
欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第5篇分享,也是把ai场景化应用的第一篇实操内容! 既然要充分学习和了解ai,自然少不了要时常看看ai相关资讯,所以今天特地用字节的“扣子”做了一个ai的资讯…...
QT+OSG/osgEarth编译之八十九:osgdb_ply+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_ply)
文章目录 一、osgdb_ply介绍二、文件分析三、pro文件四、编译实践一、osgdb_ply介绍 斯坦福三角形格式(Stanford Triangle Format)是一种用于存储三维模型数据的文件格式,也称为 PLY 格式。它最初由斯坦福大学图形实验室开发,用于存储和共享三维扫描和计算机图形数据。 P…...
机器人专题:我国机器人产业园区发展现状、问题、经验及建议
今天分享的是机器人系列深度研究报告:《机器人专题:我国机器人产业园区发展现状、问题、经验及建议》。 (报告出品方:赛迪研究院) 报告共计:26页 机器人作为推动工业化发展和数字中国建设的重要工具&…...
算法沉淀——哈希算法(leetcode真题剖析)
算法沉淀——哈希算法 01.两数之和02.判定是否互为字符重排03.存在重复元素04.存在重复元素 II05.字母异位词分组 哈希算法(Hash Algorithm)是一种将任意长度的输入(也称为消息)映射为固定长度的输出的算法。这个输出通常称为哈希…...
深入理解Redis哨兵原理
哨兵模式介绍 在深入理解Redis主从架构中Redis 的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave&#…...
MySQL-存储过程(PROCEDURE)
文章目录 1. 什么是存储过程?2. 存储过程的优点3. MySQL中的变量3.1 系统变量3.2 用户自定义变量3.3 局部变量 4. 存储过程的相关语法4.1 创建存储过程(CREATE)4.2 查看存储过程(SHOW)4.3 修改存储过程(ALT…...
linux系统监控工具prometheus的安装以及监控mysql
prometheus 安装服务端客户端监控mysql prometheus浏览器查看 安装 https://prometheus.io/download/下载客户端和服务端以及需要监控的所有的包服务端 官网下载下载prometheustar -xf prometheus-2.47.2.linux-amd64.tar.gz -C /usr/local/ cd /usr/local/ mv prometheus-2.…...
初识tensorflow程序设计模式
文章目录 建立计算图tensorflow placeholdertensorflow数值运算常用的方法 tensorboard启动tensorboard的方法 建立一维与二维张量建立一维张量建立二维张量建立新的二维张量 矩阵的基本运算矩阵的加法矩阵乘法与加法 github地址https://github.com/fz861062923/TensorFlow 建…...
【QT+QGIS跨平台编译】之三十八:【GDAL+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、gdal介绍二、文件下载三、文件分析四、pro文件五、编译实践一、gdal介绍 GDAL(Geospatial Data Abstraction Library)是一个用于读取、写入和处理地理空间数据的开源库。它支持多种栅格和矢量地理空间数据格式,包括常见的GeoTIFF、Shapefile、NetCDF、HDF5等,…...
黑马鸿蒙教程学习1:Helloworld
今年打算粗略学习下鸿蒙开发,当作兴趣爱好,通过下华为那个鸿蒙开发认证, 发现黑马的课程不错,有视频和完整的代码和课件下载,装个devstudio就行了,建议32G内存。 今年的确是鸿蒙大爆发的一年呀,…...
蓝桥杯每日一题------背包问题(四)
前言 前面讲的都是背包的基础问题,这一节我们进行背包问题的实战,题目来源于一位朋友的询问,其实在这之前很少有题目是我自己独立做的,我一般习惯于先看题解,验证了题解提供的代码是正确的后,再去研究题解…...
OpenAI发布Sora技术报告深度解读!真的太强了!
😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:洲与AI。 🎈 本文专栏:本文收录…...
AJAX——接口文档
1 接口文档 接口文档:描述接口的文章 接口:使用AJAX和服务器通讯时,使用的URL,请求方法,以及参数 传送门:AJAX阶段接口文档 <!DOCTYPE html> <html lang"en"><head><meta c…...
leetcode hot100不同路径
本题可以采用动态规划来解决。还是按照五部曲来做 确定dp数组:dp[i][j]表示走到(i,j)有多少种路径 确定递推公式:我们这里,只有两个移动方向,比如说我移动到(i,j&#x…...
【前端工程化面试题目】webpack 的热更新原理
可以在顺便学习一下 vite 的热更新原理,请参考这篇文章。 首先有几个知识点需要明确 热更新是针对开发过程中的开发服务器的,也就是 webpack-dev-serverwebpack 的热更新不需要额外的插件,但是需要在配置文件中 devServer属性中配置&#x…...
不花一分钱,在 Mac 上跑 Windows(M1/M2 版)
这是在 MacOS M1 上体验最新 Windows11 的效果: VMware Fusion,可以运行 Windows、Linux 系统,个人使用 licence 免费 安装流程见 👉 https://zhuanlan.zhihu.com/p/452412091 从申请 Fusion licence 到下载镜像,再到…...
Attempt to call an undefined function glutInit
Attempt to call an undefined function glutInit 解决方法: 从这里下载PyOpenGL 的whl安装文件, https://drive.google.com/drive/folders/1mz7faVsrp0e6IKCQh8MyZh-BcCqEGPwx 安装命令举栗 pip install PyOpenGL-3.1.7-cp39-cp39-win_amd64.whl pi…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
Python异步编程:深入理解协程的原理与实践指南
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…...














