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机器学习算法与量化交易 利用机器学习模型,构建量化择时策略 机器学习简介 机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。…...
成功解决Selenium 中116版本的chromedriver找不到问题
Selenium 中的Google(谷歌浏览器)最新版本chromedriver 文章目录 Selenium 中的Google(谷歌浏览器)最新版本chromedriver1.当前作者的谷歌浏览器版本2.当前驱动官网的最新版本3.当不想降低浏览器版本继续使用谷歌浏览器的办法 1.当…...
PYQT常用组件--方法汇总
QTimeEdit timeEdit是Qt框架中的一个时间编辑器控件,它提供了以下常用方法: setTime(QTime time): 设置时间编辑器的时间为指定的QTime对象。time(): 返回时间编辑器的当前时间,返回一个QTime对象。setDateTime(QDateTime dateTime): 设置时…...
Linux系统编程(一):文件 I/O
参考引用 UNIX 环境高级编程 (第3版)黑马程序员-Linux 系统编程 1. UNIX 基础知识 1.1 UNIX 体系结构(下图所示) 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境,通常…...
OSM+three.js打造3D城市
对于我在 Howest 的研究项目,我决定构建一个 3D 版本的 Lucas Bebber 的“交互式讲故事的动画地图路径”项目。我将使用 OSM 中的矢量轮廓来挤出建筑物的形状并将它们添加到 3js 场景中,随后我将对其进行动画处理。 一、开发环境 为了使用 Node 和 npm 包,我选择使用 Vite…...
02JVM_垃圾回收GC
二、垃圾回收GC 在堆里面存放着java的所有对象实例,当对象为“死去”,也就是不再使用的对象,就会进行垃圾回收GC 1.如何判断对象可以回收 1.1引用计数器 介绍 在对象中添加一个引用计数器,当一个对象被其他变量引用时这个对象…...
ARM Linux DIY(八)USB 调试
前言 V3s 带有一个 USB 接口,将其设置为 HOST 或 OTG 模式,这样可以用来接入键盘、鼠标等 USB 外设。 USB 简介 USB 有两种设备:HOST 和 USB 功能设备。 在 USB2.0 中又引入了一个新的概念 OTG,即设备角色可以动态切换。 切换方…...
编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹)
系列文章目录 编程小白的自学笔记十三(python办公自动化读写文件) 编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二) 编程小白的自学笔记十一(python爬虫入门三Selenium的使用实例详解) …...
MySQL使用Xtrabackup备份到AWS存储桶
1.安装Xtrabackup cd /tmp wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86…...
(高阶)Redis 7 第11讲 BIGKEY 优化篇
面试题 问题答案如何在海量数据中查询某一固定前缀的Keyscan生产环境如何限制 keys */FLUSHDB/FLUSHALL 等危险命令,防止误删误用# 修改配置文件 rename-command keys "" rename-command flushdb "" rename-command flushall ""如何使用MEMORY U…...
一阶差分和二阶差分概念及其举例
一阶差分和二阶差分概念及其举例 目录 一阶差分和二阶差分概念及其举例1、一阶差分1.1 概念1.2 举例 2、二阶差分2.1 概念2.2 举例 1、一阶差分 1.1 概念 一阶差分是指对一个数列中的每个元素,计算其与其前一个元素之差的操作。 1.2 举例 举例来说,对…...
国际网站建设招标/合肥seo建站
JavaScript学习笔记(十)——学习心得与经验小结 目前我先列好提纲,利用每晚和周末的闲暇时间,将逐步写完 ^_^转载于:https://www.cnblogs.com/springmvc-hibernate/archive/2010/08/06/2484248.html...
数字企业管理系统/漯河搜狗关键词优化排名软件
- 题目大意 输入几个单词,让你判断不同的单词有几个(不必区分大小写)。 - 解题思路 因为不区分大小写,所以现将单词换位统一格式,然后只需用set容器即可(因为set中不会有重复的元素出现)。 - 代…...
做网站的策划书/东营seo网站推广
之前我们已经介绍过怎么把nginx日志同步到kafka,现在我们尝试消费里面的消息并固化到hdfs里面;在实施方案前,假设读者已经熟悉以下技术 (不细说)Java及其Spring框架的基本使用Spark和Spark streaming原理kudu的基本使用方案实施sparkstreamin…...
wordpress织梦 更快/奶茶网络营销策划方案
新买的电脑,用一段时间后,可能会出现各种各样的问题,如果垃圾过多、启动速度慢可以通过软件对电脑进行优化,但是如果电脑中毒,反复重启,排除是硬件问题的话,最好的解决之道就是重新安装系统了&a…...
廊坊开发区规划建设局网站/1000个关键词
做一件事,如果觉得难那就对了。容易达成的事,没有经过努力获取到的是没有成就感的。人生就像上坡,更高处的风景更值得期待。中国人民大学与加拿大女王大学金融硕士项目给予你前行的力量。 我们每个人的一生中,都是在不断攀登一座…...
如何做积分商城网站/软文营销写作技巧有哪些?
2019独角兽企业重金招聘Python工程师标准>>> Node 主要用在开发 Web 应用,koa 是目前 node 里最流行的 web 框架。 在 Node 开启一个 http 服务简直易如反掌,官网 demo。 const http require("http");const server http.createServer((req, …...