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.mzph.cn/news/77179.shtml

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

相关文章

关于运行franka_ros包中的franka_gazebo报错VMware: vmw_ioctl_command error 无效的参数.

参考的博文,感谢,解决Vmware下虚拟机下打开gazebo报错 ,VMware: vmw_ioctl_command error 无效的参数. 首先第一个VMware: vmw_ioctl_command error 无效的参数的问题。这应该是虚拟机的bug,毕竟使用虚拟机和真实的物理机上是有差…

C语言实现三子棋游戏(详解)

目录 引言: 1.游戏规则: 2.实现步骤: 2.1实现菜单: 2.2创建棋盘并初始化: 2.3绘制棋盘: 2.4玩家落子: 2.5电脑落子: 2.6判断胜负: 3.源码: 结语&…

GB28181学习(三)——心跳保活

心跳保活 要求: 1. 当原设备发现工作异常时,应立即向本SIP监控域的SIP服务器发送状态信息; 2. 无异常时,定时向本SIP监控域的SIP服务器发送状态信息; 3. 状态信息报送采用**MESSGAE**方法; 4. SIP设备宜在…

简简单单教你如何用C语言实现获取当前所有可用网口!

一、获取本机所有可用网卡名 原理: 在 Linux 系统中,/proc 目录是一个位于内存中的伪文件系统。 /proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关系统硬件及当前运行进程的信息,如…

leetcode 54. 螺旋矩阵

1. 题解 如果一条边从头遍历到底,则下一条边遍历的起点随之变化选择不遍历到底,可以减小横向、竖向遍历之间的影响一轮迭代结束时,4条边的两端同时收窄 1一轮迭代所做的事情变得很清晰:遍历一个“圈”,遍历的范围收缩为…

日常开发小汇总(3)js类型判断

1.typeof 能判断出字符串、数字、方法和undefined,array、null、object判断不出 let num 1;let str "x";let fn function user(){}let arr [1,2]let obj {name:"zhangs"}let und;let nul null;console.log(typeof num) //numberconsole.l…

JAVAEE初阶相关内容第八弹--多线程(初阶)

本文目录 阻塞队列 阻塞队列是什么? 标准库中的阻塞队列 生产者消费者模型 阻塞队列的实现 普通队列实现: 入队列: 出队列: 完整代码: 加阻塞 加锁 加阻塞 阻塞队列 队列:先进先出,…

量化:基于支持向量机的择时策略

文章目录 参考机器学习简介策略简介SVM简介整体流程收集数据准备数据建立模型训练模型测试模型调节参数 参考 Python机器学习算法与量化交易 利用机器学习模型,构建量化择时策略 机器学习简介 机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。…

请重新安装msvcp140.dll的修复方法,多种msvcp140.dll的处理方案

当你在电脑上安装或运行某些程序时出现了“缺少msvcp140.dll”或“msvcp140.dll丢失”会要求你“重新安装msvcp140.dll”等的错误提示,这意味着你的计算机缺少了一个重要的动态链接库文件。msvcp140.dll是微软Visual C Redistributable for Visual Studio 2015库的一…

硬件总线基础07:PCIe总线基础-事务层(2)

说在开头:关于哲学 在《东邪西毒》电影里欧阳锋说:“看来你的年纪也有四十出头了,这四十多年来,总有些事你是不愿再提,或是有些人不想再见,有的人曾经对不起你,也许你想过杀了他们,…

vue2中使用富文本编辑器tinyMCE全过程

第一步:安装TinyMCE $npm install tinymce5.10.0 -S $npm install tinymce/tinymce-vue3.0.1 -S 第二步:在node_modules中找到tinymce文件夹将内部文件移入pubilc/tinymce文件夹中在index.html文件中引入tinymce.min.js 注意:不把js文件放…

在 Arweave 中轻松管理文件:借助 4EVERLAND 完成 Web3 前端Path Manifests的终极指南

为什么使用Path Manifests? 当在 IPFS 上发布 NFT 时,图片和元数据会被上传到 IPFS 网络以获得一个根 CID,其形式如下: ipfs://bafybeic36ik6cngu37xbzmpytuvyo7z3lyeen44clkkxq5d263zj4nkzr4 通过使用这个根 CID,每…

运算放大器典型应用(二)

文章目录 十、采样保持电路十一、有源滤波电路二阶有源低通滤波器问题二阶截至频率如何算 十、采样保持电路 十一、有源滤波电路 给单片机供电R一般大于4.1Ω小于10Ω,太大会产生功耗 二阶有源低通滤波器问题 二阶截至频率如何算 通频带比较窄可以用这种&#xff0…

揭秘策划行业就业前景怎么样?

策划这个行业总的来说就是:门槛低,上限高!! 咱们一般说的策划也分很多类型,这里选取身边朋友做的最多的4种类型简单说说。 1、前端品牌策划,转型容易出路广 品牌策划以品牌思维为核心去分析公司的经营发…

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

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

Revit SDK 介绍:AddSpaceAndZone 添加空间和分区

前言 这个例子介绍添加空间和分区。 内容 从 UI 界面看空间和分区。“分析”选项卡“空间和分区”面板: 创建空间 点击“Create Space”按钮,点“OK”,出现右边所示的6个空间。 核心逻辑: // SpaceManager::CreateSpaces(…

Redis的java客户端

在Redis官网中提供了各种语言的客户端&#xff0c;地址&#xff1a;https://redis.io/resources/clients/ redis的java客户端 https://redis.io/resources/clients/#java 1.jedis使用 引入依赖 <dependency><groupId>redis.clients</groupId><artifac…

类和对象(1)

文章目录 1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符和封装4.1访问限定符4.2封装 5.类的作用域6.类的实例化6.2结构体内存对齐规则 7.this指针7.2this指针的特性 封装&#xff08;补充&#xff09; 1.面向过程和面向对象初步认识 C面向对象但不纯面向…

时间和空间复杂度

目录 一、如何衡量一个算法的好坏 二、算法效率 三、时间复杂度 3.1 时间复杂度概念 3.2 大O的渐进表示法 3.3 推导大O阶方法 3.4 常见时间复杂度计算 3.5 空间复杂度 一、如何衡量一个算法的好坏 以下是求斐波那契数列的算法&#xff0c;这个算法是好还是不好呢&#xff1f…

ARM Linux DIY(八)USB 调试

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