Linux开发工具(2)——vim

news2024/12/24 21:36:33

文章目录

    • 多模式编辑器——vim
      • vim的基本操作
      • 命令模式(Normal mode)
      • 插入模式(Insert mode)
      • 底行模式(Last line mode)
    • vim的基本配置原理
    • 配置sudoers文件

多模式编辑器——vim

vim是一种多模式编辑器,我这里的vim总共有14种模式,如何查看vim都有什么模式呢?

首先输入指令vim打开vim,然后输入:help vim-modes最后输入回车即可查看vim的模式信息。
vim是一个编辑器那么什么是编辑器?编辑器也是可以写代码的,但是不能编译和运行代码,只能用来编辑代码,这就类似Windows里面的记事本,要和vs2019这种IDE区分开来,IDE是一个集编辑器编译器链接器等等的一个集成开发环境有了这一个IDE我们就可以完成代码的编写编译和运行调试。

vim的模式众多但是日常用到的模式只有几个,这里我会介绍四个模式:命令模式(Normal mode),底行模式(last line mode),插入模式(Insert mode),替换模式(Replace mode)。

vim的基本操作

vim [文件名]
例如: vim test.c
使用vim打开文件。
在这里插入图片描述

然后就进入了这个界面,需要注意的是使用vim打开文件,如果该文件不存在,那么vim会创建一个test.c文件并打开。

模式之间的切换
我们使用vim打开文件之后默认处于命令模式
在命令模式下,按大多数按键除了命令按键之外,都是没有用的,系统还会发出嗡嗡的警告声。
命令模式和插入模式之间的切换
在命令模式下输入i 就会进入插入模式,现在vim最底下会显示一个–INSERT–这时候就可正常进行文件的编写了。
在这里插入图片描述

如果想要从插入模式退回到命令模式,只需要按Esc按键即可。
命令模式和底行模式之间的切换
在命令模式下,输入:(冒号,也就是shift + ;)即可进入底行模式。
在这里插入图片描述

当前在最底行会显示一个冒号和光标,这时候我们就可在底行输入指令了。
从底行模式退回到命令模式也是按Esc即可。
注意:不可能从插入模式直接跳到底行模式,或者从底行模式直接跳到插入模式
从命令模式进入替换模式
在命令模式下,输入R(也就是shift + r)就可进入替换模式,同样的,退出替换模式只需要按Esc即可。

命令模式(Normal mode)

在命令模式下,我们除了可以向其他模式跳转,还可进行一些快速高效率的文件操作。

首先是进行光标移动
上下左右的移动,可以使用小键盘的方向键,但是还可以使用HJKL这四个按键,因为小键盘离我们的手比较远,所以使用H J K L比较方便。
H:向左移动光标
J :向下移动光标
K: 向上移动光标
L: 向右移动光标

那么为什么会出现这种移动光标的按键呢?
其实是在早期的键盘上是没有上下左右小键盘的,所以要进行光标移动就需要使用别的按键
在这里插入图片描述

为了 方便记忆按键对应的方向,可以这样想,H在最左端就是向左移动,L在最右端就是向右移动,J就是Jump的意思,向下跳,自然对应向下移动,K就是King国王自然高高在上就是向上移动。

光标定位
shift + 4 ($):将光标移动到行末
shift + 6 (^):将光标移动到行始
**shift + g **: (G)将光标移动到文档末尾
gg:回到文档的第一行。
n + shift + g: 跳转到文档的第n行

文本编辑相关的快捷键
yy :复制光标所在行的文本 (nyy从当前行开始向下总计复制n行文本)yy相当于是1yy
p :粘贴,将复制的文本粘贴到光标所在行(支持多次粘贴,npp就是从光标所在行向下连续粘贴n次)
dd :删除, 删除光标所在行(ndd删除n行)
剪切指令在vim这里就是先dd然后再p,就可完成剪切的功能。
ctrl + r :恢复撤销的操作,也就是取消u的操作。
shift + **:(组合起来就是~)将光标移动到要进行大小写转换的行上,一直按住shift + 就自动向后进行大小写转换,会把大写变为小写,小写变为大写,如果想要转换一个字符那么就按一次。
行内删除:x就是从光标开始向后删除,shift + x(X)就是删除光标前的字符,向前删除
删除支持
nx
nX**,同时删除掉的字符可以使用p粘贴出来。
w:向后移动光标,按单词移动
b :向前移动光标,按单词移动

总结:命令模式给我们提供的快捷键可以大大加快我们对文档进行批量化操作的效率,所以命令模式的意义就是提高编辑效率。

插入模式(Insert mode)

插入模式很简单,就是可以正常的进行文本输入。
从命令模式进入插入模式有很多方式,常用的就是三个按键
i,进入插入模式后光标不动,可以直接再光标处输入
a,进入插入模式后光标向后移动一个位置
o,进入插入模式后光标会向下插入一个空行,并且移动到该空行上

底行模式(Last line mode)

在命令模式下输入:进入底行模式,在底行里我们可以输入很多指令,这里主要介绍几个常用的指令。

  1. set nu 可以显示行号
  2. set nonu 取消显示的行号
  3. vs [文件名] 可以进行分屏,如果文件不存在会创建一个文件在这里插入图片描述
    还可以分很多屏理论上没有限制,但是我们的屏幕只有这么大,而且在我分到第五屏的时候就卡死了。我们可以使用ctrl + ww在分屏之间切换,也就是在各个屏幕之间移动光标,光标在那一屏那么我们就可以在那一屏进行操作。
  4. 底行输入!+ shell指令就可以执行命令,比如我们在vim下编写代码的时候遇到了一个库函数不知道该如何使用,那么我们可以直接用man查询这个函数。指令就是:!man 3 memset 然后加回车即可。在这里插入图片描述
    会直接跳转到man手册里面,按下q退出man手册之后会回到命令行界面。在这里插入图片描述
    只要按下enter就可回到vim里面继续编辑代码。
  5. : %s/printf/cout/g 批量替换,输入这一行指令就是将文档中所有的printf替换成cout,这里的g就是globa代表全局的意思。
  6. 在底行中直接输入数字,就可将光标跳转到数字对应的行。
  7. /关键字,输入/后直接输入要查找的关键字,就可以在文档中查找你输入的关键字并进行高亮。如果当前显示的不是你要找的,按n会直接向下跳到下一个关键字处。
  8. ?关键字,输入?后直接输入要查找的关键字,就可以在文档中查找你输入的关键字并进行高亮。如果当前显示的不是你要找的,按n会跳到上一个关键字处,按enter会跳到下一个关键字处。

可以看到?和/的功能是不是一样的,看起来是一样的,但是他们还是有不同的。

最后的指令就是如何保存文件并退出vim,在底行模式下,输入q就是quit的意思,直接退出不保存,输入w就是保存文档,保存并退出就是wq。如果遇到了只读文件使用w不能保存那么我们可以输入w!加上!表示强制保存,退出的时候如果退出不了也可以使用q!强制退出,wq!就是强制保存并退出。

vim的基本配置原理

我们现在的vim实际上是非常难用的,没有配置的vim写代码就像是在windows的记事本上写代码,没有自动补全,没有代码高亮,没有缩进等等。
所以我们要对我们的vim进行配置,配置vim的原理就是在当前用户的家目录下添加一个.vimrc的文件,以点开头的文件都是隐藏文件,添加完.vimrc文件然后我们就可以在这个文件里面进行配置了。
在这里插入图片描述

这是.vimrc里面的内容,保存退出。
配置完之后再用vim打开一个文件
在这里插入图片描述

这样就可以默认显示行号了。
更多具体的配置我们可以百度出来,然后将对应的选项加入.vimrc文件保存之后,如果添加的指令没有在vim里面生效,可以输入source .vimrc让配置生效一下,如果还是不行,那说明你设置的选项在当前的vim下不支持。
关于vim的配置:

  1. vim的配置是一人一份的,配置一个用户不影响其他用户,因为我们当前用户的.vimrc配置文件时是在用户的家目录下,每个用户的配置文件不同那么vim的配置自然就不同。
  2. 所有用户使用的是同一个vim程序,但是使用的是不同的vim配置文件。
  3. 配置vim,就是修改用户家目录下的.vimrc配置文件。
  4. 从哪里可以获取vim的配置选项?百度吧少年

虽然说vim的配置文件是每个用户都有一个的也就是说每个用户的vim配置是不一样的,但是我们也可设置一个全局的vim配置给所有的用户都进行vim的配置,这个配置文件的路径就是/etc/vimrc,vimrc就是这个全局的vim配置文件。
在这里插入图片描述

配置sudoers文件

如果没有配置过sudoers文件那么是不能使用sudo指令来进行提权的。
在这里插入图片描述

会爆出错误说你当前的用户不在sudoers文件中,为了解决这个问题我们就需要配置一下该文件。
首先需要找到sudoers这个文件,这个文件的路径是:/etc/sudoers
在这里插入图片描述

然后使用vim打开这个文件,找到下面这一部分文本
在这里插入图片描述

在这里添加上你要授权sudo的用户保存退出即可,因为该文件是只读的,所以保存退出的时候要使用wq!来强行退出。
在这里插入图片描述

添加完毕后就可以正常使用sudo了。

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

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

相关文章

MYSQL语法一:创建表和查看表的所有列和所有数据库等

前言:接下里,我们即将开启mysql的旅行之路。首先是它的基础知识 1.mysql的基本知识点 mysql是客户端加服务器的模式。 客户端给服务器发送的数据称为请求request 服务器给客户端返回的数据称为响应response 客户端和服务器可以在不同主机上,…

轻松学习jQuery事件和动画

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:前端开发者…

计算机网络-网络层详细讲解(持续更新中)

网络层概述 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。 要实现网络层主要任务,需要解决以下主要问题: 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输‘)网络层寻址问题路由…

小啊呜产品读书笔记001:《邱岳的产品手记-04》第07+08讲 关于需求变更

小啊呜产品读书笔记001:《邱岳的产品手记-04》第0708讲 关于需求变更一、今日阅读计划二、泛读&知识摘录1、07讲 关于需求变更(上):需求背后的需求2、08讲 关于需求变更(下):化变更于无形三…

【Pytorch with fastai】第 14 章 :ResNet

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

自动化测试selenium在小公司的成功实践

前言 可能提到自动化测试selenium,大家都会想到用python语言来编写脚本。但我们选择了java语言,因为我相信大部分公司java程序员比python程序员多得多。而对于很多测试人员,并不能熟练使用编程语言,所以他们需要别人指导。与其使…

iOS 16.2 的7个惊人变化

看起来 iOS 16 正在不断扩展 你已经知道 iOS 16 和 iOS 16.1 有多么不可思议。所以我认为下一次更新已经没有多少了——iOS 16.2。 Apple 刚刚通过 iOS 16.2 Developer Beta 1 消除了这些信念。 Developer Beta 2 中还有 7 个变化。相信我,它们也很棒。 #1、锁定屏幕的药物…

qemu创建linux虚拟机(亲测有效,virt-manger方式)

1,网桥的搭建 Bridge方式原理 Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。 桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多…

Chrome 扩展教程之如何使用 React 构建 Chrome 扩展(教程含源码)

创建自己的 Chrome 扩展程序比许多人想象的要容易。这很有趣。我们可以尽情发挥我们的创造力,根据需要修改每个网站。 在本文中,我将首先向您展示如何设置 Chrome 扩展程序。之后,我们将设置一个 React 应用程序并将其加载到任何网站上。 设置 在我们开始之前,让我们在我…

对称加密和非对称加密

对称加密 加密和解密时使用的是同一个秘钥,这种加密方法称为对称加密,也称为单密钥加密。 优点:算法公开、计算量小、加密速度快、加密效率高。 缺点:如果一方的秘钥被泄露,那么加密信息也就不安全了。 示例AES pri…

VMware Workstation中桥接模式、NAT模式、仅主机模式

一、VMware虚拟机的网络模式 VMware工作站虚拟机有三种网络模式【①桥接模式 ②NAT模式 ③仅主机模式】,如下图所示: 二、VMware虚拟机的网络模式介绍 2.0、VMware的虚拟设备 VMware的虚拟设备序号虚拟设备编号说明1VMnet0是虚拟桥接网络下的虚拟交换机…

【正点原子FPGA连载】 第二章 实验平台简介 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二章 实验平台…

CNN (吴恩达 2021

week1-2 02_边缘检测例子_哔哩哔哩_bilibili ​ ​ 我们之前在说面部识别介绍过,要识别面部,都是从细微的边缘入手,一层一层聚类,最终实现人脸的识别。神经网络由浅层到深层,分别可以检测出图片的边缘特征 、局部特…

【Linux】基本指令(一)

文章目录前言操作系统简述学习指令的原因ls 指令pwd 指令cd 指令touch 指令tree 命令mkdir 指令rmdir 和 rm 指令nano 指令clear 指令whoami 指令常用键位结语前言 今天,我们开始 Linux 的学习。本篇博客内容为 操作系统简述、Linux 基本指令、和几个 Linux 常用键…

Wordpress 生手遇到一堆问题,反应巨慢,提速插件又是一堆错误

环境 LAMP:Debian,Apache,MariaDB,PHP 7.4 Wordpress安装几乎没有什么要求,几乎没有特别的设置就可以顺利安装成功,但随着插件的增加,问题就慢慢出来了。 写两页就会发现Wordpress反应巨慢&…

LiteFlow 开源编排规则引擎

osgi 让 java 系统变成模块化的形式,ASM 是一款修改字节码的框架,同类型的框架 Cglib。这些框架能加载一个 class 信息,Javaagent&Attach API 结合 ASM LiteFlow 的理念很简单,就是把系统中的各个逻辑切分成一小块一小块的&am…

XCIE-HUAWEI-PBR-MQC-引入形成的路由环路

XCIE-HUAWEI-PBR-MQC-引入形成的路由环路 首先来个测试 给你们选,答案选啥呢? 正确答案在结尾公布 正确答案是C 为什么呢? 首先,虽然ACL有一个齐总是拒绝的,但是呢,他两都是同一条路由 但是呢!&#x…

用于高通量实验筛选的化合物库 | MedChemExpress

Protein-Protein Interaction Library (含 59,370 种化合物) 用于发现新的 PPI 抑制剂 蛋白质相互作用 (PPI)是研究生物反应机制的重要工具。PPI 能产生许多效应,如改变蛋白质对其作用底物的专一性、生成新的结合位点、形成特异底物作用通道等。针对PPI的药物设计为…

Android App开发触摸事件中手势事件Event的分发流程讲解与实战(附源码 简单易懂)

需要源码或运行有问题请点赞关注收藏后评论区留言~~~ 一、手势事件的分发流程 智能手机的一大革命性技术就是把屏幕变为可触摸设备,既可用于信息输入也可以用于信息输出。与手势事件有关的方法主要有以下三个 dispatchTouchEvent 进行事件分发处理 返回结果表示该…

机器学习模型5——贝叶斯分类器

前置知识 条件概率 贝叶斯公式 (贝叶斯模型还是很好理解的,主要基于高中就学到过的条件概率。) 贝叶斯定理 P(A),P(B)分别是事件A,B发生的概率,而P(A|B)是在事件A在事件B发生的前提下发生的概率&#xf…