Linux---编辑器vim的认识与简单配置

 前言

  我们在自己的电脑上所用的编译软件,就拿vs2022来说,我们可以在上面写C/C++语言、python、甚至java也可以在上面进行编译,这种既可以用来编辑、运行编译,又可以支持很多种语言的编译器是一种集成式开发环境,集众多于一身。

  而我们在Linux中,我们有自己的编辑器vim,也有自己的编译工具gcc/g++,各种功能独立,话说回来,当然是集成开发环境要更为方便,但是我们在初步学习Linux时,我们稳扎稳打比较好。

  这篇所主要讲的编辑器vim,是vi的升级版本,vi/vim的区别简单点来说,他们都是多模式编辑器,不同的是vim它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

vi/vim键盘图:

一、vim的基本概念

vim有三种模式,分别是命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1、命令模式

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式。命令模式时在键盘上输入「i」键,即可进入插入模式,输入「 :」键,就会进入底行模式。

2、插入模式

  只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

3、底行模式

  文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,            「 :」键 即可进入该模 式。要查看你的所有模式:打开vim,底行模式直接输入。

我们用一张图来表示这三者之间的转换关系:

  我们只能从命令模式进入底行模式和插入模式,如果想要从插入模式进入底行模式或者想要从底行模式进入插入模式,那我们必须先回到命令模式,再进入另一个模式。

二、vim的基本操作

  • 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面

vim 文件名
注意:1、如果我们输入一个没有创建的文件,执行vim命令后会自动创建这个文件
2、如果忘记输入文件名,直接vim之后我们按Esc进入命令模式,再输入‘ :’进入底行模式,最后再输入q!就可以退出了
  • 退出vim及保存文件

  在命令模式下,按一下「:」冒号键进入底行模式

  例如: : w (保存当前文件)

           : wq (输入「wq」,存盘并退出vim)

           : q! (输入q!,不存盘强制退出vim)

三、vim命令模式命令集

1、插入模式

  • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2、移动光标

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格
  • 按「G」:移动到文章的最后 按「$」:移动到光标所在行的“行尾”
  • 按「^」:移动到光标所在行的“行首”
  • 按「w」:光标跳到下个字的开头
  • 按「e」:光标跳到下个字的字尾
  • 按「b」:光标回到上个字的开头
  • 按「#l」:光标移到该行的第#个位置,如:5l,56l
  • 按[gg]:进入到文本开始
  • 按[shift+g]:进入文本末端
  • 按「ctrl」+「b」:屏幕往“后”移动一页
  • 按「ctrl」+「f」:屏幕往“前”移动一页
  • 按「ctrl」+「u」:屏幕往“后”移动半页
  • 按「ctrl」+「d」:屏幕往“前”移动半页

3、删除文字

  • 「x」:每按一次,删除光标所在位置的一个字符
  •   [#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  • 「dd」:删除光标所在行并且带有剪切功能,可以和p联合使用
  • 「#dd」:从光标所在行开始删除#行

4、复制

  • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  • 「#yw」:复制#个字到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。

5、替换

  • 「r」:替换光标所在处的字符
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

6、撤销上一次操作

  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行    多次恢复。
  • 「ctrl + r」: 撤销的恢复。

7、更改

  • 「cw」:更改光标所在处的字到字尾处
  • 「c#w」:例如,「c3w」表示更改3个字

8、跳至指定的行

  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

四、vim底行模式命令集

  在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

1、列出行号

「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。

2、跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。

3、查找字符

「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止。

4、保存文件

「w」: 在冒号输入字母「w」就可以将文件保存起来。

5、vim内执行Xshell命令

「!命令」: 进入底行模式后,输入!后再输入你要执行的命令,就可以直接执行

举例:我们简单的在vim里写下C语言打印Hello World代码,用编译工具gcc编译,我们之前都是退出vim后再对其进行编译,但是我们进入底行模式输入编译命令后按回车:

主屏幕上就会有这段话,我们再按回车

就会又回到vim命令模式

接下来我们./a.out进行编译:

Hello World已经打印在主要屏幕上了,之后再回车也可以再回到vim。

主要作用---查找函数

  也有人说这个功能比较鸡肋,在我们在vim里编写代码的时候,我们有时候忘记函数,我们需要查找,之前我们操作是退出vim,再输入指令<man+函数名>去进行查找。

  但是我们也可以直接在vim底行模式输入<!man+函数名>去查找,了解后再回车回到vim,更为方便。

6、创建多文件同时编写

  我们一般在写代码的时候,一般都会有头文件,源文件,我们在写的时候一般都是同时进行,总不能在源文件写完退出打开头文件再写,这样麻烦了。

  在底行模式有这样一个命令:

vs 文件名

我们在text.c文件里创建头文件text.h

创建完成,出现分屏界面,这时候光标在哪里就可以对哪个文件进行编写

切换光标的方式:CTRL+ww 按住CTRL连续按两次w就可进行光标的转换。

五、其它问题

1、如何批量化注释和批量化去注释

这个操作比较麻烦,但是总比一个一个注释好。

批量化注释步骤:

1、我们先在命令模式下按CTRL+v 进入该模式(VISUAL BLOCK)

2、然后按 j 键选中自己想要注释的行或 #j,#是数字,可以直接选中#行

3、选中之后,再按shift+i

4、输入// ,再按Esc两次

批量化去注释步骤:

1、我们先在命令模式下按CTRL+v 进入该模式(VISUAL BLOCK)

2、选中我们要去注释的行,与注释该步相同,但是需要注意的是,我们选中完之后再L一下,也就是向右移动,这样就会选中我们两列/。

3、按d删除即可。

2、如何解决历史问题,普通用户无法进行sudo提权

当我们想以一个普通用户的身份做一些sudo提权的命令时,通常会有这种情况:

它说我们没有在sudoers文件里,不可以进行sudo提权的操作。

那么我们如何将我们写进sudoers文件里呢?

步骤:

1、切换成root用户

2、打开目录下的sudoers

进入后是这样的:

大概在100行左右,我们找到该设置:

“Allow root to run any commands anywhere”允许root在任何地方运行让任何命令

3、我们直接yy复制root这行后粘贴到下一行,只把名字root改成我们普通用户的名字即可

4、保存退出

wq保存退出之后会有这个提示,不用担心,这个只是担心我们是不是误操作了,所以我们在wq后加!即可。

现在我们切回普通用户,验证我们可以进行sudo提权:

六、简单vim配置

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。

1、创建文件的位置

  • 在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下, 通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行su,进入自己的主工作目录,执行cd~
  • 打开自己目录下的.vimrc文件,执行 vim .vimrc

2、简单配置vim

  在.virmrc文件里,输入自己想要设置的配置,至于设置什么,那看你自己想要怎么设置,可以去百度搜索vim配置,会出现很多命令,复制粘贴到.vimrc文件里之后,保存打开要编写的文件,就发现已经配置的内容了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1424508.html

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

相关文章

MP3解码入门(基于libhelix)

主要参考资料: 【Arduino Linux】基于 Helix 解码库实现 MP3 音频播放: https://blog.csdn.net/weixin_42258222/article/details/122640413 libhelix-mp3: https://github.com/ultraembedded/libhelix-mp3/tree/master 目录 一、MP3文件二、MP3 解码库三、libhelix-mp3库3.1 …

如何去除字符串两侧的空白字符?

TRIM函数会去掉字符串左侧和右侧的空格&#xff0c;语法是&#xff1a;TRIM(字符串) excel中&#xff0c;TRIM函数能去掉字符串左侧和右侧的空格&#xff0c;它的ASCII码是32。 以下设定一个字符串组合&#xff0c;它的第一个字符中空格&#xff0c;最后一个字符是换行符 &q…

Pathlib,一个不怕迷路的 Python 向导

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

年度更新!统信UOS服务器版V20(1070)超越期待

不负广大客户期待&#xff01; 统信UOS服务器版V20&#xff08;1070&#xff09;年度首更 功能更强大、性能更卓越、生态更丰富 助您畅享安全、便捷、高效的产品和服务 新平台&#xff0c;新生态 统信UOS服务器版始终坚持进行生态适配&#xff0c;目前已支持超过百万种兼容…

Python 全栈体系【四阶】(四十四)

第五章 深度学习 九、图像分割 3. 常用模型 3.4 DeepLab 系列 3.4.3 DeepLab v3&#xff08;2017&#xff09; 在DeepLab v3中&#xff0c;主要进行了以下改进&#xff1a; 使用更深的网络结构&#xff0c;以及串联不同膨胀率的空洞卷积&#xff0c;来获取更多的上下文信…

使用TerraScan静态扫描KubernetsIaC文件

terrascan https://github.com/tenable/terrascan Terrascan 是基础架构即代码的静态代码分析器。Terrascan 允许&#xff1a; 将基础架构作为代码无缝扫描&#xff0c;以查找错误配置。监控已配置的云基础架构&#xff0c;以查找引入终端安全评估漂移的配置更改&#xff0…

Java面试八股之Collection和Collections的区别

Java中Collection和Collections的区别 Collection 是一个接口&#xff0c;位于 java.util 包中&#xff0c;它是 Java 集合框架的顶层接口之一&#xff0c;代表了一组对象的集合。Collection 接口定义了所有集合类型&#xff08;如 List、Set、Queue 等&#xff09;所共有的基…

每周一算法:恰好经过K条边的最短路

题目描述 牛站 给定一张由 M M M 条边构成的无向图&#xff0c;点的编号为 1 ∼ 1000 1\sim 1000 1∼1000 之间的整数。 求从起点 S S S 到终点 E E E 恰好经过 K K K 条边&#xff08;可以重复经过&#xff09;的最短路。 注意: 数据保证一定有解。 输入格式 第 1 …

AquaCrop模型运行及结果分析、代码解析;气象、土壤、作物和管理措施等数据的准备和输入;农业水资源管理

目录 专题一 模型原理与数据要求 专题二 模型数据准备 专题三 模型运行及结果分析 专题四 参数分析 专题五 源代码分析 更多应用 AquaCrop是由世界粮食及农业组织&#xff08;FAO&#xff09;开发的一个先进模型&#xff0c;旨在研究和优化农作物的水分生产效率。这个模型…

海外住宅IP适用场景

海外住宅IP是指海外互联网服务提供商分配给海外家庭的IP地址&#xff0c;通常长期部署在特定区域的公网中&#xff0c;网络连接稳定&#xff0c;能够快速浏览指定网页内容&#xff0c;请求响应成功。它的适用场景十分广泛&#xff0c;接下来将详细介绍哪些领域会使用海外住宅IP…

错误: 找不到或无法加载主类问题(已解决)

今天在虚拟机中安装了idea2023.2的版本&#xff0c;运行代码时发现错误找不到主类&#xff01; 直接说结论&#xff1a; 我先clean了一下target&#xff0c;然后重新build&#xff0c;发现maven报错了&#xff0c;idea2023.2默认使用了内置的maven&#xff0c;然后我切换了一下…

垃圾分类管理系统java项目

文章目录 垃圾分类管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目&#xff08;9.9&#xffe5;带走&#xff09; 垃圾分类管理系统 一、项目演示 垃圾分类管理系统 二、项目介绍 系统角色&#xff1a;管理员、用户 1、登录、注册功能…

单位个人如何向期刊投稿发表文章?

在单位担任信息宣传员一职以来,我深感肩上的责任重大。每月的对外信息宣传投稿不仅是工作的核心,更是衡量我们部门成效的重要指标。起初,我满腔热血,以为只要勤勉努力,将精心撰写的稿件投至各大报社、报纸期刊的官方邮箱,就能顺利登上版面,赢得读者的青睐。然而,现实远比理想骨…

谷歌全力反击 OpenAI:Google I/O 2024 揭晓 AI 新篇章,一场激动人心的技术盛宴

&#x1f680; 谷歌全力反击 OpenAI&#xff1a;Google I/O 2024 揭晓 AI 新篇章&#xff0c;一场激动人心的技术盛宴&#xff01; 在这个人工智能的全新时代&#xff0c;只有谷歌能让你眼前一亮&#xff01;来自全球瞩目的 Google I/O 2024 开发者大会&#xff0c;谷歌用一场…

54.指针

目录 一.什么是指针&#xff1f; 二&#xff0e;定义一个指针变量 三&#xff0e;指针变量类型 四&#xff0e;取地址运算符& 五.取值运算符* 六.视频教程 一.什么是指针&#xff1f; 口语中的指针一般指指针变量&#xff0c;指针变量存放的是一个地址。普通变量存放…

Nacos+GateWay 搭建微服务架构

文章目录 1.当前项目架构分析1.请求多个模块的方式1.请求renren-fast模块开发环境生产环境 2.请求sunliving-commodity模块1.使用环境变量资源路径的方式2.开发环境 dev.env.js3.生产环境 prod.env.js 3.文件上传请求 sunliving-service模块1.请求后端接口&#xff08;开发环境…

上班族兼职新篇章:10大实战攻略,轻松年赚1-20万

对于众多上班族而言&#xff0c;如何在工作之余赚取额外收入&#xff0c;开启自己的第一份副业&#xff0c;已成为许多人心中的疑问。每个人的才能和兴趣点不尽相同&#xff0c;但都有机会找到适合自己的兼职方式。接下来&#xff0c;就让我们一起探索这10大实战攻略&#xff0…

那些年我与c++的叫板(一)--string类自实现

引子&#xff1a;我们学习了c中的string类&#xff0c;那我们能不能像以前数据结构一样自己实现string类呢&#xff1f;以下是cplusplus下的string类&#xff0c;我们参考参考&#xff01; 废话不多说&#xff0c;直接代码实现&#xff1a;&#xff08;注意函数之间的复用&…

20232803 2023-2024-2 《网络攻防实践》实践九报告

目录 1.实践内容2.实践过程2.1 手工修改可执行文件&#xff0c;改变程序执行流程&#xff0c;直接跳转到getShell函数2.2 利用foo函数的Bof漏洞&#xff0c;构造一个攻击输入字符串&#xff0c;覆盖返回地址&#xff0c;触发getShell函数2.3 注入一个自己制作的shellcode并运行…