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”。
 
相关文章:
 
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末行…...
 
自助式数据分析平台:JVS智能BI功能介绍(二)数据集管理
数据集是JVS-智能BI中承载数据、使用数据、管理数据的基础,同样也是构建数据分析的基础。可以通俗地将其理解为数据库中的普通的表,他来源于智能的ETL数据加工工具,可以将数据集进行分析图表、统计报表、数字大屏、数据服务等制作。 在整体的…...
《5G技术引领教育信息化新革命》
5G技术引领教育信息化新革命 随着5G技术的快速发展,教育领域也迎来了全新的信息化时代。5G技术为教育行业提供了更高速、更稳定、更智能的网络连接,使得教育信息化不再局限于传统的课堂教学,而是延伸到了线上、线下的全时空教育。本文将详细介…...
cmake学习过程记录
目录 基础命令学习配置opencvcmake (Windows版本) 基础命令学习 //设置最低版本号 cmake_minimum_required(VERSION 3.5)//设置项目名称 project (hello_headers)//递归遍历文件夹src中的cpp文件放到变量SOURCES中 file(GLOB_RECURSE SOURCES src/*.cpp)//设置目标exe名称…...
 
Vue3、Vite使用 html2canvas 把Html生成canvas转成图片并保存,以及填坑记录
这两天接到新需求就是生成海报分享,生成的格式虽然是一样的但是自己一点点画显然是不符合我摸鱼人的性格,就找到了html2canvas插件,开始动工。 安装 npm install html2canvas --save文档 options 的参数都在里面按照自己需求使用 https://a…...
centos yum源配置(CentOS7 原生 yum 源修改为阿里 yum 源)
文章目录 centos yum源配置centos搭建内网yum源内网centos的yum软件源配置CentOS7 原生 yum 源修改为阿里 yum 源 centos yum源配置 centos搭建内网yum源 您好,在CentOS系统上搭建本地内网YUM仓库的方法如下: 安装httpd和createrepo工具 yum install httpd createrepo -y创…...
 
linux————ansible
一、认识自动化运维 自动化运维: 将日常IT运维中大量的重复性工作,小到简单的日常检查、配置变更和软件安装,大到整个变更流程的组织调度,由过去的手工执行转为自动化操作,从而减少乃至消除运维中的延迟,实现“零延时”…...
 
初识Java 8-1 接口和抽象类
目录 抽象类和抽象方法 接口定义 默认方法 多重继承 接口中的静态方法 作为接口的Instrument 本笔记参考自: 《On Java 中文版》 接口和抽象类提供了一种更加结构化的方式分离接口和实现。 抽象类和抽象方法 抽象类,其介于普通类和接口之间。在构…...
 
微信小程序音频后台播放功能
微信小程序在手机息屏后依旧能播放音频,需要使用 wx.getBackgroundAudioManager() 方法创建后台音乐播放器,并将音乐播放任务交给这个后台播放器。 具体实现步骤如下: 小程序页面中,使用 wx.getBackgroundAudioManager() 方法创…...
 
NotePad——xml格式化插件xml tools在线安装+离线安装
在使用NotePad时,在某些情形下,需要格式化Xml格式内容,可以使用Xml Tools插件。 一、在线安装 1. 打开Notepad 软件 2. 选择插件,选择“插件管理” 3. 搜索 XML Tools,找到该插件后,勾选该文件ÿ…...
图书管理系统 数据结构先导课暨C语言大作业复习 | JorbanS
问题描述 读取给定的图书文件book.txt中的信息(book.txt中部分图书信息如下图所示),完成一个图书信息管理系统,该系统的各个功能模块要求利用菜单选项进行选择。 系统功能要求 图书浏览 读取book.txt中的文件信息并依次输出所…...
 
python 爬虫的开发环境配置
1、新建一个python项目 2、在控制台中分别安装下面三个包 pip install requests pip install beautifulsoup4 pip install selenium/ 如果安装时报以下错误: raise ReadTimeoutError(self._pool, None, "Read timed out.") pip._vendor.urllib3.exceptio…...
 
技术架构图是什么?和业务架构图的区别是什么?
技术架构图是什么? 技术架构图是一种图形化工具,用于呈现软件、系统或应用程序的技术层面设计和结构。它展示了系统的各种技术组件、模块、服务以及它们之间的关系和交互方式。技术架构图关注系统内部的技术实现细节,以及各个技术组件之…...
 
数据增强
一、数据增强 当你训练一个机器学习模型时,你实际做工作的是调参,以便将特定的输入(一副图像)映像到输出(标签)。我们优化的目标是使模型的损失最小化, 以正确的方式调节优化参数即可实现这一目…...
 
【Unity】2D 对话模块的实现
对话模块主要参考 【Unity教程】剧情对话系统 实现。 在这次模块的构建将基于 unity ui 组件 和 C#代码实现一个从excel 文件中按照相应规则读取数据并展示的逻辑。这套代码不仅能实现正常的对话,也实现了对话中可以通过选择不同选项达到不同效果的分支对话功能。 …...
 
laravel安装初步使用学习 composer安装
一、什么是laravel框架 Laravel框架可以开发各种不同类型的项目,内容管理系统(Content Management System,CMS)是一种比较典型的项目,常见的网站类型(如门户、新闻、博客、文章等)都可以利用CM…...
 
【VS插件】VS code上的Remote - SSH
【VS插件】VS code上的Remote - SSH 目录 【VS插件】VS code上的Remote - SSH获得Linux服务器或者Linux系统的IP地址下载插件远程登录注意如果Linux虚拟机系统无法连接成功可能是没有开启ssh服务优势 作者:爱写代码的刚子 时间:2023.9.12 前言࿱…...
 
TensorFlow 02(张量)
一、张量 张量Tensor 张量是一个多维数组。与NumPy ndarray对象类似,tf.Tensor对象也具有数据类型和形状。如下图所示: 此外,tf.Tensors可以保留在GPU中。TensorFlow提供了丰富的操作库 (tf.add,tf.matmul,tf.linalg.inv等),它们…...
513. 找树左下角的值
代码链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 思路: 万金油层次遍历,保存每一层的第一个元素返回就行了 我的代码: /*** Definition for a binary tree node.* struct TreeNode {* …...
 
量化:基于支持向量机的择时策略
文章目录 参考机器学习简介策略简介SVM简介整体流程收集数据准备数据建立模型训练模型测试模型调节参数 参考 Python机器学习算法与量化交易 利用机器学习模型,构建量化择时策略 机器学习简介 机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
 
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
 
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
 
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
 
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
 
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
 
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
