《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器

目录

一、vim程序编辑器的简介

二、命令模式快捷键(默认模式)

1、光标移动

2、编辑操作

3、搜索与替换

三、插入模式快捷键

四、底行模式快捷键(按:进入)

五、高级技巧

1、分屏操作

2、多文件编辑

3、可视化模式


一、vim程序编辑器的简介

1、在Linux的vi编辑器中,快捷键是提高编辑效率的关键。

2、vi是原始的文本编辑器,而vim(Vi IMproved)是vi的增强版,提供了更多的功能和快捷键。用户可能实际上使用的是vim。

vi有三种主要模式:命令模式、插入模式和底行模式。

二、命令模式快捷键(默认模式)

1、光标移动
捷键功能说明
h / 左移一个字符
j / 下移一行
k / 上移一行
l / 右移一个字符
w跳到下一个单词开头
b跳到上一个单词开头
e跳到当前单词结尾
0跳到行首(绝对行首)
^跳到行首的非空白字符
$跳到行尾
Ctrl + f向下翻页(Page Down)
Ctrl + b向上翻页(Page Up)
Ctrl + d向下滚动半屏
Ctrl + u向上滚动半屏
G跳到文件末尾
nG(如 5G跳到第 n 行
gg跳到文件开头
2、编辑操作
快捷键功能说明
i进入插入模式(光标前插入)
a进入插入模式(光标后插入)
o在当前行下方插入新行
O在当前行上方插入新行
x删除光标所在字符
dd删除整行
ndd(如 3dd删除 n 行
yy复制整行
nyy(如 3yy复制 n 行
p粘贴到光标后
P粘贴到光标前
u撤销上一次操作
Ctrl + r重做(恢复撤销)
J合并当前行和下一行
~切换光标所在字符的大小写
3、搜索与替换
快捷键功能说明
/pattern向前搜索 pattern
?pattern向后搜索 pattern
n跳到下一个匹配项
N跳到上一个匹配项
:%s/old/new/g全局替换 old 为 new
:%s/old/new/gc全局替换并确认每个替换

三、插入模式快捷键

快捷键功能说明
Esc退出插入模式,返回命令模式
Ctrl + o暂时退出插入模式,执行一个命令模式命令后返回

四、底行模式快捷键(按:进入)

快捷键功能说明
:w保存文件
:q退出编辑器(未修改时)
:q!强制退出(不保存修改)
:wq 或 :x保存并退出
:set nu显示行号
:set nonu隐藏行号
:set ts=4设置 Tab 为 4 个空格
:set expandtab将 Tab 转换为空格
:s/old/new/g替换当前行所有 old 为 new

五、高级技巧

1、分屏操作
  • :sp 或 :split:水平分屏。
  • :vs 或 :vsplit:垂直分屏。
  • Ctrl + w + h/j/k/l:在分屏间切换。
2、多文件编辑
  • :e filename:打开新文件。
  • :bn 或 :bp:切换到下一个/上一个文件。
3、可视化模式
  • v:进入字符可视化模式(选择文本)。
  • V:进入行可视化模式。
  • Ctrl + v:进入块可视化模式。

掌握这些快捷键后,你可以在 vi/vim 中实现高效的文本编辑。

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

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

相关文章

AI大白话(四):自然语言处理——AI是如何理解和生成人类语言的?

🌟引言: 专栏:《AI大白话》 AI大白话(一):5分钟了解AI到底是什么? AI大白话(二):机器学习——AI是怎么“学习“的? AI大白话(三):深度学习——AI的‘大脑‘是如何构建的? 大家好!欢迎回到"AI大白话"系列。前面我们聊了AI的基本概念、机器学习的原理…

扩展卡尔曼滤波

1.非线性系统的线性化 标准卡尔曼滤波 适用于线性化系统,扩展卡尔曼滤波 则扩展到了非线性系统,核心原理就是将非线性系统线性化,主要用的的知识点是 泰勒展开(我另外一篇文章的链接),如下是泰勒展开的公式…

安装unsloth

我在llamafactory微调LLM,简单测了一些(很不精准),加速方法中unsloth比flash_attention速度快了40%,显存占用减少15%; 创建虚拟环境:conda create -n env_name python3.10, 然后conda activate…

关于 51 单片机显示多个数码管时出现残影

残影现象&#xff1a; 出现残影代码&#xff1a; #include <REGX52.H> #include <INTRINS.H> void Delayxms(unsigned int x) //11.0592MHz {while(x){unsigned char i, j;_nop_();i 2;j 199; do{while (--j);} while (--i);x--;} } void DisplayDigitalNumb…

STM32学习笔记之常用外设接口(原理篇)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

InnoDB 引擎核心知识点

InnoDB 引擎核心知识点 6.1 逻辑存储结构 表空间&#xff08;Tablespace&#xff09;&#xff1a;所有数据逻辑上存储在一个表空间中&#xff0c;物理上可能由多个文件组成。段&#xff08;Segment&#xff09;&#xff1a;分为数据段&#xff08;B树叶子节点&#xff09;、索引…

深度学习 Deep Learning 第9章 卷积网络 CNN

深度学习 Deep Learning 第9章 卷积网络 章节概述 本章深入探讨了卷积网络的原理、变体及其在深度学习中的应用。卷积网络通过卷积操作实现了参数共享和稀疏连接&#xff0c;显著提高了模型的效率和性能。本章首先介绍了卷积操作的基本形式及其在不同数据维度上的应用&#x…

基于MATLAB的涡旋光和高斯光叠加产生平顶光

强度叠加耦合成平顶光&#xff0c;不发生干涉 通过分别生成高斯光和涡旋光的强度分布&#xff0c;然后按合适的权重将它们叠加&#xff0c;得到近似平顶光&#xff08;flat‐top beam&#xff09;的效果。由于我们只是将强度相加&#xff08;而非复振幅叠加&#xff09;&#…

wordpress-网站百宝箱插件

含置顶,网页宠物, 哀悼, 禁止复制, 禁止查看源码, 弹幕, WP优化,媒体分类,预加载,定时发布,在线客服, 留言板, 手机客服, 网站背景, 公告, 跑马灯, 水印, 分享, 打赏, 海报图, 广告,数据库管理,图片加载特效。等综合功能插件

北斗导航 | 基于北斗三号短报文通信的北斗-YOLO融合系统原理,算法公式,系统流程框图,matlab代码,应用场景

以下是关于基于北斗三号短报文通信的北斗-YOLO融合系统的详细解析,包含原理、算法公式、系统流程、Matlab代码框架和应用场景。一、系统原理 北斗-YOLO融合系统结合了北斗三号短报文通信(双向通信能力)和YOLO目标检测算法,用于在无地面网络覆盖区域实现实时目标检测与数据传…

Vue 中的日期格式化实践:从原生 Date 到可视化展示!!!

&#x1f4c5; Vue 中的日期格式化实践&#xff1a;从原生 Date 到可视化展示 &#x1f680; 在数据可视化场景中&#xff0c;日期时间的格式化显示是一个高频需求。本文将以一个邀请码关系树组件为例&#xff0c;深入解析 Vue 中日期格式化的 核心方法、性能优化 和 最佳实践…

试试智能体工作流,自动化搞定运维故障排查

APO 1.5.0版本全新推出的智能体工作流功能&#xff0c;让运维经验不再零散&#xff01;只需将日常的运维操作和故障排查经验转化为标准化流程&#xff0c;就能一键复用&#xff0c;效率翻倍&#xff0c;从此告别重复劳动&#xff0c;把时间留给更有价值的创新工作。更贴心的是&…

LeetCode-215. 数组中的第K个最大元素

1、题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1…

分布式光伏防逆流管理:技术要点与实践解析

在国家“双碳”目标推动下&#xff0c;分布式光伏作为新能源体系的重要组成部分&#xff0c;正迎来快速发展。国家能源局近期发布的《关于做好新能源消纳工作保障新能源高质量发展的通知》明确提出&#xff0c;需加强网源协调与调节能力&#xff0c;优化新能源利用率。其中&…

Ubuntu capolar 上实现内网穿透

在官网https://www.cpolar.com/ 注册用户&#xff0c;获取tocken 1.1 安装cpolar 在Ubuntu上打开终端&#xff0c;执行命令 首先&#xff0c;我们需要安装curl&#xff1a; sudo apt-get install curl 国内安装&#xff08;支持一键自动安装脚本&#xff09; curl -L htt…

【CSS】CSS 使用全教程

CSS 使用全教程 介绍 CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种样式表语言&#xff0c;用于描述 HTML 或 XML 文档的布局和外观&#xff0c;它允许开发者将文档的内容结构与样式表现分离&#xff0c;通过定义一系列的样式规则来控制网页…

Jenkins 集成 SonarQube 代码静态检查使用说明

环境准备 Jenkins 服务器 确保 Jenkins 已安装并运行&#xff08;推荐 LTS 版本&#xff09;。安装插件&#xff1a; SonarQube Scanner for Jenkins&#xff08;用于集成 SonarQube 扫描&#xff09;NodeJS Plugin&#xff08;可选&#xff0c;用于 JavaScript 项目&#xff0…

EasyRTC轻量级Webrtc音视频通话SDK,助力带屏IPC在嵌入式设备中的应用

一、市场背景 随着人们生活水平的提高&#xff0c;对于家居安全和远程监控的需求日益增长&#xff0c;带屏IPCam不仅满足了用户实时查看监控画面的需求&#xff0c;还提供了诸如双向语音通话、智能报警等丰富的功能&#xff0c;极大地提升了用户体验。 此外&#xff0c;技术的…

AI编辑器-Trae 玩转AI 编程

参考 掘金社区地址 Trae下载地址 管理插件 Trae 从入门到实践:AI 编码的妙笔生花 掘金社区 掘金社区简介 掘金是面向全球中文开发者的技术内容分享与交流平台。我们通过技术文章、沸点、课程、直播等产品和服务,打造一个激发开发者创作灵感,激励开发者沉淀分享,陪伴开发者…

C语言代码如何操作硬件?

在嵌入式开发中&#xff0c;C代码通过直接操作硬件寄存器来控制硬件&#xff0c;这些寄存器被映射到特定的内存地址。以下是其工作原理的详细分步解释&#xff1a; 1. 内存映射硬件寄存器 微控制器将外设&#xff08;如GPIO、定时器、UART等&#xff09;的寄存器映射到内存地…