Linux vi/vim 教程

文章目录

  • 【 1. vi/vim 的三种模式 】
    • 1.1 命令模式
    • 1.2 输入模式
    • 1.3 底线命令模式
  • 【 2. 实例 】
  • 【 3. vim 的其他命令 】

  • 所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在。
  • 目前我们使用比较多的是 vim 编辑器。vim 从 vi 发展出来,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

【 1. vi/vim 的三种模式 】

  • 基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。
    在这里插入图片描述

1.1 命令模式

  • 用户刚刚启动 vi/vim, 默认进入命令模式(也称普通模式)
  • 此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。
  • 命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。
  • 以下是命令模式常用的几个命令:
命令作用
i切换到输入模式,在光标当前位置开始输入文本。
: (英文冒号)切换到底线命令模式,以在最底一行输入命令。
x删除当前光标所在处的字符。
a进入插入模式,在光标下一个位置开始输入文本。
o在当前行的下方插入一个新行,并进入插入模式。
O在当前行的上方插入一个新行,并进入插入模式。
dd删除当前行。
yy复制当前行。
p(小写)粘贴剪贴板内容到光标下方。
P(大写)粘贴剪贴板内容到光标上方。
u撤销上一次操作。
Ctrl + r重做上一次撤销的操作。
:w保存文件。
:q退出 Vim 编辑器。
:q!强制退出Vim 编辑器,不保存修改。

1.2 输入模式

  • 输入模式中,常用操作:
操作作用
Esc退出输入模式,切换到命令模式
字符按键以及Shift组合输入字符
Enter回车键,换行
Backspace退格键,删除光标前一个字符
Delete删除键,删除光标后一个字符
方向键在文本中移动光标
HOME/END移动光标到行首/行尾
Page Up/Page Down上/下翻页
Insert切换光标为输入/替换模式,光标将变成竖线/下划线

1.3 底线命令模式

  • 底线命令模式可用的命令非常多。
  • 按 ESC 键可随时退出底线命令模式。
  • 在底线命令模式中,常用的命令有(已经省略了冒号):
命令作用
:w保存文件。
:q退出 Vim 编辑器。
:wq保存文件并退出 Vim 编辑器。
:q!强制退出Vim编辑器,不保存修改。

【 2. 实例 】

  • 1. 进入到 vi/vim
    在 Shell 中输入如下命令,默认进入 命令模式。
vi  test.txt


在这里插入图片描述

当对话框中下方显示 New File 时,则表示此文件不存在,vim 编辑器新建了一个文件。如果没有显示,New File则表示文件存在。

  • 2. 进入输入模式
    按下 i 进入输入模式。这个时候,键盘上除了 Esc 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以我们可以进行任何的编辑。
    在这里插入图片描述
  • 3. 返回命令模式
    按下 Esc 这个按钮即可,马上我们就会画面左下角的 – INSERT – 不见了,即可以表示进入了命令模式。
    在这里插入图片描述
  • 4. 在命令模式中按下 :wq 再换行表示储存后离开 vim
    在这里插入图片描述
  • 5. 最后返回到 Shell
    在这里插入图片描述

【 3. vim 的其他命令 】

Linux vi/vim

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

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

相关文章

STM32G030C8T6:USART串口通信(中断)

本专栏记录STM32开发各个功能的详细过程,方便自己后续查看,当然也供正在入门STM32单片机的兄弟们参考; 本小节的目标是,系统主频64 MHZ,采用高速外部晶振,通过芯片PB6,PB7 的USART1 口,实现串口通信。 原理…

Docker nginx容器代理播放m3u8视频文件(HLS)

文章目录 Docker Nginx容器代理播放M3U8文件教程获取Nginx Docker镜像设置Nginx配置文件用 ffmpeg 将 MP4 文件转换成 m3u8 文件运行Docker容器测试M3U8流其他问题我用vlc都能播放http://192.168.121.50/forest4kTest.m3u8和http://192.168.121.50/forest4kTest.mp4&#xff0c…

用opencv的DNN模块做Yolov5目标检测(纯干货,源码已上传Github)

最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的。于是,我就想着编写一套用opencv的dnn模块做yolov5目标检测的程序。在编写这套程序时,遇到的bug和解决办法&#xff0c…

机器学习:手撕 AlphaGo(二)

计算机下围棋的问题描述请见上篇:机器学习:手撕 AlphaGo(一)-CSDN博客 3. MCTS 算法介绍 MCTS(Monte Carlo Tree Search) 算法的中文名称叫做蒙特卡洛树搜 索。第一次接触这个算法时,便惊叹于它…

Java 说一下 synchronized 底层实现原理?

Java 说一下 synchronized 底层实现原理? synchronized 是 Java 中用于实现同步的关键字,它保证了多个线程对共享资源的互斥访问。底层实现涉及到对象头的 Mark Word 和锁升级过程。 synchronized 可以用于方法上或代码块上,分别对应于方法…

Ubuntu 本地部署 ChatGPT-Next-Web

Ubuntu 本地部署 ChatGPT-Next-Web 文章目录 Ubuntu 本地部署 ChatGPT-Next-Web ChatGPT-Next-Web 项目地址:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 本文主要演示如何在 Ubuntu 本地(默认是端口 3000)部署 ChatGPT-Next-Web&am…

使用 Docker Compose 部署 Docker Registry

在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。…

[SwiftUI]工程最低适配iOS13

问题: 新建工程,选择最低支持iOS13报错: main() is only available in iOS 14.0 or newer Scene is only available in iOS 14.0 or newer WindowGroup is only available in iOS 14.0 or newer 解决: 注释掉上面代码&#x…

分布式系统架构设计之分布式缓存技术选型

一、概述 随着互联网业务的快速发展,分布式系统已经成为了解决大规模并发请求、高可用性、可扩展性等问题的重要手段。在分布式系统中,缓存作为提高系统性能的关键技术,能够显著降低数据库负载、减少网络延迟、提高数据访问速度。当面对大量…

jetson orin配置yolov8运行环境

配置yolov8环境 当前jetpack版本为5.1.1,对应的torch为1.14.0版本,torchvision版本为0.14.1,CUDA版本为11.4.315.opencv with cuda 版本4.5.4,tensorrt版本5.1.1。pytorch1.12.0 torchvision0.13.0 具体对应关系查看https://foru…

eureka注册列表 某服务出现多个服务实例

最近文件导出功能偶发成功,大部分情况都失败,开始以为接口被拦截,gateway服务没有接口调用日志,发现测试环境可以,正式环境功能无法正常使用。 偶然看到注册中心如下 发现file服务有3个实例,调用接口将错误…

基于单片机的农田灌溉系统(论文+源码)

1.系统设计 本系统主要实现如下目标: 1.可以实时监测土壤湿度; 2.土壤湿度太低时,进行浇水操作; 3.可以按键设置湿度的触发阈值; 4. 可以实现远程操控 5.可以实现手…

Vue中使用Element UI的Table组件实现嵌套表格(最简单示例)

以下是一个简单的示例代码&#xff0c;演示如何在Vue中使用Element UI的Table组件实现嵌套表格&#xff1a; html <template><div><el-table :data"tableData" style"width: 100%"><el-table-column prop"name" label&quo…

安卓作业002 - 用户登录窗口

文章目录 安卓作业002 - 用户登录窗口一、界面设计思路二、涉及的知识点概览三、界面实现步骤四、启动应用查看结果五、任务完成总结安卓作业002 - 用户登录窗口 利用到布局嵌套实现复杂界面居中对齐,利用线性布局的gravity属性标签、编辑框、按钮三种控件编辑框的提示信息,利…

实习记录留存

0.前提 实习结束了我留个档方便以后查看 校内实习玩具_哔哩哔哩_bilibili 不如这个爽 带兄弟们飙车_哔哩哔哩_bilibili

第九节HarmonyOS 常用基础组件6-progress

1、描述 进度条组件用于显示内容加载或操作处理等进度。 2、接口 Progress(options:{value:number,total?Number, type?:ProgressType}) 参数&#xff1a; 参数名 参数类型 必填 参数描述 value number 是 指定当前进度值。设置小于0的数值时置为0&#xff0c;设置…

各银行小微企业信贷相关产品和机器学习建模案例

各银行小微企业贷款业务 互联网的时代&#xff0c;大量新信息技术的涌现和网络的无处不在&#xff0c;想要抢占这片金融天地&#xff0c;必须重视小微金融业务&#xff0c;小微企业是一直具有重大潜力的客户&#xff0c;商业银行、消金公司发展小微信贷业务可以拓宽自身客户群…

嵌入式系统复习--基于ARM的嵌入式程序设计

文章目录 上一篇编译环境ADS编译环境下的伪操作GNU编译环境下的伪操作ARM汇编语言的伪指令 汇编语言程序设计相关运算操作符汇编语言格式汇编语言程序重点C语言的一些技巧 下一篇 上一篇 嵌入式系统复习–Thumb指令集 编译环境 ADS/SDT IDE开发环境&#xff1a;它由ARM公司开…

西电期末1025.平滑滤波

一.题目 二.分析与思路 别光看公式&#xff0c;读题干&#xff1a;“位置i的输出为距离i最近的三个输入的平均值”&#xff0c;再看示例&#xff0c;输入几个&#xff0c;输出几个&#xff0c;所以就是输出每个位置距离最近的三个输入的平均值&#xff0c;中间没什么问题&…

HarmonyOS 应用开发学习笔记 状态管理概述

移动端开发&#xff0c;最重要的一点就是数据的处理&#xff0c;并且正确的显示渲染UI。 变量在页面和组件、组件和组件之间有时候并不能实时共享&#xff0c;而有时候&#xff0c;又不需要太多的作用域&#xff08;节省资源&#xff09;&#xff0c;作用就需要根据不同场景&am…