Linux编辑器-vim使用

news2024/11/22 6:27:12

文章目录

  • 前言
  • 一、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.coloradmin.cn/o/1004816.html

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

相关文章

相关性分析-Pearson, Spearman, Kendall 三大相关系数+绘制热力图

相关性分析 1、Pearson 相关系数(连续变量)Pearson代码2、Spearman 秩相关系数(连续变量)Spearman代码3、Kendall 相关系数 (有序分类变量)Kendall代码Pearson, Spearman, Kendall 三类相关系数是统计学上的三大重要相关系数,表示两个变量之间变化的趋势方向和趋势程度。…

将Windows本地的数据集上传到Linux服务器

一、用MobaXterm软件 软件界面如下: 在左侧边栏中找到存放数据集的位置,点击上传按钮(这里只能上传单个文件),就可以完成上传了。 具了解上传速度为1M/s-22M/s. 其他方法待尝试,未完待续。。。。 点赞…

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

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

STLINK-V3 STDC14座转2.54mm排针转接板Kicad工程

简介 这是一个 STLINK-V3 STDC14座转2.54mm排针转接板Kicad工程 。STDC14座实际工作中不太方便,所以搞了这个转接板。另外转接版上提供了可选的电源输出功能。 An adapter board for STLINK-V3. It change the STDC14 to 2.54mm pin header.It also provides 5V an…

哪里可以了解轻量的工作流引擎?

如果想要实现高效率的办公,可以使用轻量的工作流引擎低代码技术平台。随着工作量日益繁重起来,传统的办公制作方式已经无法满足现实需要的,采用轻量级的表格制作工具,就能在无形中缓解办公压力,创造更高效、灵活、优质…

phpcmsV9.6.0sql注入漏洞分析

目录 前言 环境准备 漏洞点 看一看parse_str函数 看一看sys_auth函数 看一看get_one函数 全局搜索sys_auth($a_k, ENCODE) 查看哪里调用了 set_cookie 查看safe_replace函数 判断登录绕过 index的业务 加载modules/wap/index.php 加载modules/attachment/attachme…

小节6:Python字典dict

1、字典的键必须时不可变数据类型,所以列表list不能作为键key,那怎么办呢?Python为我们准备了一个很像列表,却又不可变的数据类型——元组tuple,通常用元组tuple来作为键。比如: contact_dict {("张…

简单的洗牌算法(Java)

目录 一、问题二、创建一个Poker类三、完成游戏内容四、测试五、总结 简单的洗牌算法是对ArrayList的具体使用 一、问题 我们需要一副完整的扑克牌,除去大小王一共52张牌,参与游戏的玩家共3名,在洗牌后分发每名玩家5张扑克牌。 二、创建一…

Prometheus+Grafana可视化监控【MySQL状态】

文章目录 一、Prometheus监控MySQL二、Grafana添加MySQL监控模板 PrometheusGrafana部署请参考上篇文章: PrometheusGrafana部署: 一、Prometheus监控MySQL 1、创建MySQL监控用户 mysql> create user "prometheus""%" identified by NTQ34tg*19VF; m…

Java——比较器

引入的背景 我们知道基本数据类型的数据(除boolean类型外)需要比较大小的话,直接使用比较运算符即可,但是引用数据类型是不能直接使用比较运算符来比较大小的。那么,如何解决这个问题呢? 在Java中经常会涉…

[杂谈]-从硬件角度理解二进制数

从硬件角度理解二进制数 文章目录 从硬件角度理解二进制数1、概述2、模拟电路3、数字电路4、逻辑电平5、TTL 器件的电压水平6、总结 1、概述 二进制数以 2 为基数系统表示,该系统只有两 (2) 个不同的数值,即 0 和 1。就像最常见的那样,十进制…

C 风格文件输入/输出---无格式输入/输出---(std::fgetc,std::getc,std::fgets)

C 标准库的 C I/O 子集实现 C 风格流输入/输出操作。 <cstdio> 头文件提供通用文件支持并提供有窄和多字节字符输入/输出能力的函数&#xff0c;而 <cwchar>头文件提供有宽字符输入/输出能力的函数。 无格式输入/输出 从文件流获取字符 std::fgetc, std::getc …

Python引入模块——拿着别人的代码做自己的项目

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、什么是Python模块 二、Python模块的作用 三、Py…

cmd 90 validate error!(达梦数据库日志报错)

达梦数据库报错 error-cmd 90 validate error! 环境介绍1 解决办法 环境介绍 某生产环境数据库启动后&#xff0c;dm_实例名_202309.log&#xff0c;偶尔报错cmd 90 validate error! 1 解决办法 接口用错了&#xff0c;消息非法&#xff0c;比如用 6 的 JDBC 连 7 或 7 的 …

C++QT 作业5

#include <iostream> #define PI 3 using namespace std; class Shape { protected:int zc;int mj; public:Shape(){}Shape(int z,int m):zc(z),mj(z){}~Shape(){}Shape(const Shape &other):zc(other.zc),mj(other.mj){cout<<"拷贝构造函数"<<…

【买入看涨期权策略(Long Call)】

买入看涨期权策略的收益主要来源于标的资产价格的上涨&#xff0c;是一种基础的期权策略&#xff0c;该策略最大的吸引力在于能给投资者提供很大程度的杠杆&#xff0c;投资者能够在标的资产价格上涨幅度较小的时候获得较大的盈利&#xff0c;并且其对应的风险值不会超过一个固…

骨传导耳机对大脑有影响吗?骨传导耳机到底好不好

先上结论&#xff0c;骨传导耳机对大脑没有影响。骨传导耳机使用的是骨传导技术&#xff0c;声音是通过头骨骨头和颌骨给内耳传递的&#xff0c;而不是通过传统的空气传播&#xff0c;它将声音传输到颅骨&#xff0c;然后透过骨头振动直接刺激内耳&#xff0c;绕过外耳和中耳。…

LINUX 网络管理

目录 一、NetworkManager的特点 二、配置网络 1、使用ip命令临时配置 1&#xff09;查看网卡在网络层的配置信息 2&#xff09;查看网卡在数据链路层的配置信息 3&#xff09;添加或者删除临时的网卡 4&#xff09;禁用和启动指定网卡 2、修改配置文件 3、nmcli命令行…

小程序中如何给会员一键拨号

一键拨号功能是一个非常实用的功能&#xff0c;商家可以快速与会员取得联系。下面&#xff0c;我们将介绍如何在小程序中实现一键拨号功能。 1. 会员绑定手机号。会员在个人中心点击设置按钮&#xff0c;在手机号码处&#xff0c;点击一键输入手机号。也可以在提交订单页面&am…

多寄存器内存访问指令的寻址方式

多寄存器内存访问 注意使用的是大括号 将R1-R4寄存器中的数据存储到内存以R11为起始地址的内存中 LDM同样适用 当寄存器不连续时&#xff0c;使用逗号分隔 例 STM R11,{R1,R2,R4} 不管寄存器列表中寄存器的顺序如何&#xff0c;存到内存中永远都是小编号的寄存…