当前位置: 首页 > news >正文

Linux编辑器vim

    

本文已收录至《Linux知识与编程》专栏!
作者:ARMCSKGT
演示环境:CentOS 7 

   


目录

前言

正文

vim常用方式

进入vim

退出vim

vim基本模式及模式功能

命令模式 

插入模式

底行模式

替换模式

视图模式

配置vim

自己配置vim

自动化配置vim

最后


前言

我们在使用一款操作系统时,无论是什么系统都有属于自己默认的文本编辑器,本节将介绍Linux编辑器vim!学习完vim,我们就可以相对自由的在Linux上写代码了,最后我们会配置vim环境,搭建主要用于C/C++代码编辑的vim。


正文

vim是一款多模式编辑器,各种模式,每种模式的用法有差别,每种模式相互切换,是一个单纯的编辑器而非编译器。


vim常用方式


进入vim

指令:

vim [文件]
未配置的vim进入文本的界面
左下角显示文文本名和当前的模式

退出vim

操作:按键盘上Esc退回到命令模式(或直接Esc退回),然后使用shift+:键,右下角显示模式的位置显示冒号,这是底行模式。在底行模式下输入q退出,一般是输入wq,表示保存并退出


vim基本模式及模式功能

vim一共有12种模式,其中我们会用到的只有5种模式,常用的只有3种模式:命令模式,插入模式和底行模式!


命令模式 

切换方式:任意模式下Esc键进入!

对于未配置的vim进入后左下角是没有任何显示的,这时表示处于命令模式!

命令模式是vim的默认模式,我们使用vim打开任意文件的初始模式都是命令模式,在其他模式下如果想退回命令模式直接按Esc键即可。既然是命令模式就有许多可用的命令在后面会详细介绍!

常用命令

按键中没有提示的默认小写!

1. 移动光标类
vim可以直接用键盘上的光标来上↑,下↓,左←,右→移动,但正规的vim是用小写英文字母「h」、「j」「k」、「l」,分别控制光标左、下、上、右移一格。

h,j,k,l控制光标上下左右移动

G (或shift+g)

光标移动到文章的最后一行开头
#G (或#shift+g)光标移动到文章的第 # 行
shift + $光标移动到光标所在行的“行尾”
shift + ^光标移动到光标所在行的“行首”
w光标跳到下个字的开头
e光标跳到下个字的字尾
b光标回到上个字的开头
#|( | 是竖画线)光标移到该行的第#个位置
gg进入到文本开始
CTRL+ b屏幕往“后”移动一页
CTRL+ f屏幕往“前”移动一页
CTRL+ u屏幕往“后”移动半页
CTRL+ d屏幕往“前”移动半页
CTRL+ g显示行号和光标所在文章内容百分比(一般显示在左下角)

2.剪切复制粘贴类

dd剪切光标所在行
#dd从光标所在行开始剪切后面的 # 行 (包括光标所在行)
x每按一次,剪切光标所在位置的一个字符
#x剪切光标所在位置的“后面(包含自己在内)的 # 个字符
X(大写)每按一次,剪切光标所在位置的“前面”一个字符
#X(大写)剪切光标所在位置的“前面"的 # 个字符(不包括自己)
yw将光标所在之处到字尾的字符复制(到缓冲区中)
#yw复制#个字(到缓冲区)
yy复制光标所在行(到缓冲区)
#yy从光标所在行开始向下复制 # 行(包括光标所在行)
p将缓冲区内的字符贴到光标所在位置。(注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。)

注意:在vim中是没有特别的删除命令的,剪切后不粘贴就是删除!

3.撤销类

u撤销,撤回一步(还原到上一步操作,类似于Windows的CTRL + z)
CTRL+ r前进,撤回撤销(相当于Windows的CTRL+ y)

4.替换更改类

cw更改光标所在处的字到字尾处(相当于一个单词)
c#w更改 # 个词组
r替换光标所在处的字符
shift+ ~将光标处的字母进行大小写切换

插入模式

切换方式:命令模式下使用Insert(Ins)/i/o/a键进入!

左下角显示INSERT字样表示处于插入模式!

插入模式是我们以后进行编辑最常用的方式,只有插入模式下才能自由编辑,否则就会转换为指令!

命令模式下进入插入模式的方法:

Insert(Ins)切换为插入模式且光标停留在原位
i 键
o 键切换为插入模式并以光标的当前位在下一行重起一行空行
a 键切换为插入模式且光标向后移动一位

底行模式

切换方式:命令模式下shift+: 进入!

切换为底行模式后,左下角会显示一个待输入指令。

底行模式下也有很多指令,而且我们以后退出vim都是使用底行模式。在文章后面我们会详细介绍。

常用指令

1.设置行号指令

:set nu //开启行号显示
:set nonu //关闭行号显示

2.光标跳转指令

:# //调转到第 # 行

3.搜索字符串并高亮

:/(需要搜索的字符串)
:?(需要搜索的字符串)

 此时光标所在的高亮字符会呈现不同的高亮色,如果是使用 / 搜索的字符按n键可以让光标移向下一个高亮的字符,如果是使用 ? 搜索按n键可以让光标移动到上一个高亮字符!

  

4.底行模式执行Linux命令

:!(Linux指令)

一般我们在写代码时通过这个命令编译代码文件然后执行程序,这样我们既可以不退出vim也可以查看程序运行情况!

  

5. 指定字符串并替换

:%s/被替换的文本/替换文本/g  

6.多文件vim分屏操作

:vs 文件

vs分屏打开文件时如果没有文件vim会创建在本地一个文件,如果有该文件则可以使用Tap键自动补齐文件名。

在两个vim窗口之间切换要使用CTRL + 连续按两次w

7.保存文件

:w //将文本保存在本地

   

8.退出vim

:q //退出vim

替换模式

切换方式:命令模式下大写R进入(或shift+小写r)。

切换为替换模式后左下角会显示REPLACE字样,代表处于替换模式!

在替换模式下键盘输入的任何字符都会替换当前光标处的字符(包括空格),所以理论上替换模式也可以实现编辑但是不太方便,例如不能删除字符只能替换为空格!


视图模式

切换方式:命令模式下小写v或大写V键!

通过小写v切换为视图模式左下角显示 VISUAL 此时视图模式的选中方式为逐字符选中。

通过大写V切换的视图模式左下角显示 VISUAL LINE ,此时为逐行选中,光标所在行的整行都会被选中!

 视图模式通常用于整体替换和快速浏览文本,在代码编辑中快速注释也是通过视图模式!

视图模式代码注释小技巧

1.CTRL+ 大小写v/V,进入视图行插入文本模式

2.通过光标的移动选中需要注释的行(选择时选中两列)

3.切换为大写模式按 I (大写 i )

4.在光标原地输 // 即可完成注释!(如果要插入其他字符也是这样操作)


配置vim


之前在初步介绍时展示的都是未配置的vim,没有配置的vim非常难以使用,来写代码和文本是非常困难的!

   

我们自己可以修改vim的默认配置文件,来配置我们自己的vim,使它更符合我们的使用!

首先vim的配置文件在用户的家目录~下(每个用户只能配置自己的vim),该文件被隐藏起来了,需要使用ls -a来查看,文件名是.vimrc


自己配置vim

使用vim打开文件.vimrc文件,写入配置指令!

保存并退出,再次打开vim查看文本文件!

 

 

其他配置:

1.自动缩进:set autoindent
2.突出显示当前行: set cursorline

还有其他很多选项,大家有需要可以在网上搜索进行详细的个性化配置!


 自动化配置vim

对于手动配置vim好像非常麻烦,而一般我们配置vim是为了写代码,所以网上有一套非常成熟的配置,可以下载到本地使用!这就是VimForCpp

可以在giett官网搜索VimForCpp(网页:VimForCpp: 快速将vim打造成c++ IDE (gitee.com))

 进入主页向下翻就能看到步骤和介绍!

这里感谢这位大佬提供的vim配置方案!

   

  

安装步骤及命令:

1.在 shell 中执行以下指令(命令较长请将下列命令复制完整)

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

2.需要按照提示输入 root 密码


注意: 这个自动安装的方法,目前仅适用于 Centos 7.6 ,其他平台可能会出现安装失败的情况!


最后

Linux编辑器vim的介绍到这里就结束了,相信vim的学习会为大家打开Linux编程的大门,让我们在Linux中更加畅快的进行开发!

本次Linux编辑器vim知识就介绍到这里啦,希望能够尽可能帮助到大家。

如果文章中有瑕疵,还请各位大佬细心点评和留言,我将立即修补错误,谢谢!

 🌟其他文章阅读推荐🌟

Linux 软件包管理器 yum-CSDN博客

Linux基础指令-CSDN博客

Linux权限的基本知识-CSDN博客

🌹欢迎读者多多浏览多多支持!🌹

相关文章:

Linux编辑器vim

本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 vim常用方式 进入vim 退出vim vim基本模式及模式功能 命令模式 插入模式 底行模式 替换模式 视图模式 配置vim 自己配置vim 自动化配置…...

基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟

查看原文>>>基于“python”潮汐、风驱动循环、风暴潮等海洋水动力模拟ADCIRC是新一代海洋水动力计算模型,它采用了非结构三角形网格广义波动连续方程的设计,在提高计算精确度的同时还减小了计算时间。被广泛应用于:模拟潮汐和风驱动…...

《Terraform 101 从入门到实践》 第二章 Providers插件管理

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。 不怕出身低,行行出状元。 插件 Terraform可以对多种平台的多种资源进行管理,这个是通过…...

03- pandas 数据库可视化 (机器学习)

pandas库的亮点: 一个快速、高效的DataFrame对象,用于数据操作和综合索引;用于在内存数据结构和不同格式之间读写数据的工具:CSV和文本文件、Microsoft Excel、SQL数据库和快速HDF 5格式;智能数据对齐和丢失数据的综合处理&#…...

Spring为什么这么火 之 Bean的6种作用域和Bean的生命周期

1、Bean的作用域 1.1、什么是作用域? 限定程序中变量的可用范围叫做作用域,或者说在源代码中定义变量的某个区域就叫做作用域 1.2、Bean的6种作用域 singleton:单例作用域prototype:原型作用域【多例作用域】request&#xff1…...

【CSS面试题】2023前端最新版css模块,高频15问

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:博主收集的CSS面试题 目录 一、CSS必备面试题 1.CSS3新特性 2.CSS实现元素两个盒子垂…...

SpringCloud-Netflix学习笔记10——Hystrix实现服务熔断

一、概述 1、分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败! 2、服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B 和微服务C又…...

精华文稿|迈向统一的点云三维物体检测框架

分享嘉宾 | 杨泽同 文稿整理 | William 嘉宾介绍 Introduction 3D检测是在三维世界中去定位和分类不同的物体,与传统2D检测的区别在于它有一个深度信息。目前,大部分的工作是倾向于用点云去做三维检测,点云实际上是通过传感器去扫描出来的一…...

面试题:Redis网络模型

1 用户空间和内核空间以Centos 7 linux操作系统为例。计算机系统被内核操控, 内核被应用操控。为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的进程的寻址空间会划分为两部分:内核空间、用户空间。用户空间只能执行受限的命令(Rin3&#x…...

微信小程序开发你可能不知道的开发技巧

1. 页面级data,组件data的查看 页面级data的查看,很多开发者应该都知道;组件级的数据查看我是开发了大半年才发现的; 页面级的data查看: 组件的data查看: 2. 放大模拟器【调整一些UI细节】 效果&#x…...

STM32开发(8)----CubeMX配置串口通讯(中断方式和DMA方式)

CubeMX配置串口通讯(中断方式和DMA方式)前言一、中断方式1.CubeMX配置2.代码实现3.实验结果二、DMA方式1.CubeMX配置2.代码实现3.实验结果总结前言 本章继续介绍使用STM32CubeMX对串口进行配置的方法,串口通讯有三种方式:轮询&am…...

7.1 微服务-SpringCloud(二)

目录 前言 7.1.5 Hystrix 7.1.5.1 什么是Hystrix 7.1.5.2 雪崩问题 7.1.5.3 线程隔离,服务降级 7.1.5.4 搭建 7.1.5.4.1 引入依赖 7.1.5.4.2 开启熔断 7.1.5.4.3 编写降级逻辑 1.局部降级逻辑 2.全局降级逻辑 7.1.5.4.4 设置超时 7.1.5.5 服务熔断 7.…...

Spring的AOP开发-基于xml配置的AOP

Spring的AOP开发-基于xml配置的AOP xml方式AOP快速入门 通过配置文件的方式解决以下问题 配置哪些包、哪些类、哪些方法需要被增强配置目标方法要被哪些通知方法所增强,在目标方法执行之前还是之后执行增强 配置方式的设计、配置文件(注解),Spring已…...

JAVA的垃圾收集器与内存分配策略【一篇文章直接看懂】

内存动态分配和垃圾收集技术是JAVA和C之间最大的区别之一 垃圾收集(Garbage Collection,GC)只办三件事: 哪些内存需要回收什么时候回收如何回收 对于对象回收的方法 引用计数法: 每处引用时1,引用失效…...

NLP学习——信息抽取

信息抽取 自动从半结构或无结构的文本中抽取出结构化信息的任务。常见的信息抽取任务有三类:实体抽取、关系抽取、事件抽取。 1、实体抽取 从一段文本中抽取出文本内容并识别为预定义的类别。 实体抽取任务中的复杂问题: 重复嵌套,原文中…...

【深度学习基础7】预训练、激活函数、权重初始化、块归一化

一、Unsupervised Pre-training 得益于 Hinton and Salakhutdinov 在 2006 年的开创性工作— 无监督预训(unsupervised pre-training);在《Reducing the dimensionality of data with neural networks.》这篇论文中,他们在 RBMs 中引入无监督预训练,下面我们将在Autoenco…...

MetaMQ

文章目录MetaMQMetaMQ 的优势在于:MetaMQ 的劣势也有:MetaMQ MetaMQ 是一个基于以太坊的可扩展分布式消息队列(MQ)系统,它可以支持大规模的分布式应用程序。MetaMQ 是一个开放源代码项目,它支持企业级应用程…...

热门盘点 | 10款评分最高的项目管理工具

项目管理软件可以让项目经理及时掌握项目进展可把复杂的任务分解简单帮助项目经理及时了解整个团队进展随着现代项目需求日趋复杂和个性选一个好的项目管理软件还是很有必要的① PingCode国内研发项目管理软件PingCode,它是国内软件研发项目榜单中评分最高的项目管理…...

若依框架---分页功能

继前几天我们学习若依管理系统中的代码生成工具,我们发现若依系统中还要很多值得学习的地方。今天我们来学习若依管理系统中的分页工具。 若依管理系统是前后端分离的(准确的说,若依有前后端分离版本)。 前端 若依前端的分页没…...

CHAPTER 3 Jenkins SVN GItlab

Jenkins SVN GItlab3.1 JenkinsSVN3.1.1 搭建SVN服务器1. 安装svn server2. 查看svn安装位置3. 创建版本库目录4. 创建svn版本库5. 配置修改6. 防火墙开启3690端口7. 启动SVN-server8. 客户端访问svn服务器3.1.2 测试脚本提交3.1.3 jenkins下载代码配置1. 安装Subversion插件2.…...

为什么Redis集群的最大槽数是16384个?

对于客户端请求的key,根据公式HASH_SLOTCRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作! 为什么有16384个槽? Redis集群并没有使用一致性hash而是引入了哈希槽的概念。Redis 集群有16…...

餐饮企业数据可视化大屏(智慧餐饮)

随着信息技术的深入发展,数据大屏的适用场景日益广泛,集工作汇报、实时监控和预测分析等功能于一身。 数据可视化的本质是视觉对话,数据可视化将数据分析技术与图形技术结合,清晰有效地将分析结果信息进行解读和传达。 当前很多餐…...

Kafka安装及zookeeper is not a recognized option问题解决

一安装JAVA JDK(略) 二安装ZooKeeper 下载安装包,建议bin版本 http://zookeeper.apache.org/releases.html#download解压并进入ZooKeeper,将“zoo_sample.cfg”重命名为“zoo.cfg” D:\Kafka\apache-zookeeper-3.7.1-bin\conf…...

leetcode刷题 | 关于二叉树的题型总结1

leetcode刷题 | 关于二叉树的题型总结1 文章目录leetcode刷题 | 关于二叉树的题型总结1题目连接完全二叉树插入器在每个树行中找最大值找树左下角的值二叉树的右视图二叉树剪枝题目连接 919. 完全二叉树插入器 - 力扣(LeetCode) 515. 在每个树行中找最…...

webpack新手入门

前言: 如何配置webpack呢? webpack概念有哪些呢? 怎么快速理解并使用webpack呢? 文章目录一. 什么是webpack二. 安装webpack三. webpack的五个核心概念四. webpack配置五. loader加载器1. css处理2. 处理文件(图片&…...

Redis中有常见数据类型

Redis的数据类型 string数据类型 string是redis最基本的类型,而且string类型是二进制安全的。意思是redis的string可以包含任何 数据,比如jpg图片或者序列化的对象 String类型是最基本的数据类型,一个redis中字符串value最多可以是512M r…...

【知识梳理】Go语言核心编程

基础知识 Go语言就是为了解决编程语言对并发支持不友好、编译速度慢、编程复杂这三个问题而诞生的 特点: Go语言选择组合思想,抛弃继承关系通过接口组合,自由组合成新接口,用接口实现层与层之间的解耦语言特性对比: package mainimport "fmt"func main() {fmt…...

Java中动态调用setter以及getter

0x00 前言 对于非专业程序员的安全人员来说,因为没有代码项目的积累,很多知识体系都不完善,所以有必要在一些常用的内容进行学习的总结。 在很多的调用链中都会用到**“动态调用setter以及getter”**这个知识点,比如经典的CB链&a…...

基于 NeRF 的 App 上架苹果商店!照片转 3D 只需一部手机,网友们玩疯了

前言 只用一部手机,现实中的 2D 照片就能渲染出 3D 模型? 没错,无需再手动上传电脑或安装激光雷达,苹果手机自带 App 就能生成 3D 模型。 这个名叫 Luma AI 的“NeRF APP”,正式上架 App Store 后爆火: 小…...

C++类与对象(中)

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;C类中一共有六个默认成员函…...

为什么做网站能赚钱/百度知道官网首页登录入口

1、创建计划 产品中按计划分组查看需求&#xff0c;这一步只母需求关联计划即可&#xff0c;拆分的子需求不再关联计划&#xff0c;防止计划下需求的重复 2、创建需求&#xff0c;可关联计划 3、在项目中&#xff0c;关联需求&#xff0c;创建任务&#xff08;其实任务可以省略…...

工业设计代做网站/百度信息流账户搭建

一.单继承 一个子类对父类的某个方法重写后&#xff0c;可以用super重新调用父类的这个方法 格式 super().方法()例如 class Parent:def __init__(self):print("Parent") class Son1(Parent):pass class Son2(Parent):def __init__(self):print("Son2")…...

荆州市建设委员会网站/如何搭建一个网站

使用外部邮箱来发生邮件明显好处就是防止其他邮箱服务器当垃圾邮件处理&#xff0c;另一方面能降低收邮件延迟。 下面开始进行使用外部邮箱配置&#xff1a; zabbix服务端配置&#xff1a; 操作系统&#xff1a;CentOS7_x64 1、 安装一个邮件发送程序mailx工具&#xff08;msm…...

开通公司网站怎么开通/网络广告的特点

201701 20170124 arcgis server&#xff0c;忘记Manager用户名和密码的解决办法&#xff1a; 1、找到arcgis server的安装目录,目录指向\ArcGIS\Server\tools\passwordreset文件夹。文件夹下有一个cmd文件&#xff0c;名字叫做PasswordReset&#xff0c;主要用到两个命令&#…...

做网站 单页数量/seo实战密码在线阅读

最近研究康盛的Unhome&#xff0c;一个SNS平台软件 要用到Mysql这个软件&#xff0c;唉&#xff0c;开源的东西就是麻烦&#xff0c;开启日志都搞了半天 刚开始只搞懂了开启更新之类的sql [mysqld] log-update "文件位置。log" 但是里面只有insert&#xff0c;updat…...

网站商城建设合同免费下载/推广普通话宣传语100字

现在采用后置多摄组合的手机太常见了&#xff0c;好像没有后置多摄都不好意思说是一台手机。手机上的后置多摄组合有什么用&#xff1f;购机时应该怎么选择&#xff1f;我们一起通过文章来了解一下。多摄方案有什么优势&#xff1f;近年来&#xff0c;手机后置多摄几乎已经演变…...