Linux编辑器-vim使用

文章目录

  • 前言
  • 一、vim编辑器
    • 1、vim的基本概念
    • 2、vim的基本操作
      • 2.1 命令模式切换至插入模式
      • 2.2 插入模式切换至命令模式
      • 2.3 命令模式切换至底行模式
    • 3、vim命令模式命令集
      • 3.1 移动光标
      • 3.2 删除文字
      • 3.3 复制与粘贴
      • 3.4 替换
      • 3.5 撤销上一次操作
      • 3.6 更改
      • 3.7 跳至指定的行
    • 4、vim末行模式命令集
      • 4.1 显示行号
      • 4.2 跳到文件中的某一行
      • 4.3 查找字符
      • 4.4 保存文件
      • 4.5 分屏显示
      • 4.6 不离开vim执行指令
      • 4.6 离开vim
    • 5、vim配置
      • 5.1 配置文件的位置


前言

我们知道之前我们在VS下写的.c文件要变成计算机硬件可以识别的二进制文件,需要经过以下的过程。
在这里插入图片描述
我们使用VS开发工具在运行时感觉一瞬间.c文件就被编译成了可执行程序,这是因为VS为集成开发环境。集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列。


一、vim编辑器

在Linux中,我们编译代码就需要一步一步进行,今天我们介绍的是Linux中的vim编辑器。
Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。

1、vim的基本概念

vim编辑器有好多模式,这一次我们先介绍三个入门级别的模式,分别是命令模式(command mode)、插
入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
正常/普通/命令模式(Normal mode):
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

插入模式(Insert mode):
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁
的编辑模式。

底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模
式。要查看你的所有模式:打开vim,底行模式直接输入::help vim-modes

当我们在安装了vim编辑器(Linux系统基本都自动安装了)后,在目录下输入vim指令,会显示如下的界面,这就说明vim编辑器是安装成功的。(此时想要退出vim的话,shift + : 进入底行模式,然后输入q按回车即可回到目录界面。
在这里插入图片描述
此时我们可以创建一个文件,然后使用vim打开,此时我们进入的是vim的命令模式,此模式下我们可以按shift + : 进入底行模式,也可以按 i 进入插入模式。在插入模式下可以进行代码编辑,如果代码编辑完成,此时可以按esc按钮退出插入模式,回到命令模式。然后按shift + : 进入底行模式,输入wq!按下回车就将刚刚编辑的代码进行保存并退出了。
在这里插入图片描述
所以这三个模式简单表示就是如图所示的关系。
在这里插入图片描述

2、vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面。
在这里插入图片描述

2.1 命令模式切换至插入模式

此时处于vim的命令模式,如果想要进入插入模式,可以按需求输入以下命令。进入插入模式后,vim的左下角会显示出 – INSERT – 字母。
(1). 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
(2). 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
(3). 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2.2 插入模式切换至命令模式

如果想要退出插入模式,此时直接按ESC键即可。并且想要从底行模式退回到命令模式也是按ESC键。

2.3 命令模式切换至底行模式

按 shift + ;即可切换到底行模式。此时vim的左下角会显示出:号,然后可以输入如下选项进行操作。
(1). w (保存当前文件)
(2). wq (输入 wq ,存盘并退出vim)
(3). q! (输入 q! ,不存盘强制退出vim)
(4). wq! (输入 wq! ,表示强制存盘并退出vim)

3、vim命令模式命令集

3.1 移动光标

vim可以直接用键盘上的上下左右键来移动光标,但正规的vim是用小写英文字母「h」、「j」、「k」、
「l」,分别控制光标左、下、上、右移移动。
在这里插入图片描述
按[ shift + g ]:移动到代码的最后
按[ shift + 4 ]:移动到光标所在行的“行尾”
按[ shift + 6 ]:移动到光标所在行的“行首”
按[ w ]:光标跳到下个字的开头,即光标以单词为单位向后移动
按[ e ]:光标跳到下个字的字尾
按[ b ]:光标回到上个字的开头,即光标以单词为单位向前移动
按[ #l ]:光标移到该行的第#个位置,如:5l光标向后移5位,10l光标会向后移10位。
按[ gg ]:光标回到文本的开始
按[ shift+g ]:光标回到文本的末尾
按[ # shift + g]:光标定位到#行
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页

3.2 删除文字

「x」:每按一次,删除光标所在位置的一个字符,即从左向右删
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「shift + x」:shift + x,每按一次,删除光标所在位置的“前面”一个字符,即从右向左删
「# shift + x」:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」:删除(剪切)光标所在行,dd可以配合p使用完成剪切和粘贴操作
「#dd」:从光标所在行开始删除(剪切)#行

3.3 复制与粘贴

「yw」:将光标所在之处到该单词尾的字符复制到缓冲区中。
「#yw」:复制#个单词到缓冲区。
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完
成复制与粘贴功能。

3.4 替换

「r」:替换光标所在处的一个字符(按一次r就只能替换一次,然后再输入字符就可能会触发其它操作了)
「# r」:替换光标所在处开始向后的#个字符,例如 [ 4 r w ]会将光标开始向后的4个字符变为w
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。vim左下角会有-- REPLACE --提示
「shift + ~」:将光标处的字母进行大小写切换(大写变小写,小写变大写),并且按一次向后切换一次

3.5 撤销上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复。
「ctrl + r」: 撤销刚才执行的u恢复。

3.6 更改

「cw」:更改光标所在处的单词(会先将原单词直接删除,然后在原单词位置处开始写入新内容)
「c#w」:例如,「c3w」表示更改3个单词(会先将光标向后的三个单词删除,然后在原单词位置处开始写入新内容

3.7 跳至指定的行

「ctrl + g」:列出光标所在行的行号,会将信息显示在左下角
「# shift + g」:例如,「15 shift + g」,表示移动光标至文章的第15行行首。

4、vim末行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「shift + ;」即可进入末行模式。

4.1 显示行号

「set nu」: 输入「set nu」后按回车,会在文件中的每一行前面显示行号。
「set nonu」: 输入「set nonu」后按回车,会取消行号的显示。

4.2 跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键后光标就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

4.3 查找字符

「/ 关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按
「n」会往后寻找到您要的关键字为止。
「? 关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直
按「n」会往前寻找到您要的关键字为止。

4.4 保存文件

「w」: 在冒号后输入字母「w」就可以将文件保存起来

4.5 分屏显示

**「vs + 文件名」: 在冒号后输入vs + 文件名可以进行分屏显示两个文件。
「ctrl + ww」:在插入模式下,按住ctrl不动,按两下ww可以实现光标在分屏之间的切换。 **

4.6 不离开vim执行指令

「!ls -l」: 在冒号后面输入「!ls -l」可以不退出vim而执行改命令查看文件列表,按回车返回。
「!gcc + 文件名」: 输入「!gcc + 文件名」可以不退出vim就编译文件,按回车返回

4.6 离开vim

「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
「wq!」:[wq!]为将文件保存后强制离开vim。

5、vim配置

5.1 配置文件的位置

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。
在这里插入图片描述

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

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

相关文章

论文浅尝 | 思维树:使用大语言模型反复思考解决问题

笔记整理:许泽众,浙江大学博士,研究方向为知识图谱上的神经符号推理 链接:https://arxiv.org/abs/2305.10601 1. 动机 语言模型是一种强大的工具,可以用于各种需要数学、符号、常识或知识推理的任务。然而,…

请体验一下falcon 180b 大语言模型的感觉

引言 由Technology Innovation Institute(T四训练的开源大模型Falcon 180B登陆Hugging Face!Falcon180B为开源大模型树立了全新的标杆。作为当前最大的开源大模型,有l80B参数并且是在在3.5万亿token的TII RefinedWeb数据集上进行训练,这也是目前…

列表和字典练习

定义四个学生信息 在Python环境下,用列表定义: >>> stu1[xiaoming,True,21,79.9] >>> stu1[lihong,False,22,69.9] >>> stu1[zhangqiang,True,20,89.9] >>> stu1[EMT,True,23,99.9]如图,定义了四个列表…

Redis高效、安全的不停机数据迁移方案

Redis是目前最流行的键值对存储数据库,凭借高性能和丰富的数据类型的特性,不仅可以作为缓存,还可以作为一个可持久化的数据库存储。随着业务的发展和版本的迭代,必然会遇到内存不足、集群节点不够和BUG等一系列问题。为了防止这些…

深入理解JVM虚拟机第三篇:JVM的指令集架构模型和JVM的生命周期

文章目录 一:JVM的指令集架构模型 1:基于栈式架构的特点 (1):什么叫零地址指令、一地址指令、二地址指令、三地址指令? (2):为什么说不需要硬件支持,可移植性好? 2:基于寄存…

基于Elasticsearch的多文档检索 比如 商品(goods)、案例(cases)

概述 Elasticsearch多文档聚合检索 详细 记得把这几点描述好咯:需求(要做什么) 代码实现过程 项目文件结构截图 演示效果 应用场景 我们需要在五种不同的文档中检索数据。 比如 商品(goods)、案例(ca…

1014. 最佳观光组合

1014. 最佳观光组合 原题链接:完成情况:解题思路:参考代码: 原题链接: 1014. 最佳观光组合 https://editor.csdn.net/md/?not_checkout1&spm1000.2115.3001.5352 完成情况: 解题思路: …

【DevOps核心理念基础】3. 敏捷开发最佳实践

一、敏捷开发最佳实践 1.1 项目管理 1.2 需求管理 1.3 技术架构 1.4 技术开发 1.5 测试 二、敏捷开发最佳实践 2.1 敏捷开发的执行细节 三、全面的DevOps工具链 四、版本控制和协作开发工具 4.1 集中式版本控制工具 4.2 分布式版本控制工具 一、敏捷开发最佳实践 …

房地产小程序 | 小程序赋能,房地产业务数字化升级

随着科技的不断发展,房地产行业正逐渐向数字化转型。在这个过程中,房地产小程序成为了一种重要的工具,可以帮助房地产企业提供更好的购房体验、增加销售额,并实现管理的便捷化。 优点 便捷购房体验:房地产小程序为用户…

使用mybatis批量插入数据

最近在做项目的时候&#xff0c;有些明细数据&#xff0c;一条一条的插入太费资源和时间&#xff0c;所以得需要批量插入&#xff0c;今晚闲来无事写个小demo。 新建工程 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis…

如何实现微服务

一、问题拆解 1.1、客户端如何访问这些服务 原来的Monolithic方式开发&#xff0c;所有的服务都是本地的&#xff0c;UI可以直接调用&#xff1b;现在按功能拆分成独立的服务&#xff0c;跑在独立的虚拟机上的Java进程了。客户端UI如何访问他的&#xff1f; 后台有N个服务&a…

计算机毕业设计 高校课程评价系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

redis安装部署

文章目录 准备工作下载安装包修改配置文件命令常用配置信息 准备工作 检查linux系统是否安装了相关的编译工具 要检查 Linux 系统上是否已经安装了编译工具&#xff0c;可以执行以下命令&#xff1a; 检查 GCC 是否安装&#xff1a;在终端窗口中运行 gcc --version 命令&#…

CTFhub_SSRF靶场教程

CTFhub SSRF 题目 1. Bypass 1.1 URL Bypass 请求的URL中必须包含http://notfound.ctfhub.com&#xff0c;来尝试利用URL的一些特殊地方绕过这个限制吧 1.利用?绕过限制urlhttps://www.baidu.com?www.xxxx.me 2.利用绕过限制urlhttps://www.baidu.comwww.xxxx.me 3.利用斜…

ARM Linux DIY(八)USB 调试

前言 V3s 带有一个 USB 接口&#xff0c;将其设置为 HOST 或 OTG 模式&#xff0c;这样可以用来接入键盘、鼠标等 USB 外设。 USB 简介 USB 有两种设备&#xff1a;HOST 和 USB 功能设备。 在 USB2.0 中又引入了一个新的概念 OTG&#xff0c;即设备角色可以动态切换。 切换方…

技术架构图是什么?和业务架构图的区别是什么?

技术架构图是什么&#xff1f; ​技术架构图是一种图形化工具&#xff0c;用于呈现软件、系统或应用程序的技术层面设计和结构。它展示了系统的各种技术组件、模块、服务以及它们之间的关系和交互方式。技术架构图关注系统内部的技术实现细节&#xff0c;以及各个技术组件之…

python+selenium基于po模式的web自动化测试框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firef…

vue3-admin-element安装

1、直接点此链接进入下载 https://gitee.com/hu-snail/vue3-admin-element-template 2、下载完毕之后是个压缩包&#xff0c;解压 然后直接可以运行到vscode或HBuilder中 3、下载依赖&#xff1a;我使用的npm下载 npm i npm i serve启动 运行&#xff1a;npm run serve …

使用CoreOS来部署一个Kubernetes集群,包括必要的步骤和关键概念

文章目录 什么是CoreOS&#xff1f;准备CoreOS节点安装Kubernetes初始化Kubernetes控制平面加入其他节点设置kubectl配置安装网络插件验证集群部署应用程序结论 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍…

【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

文章目录 一、爬取目标二、展示爬取结果三、爬虫代码四、同步视频五、附完整源码 您好&#xff0c;我是 马哥python说&#xff0c;一枚10年程序猿。 一、爬取目标 之前&#xff0c;我分享过一些B站的爬虫&#xff1a; 【Python爬虫案例】用Python爬取李子柒B站视频数据 【Pyt…