Linux系统应用(3)——编辑器vim

news2024/11/23 22:39:34

个人内容简介:

🍃个人主页:诉清风2023

🎈逆转时间的公式,就是珍惜现在ദ്ദി˶ー̀֊ー́ ) ✧


目录

个人内容简介:

🎈逆转时间的公式,就是珍惜现在ദ്ദി˶ー̀֊ー́ ) ✧

前言

1、vim的概念

​2、vim的基本操作

3、vim命令模式命令集 

3.1 移动光标类

3.2 删除、复制和粘贴类

3.3 查找和替换类

4、vim底行模式下的功能键

5、vim的其他功能

5.1 文件救援

5.2 多窗口编辑

5.2.1 多个文件分屏编辑

 5.2.2 单个文件分屏编辑

6、对普通用户的升权操作

结语


前言

本节目标

学会使用vim的简单操作,自主完成对普通用户的升权操作

注意

本节并没有难点,同命令学习一样,需要实操和经常练习才能熟练 


1、vim的概念

vim其实就是一个文本编译器

vim有三种常用模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

  • 命令模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段进入Insert mode下,或者到 last line mode  

  • 插入模式

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

  • 底行模式

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。

要查看你的所有模式:打开vim,底行模式直接输入 :help vim-modes

2、vim的基本操作

  • [命令模式]切换至[插入模式]
  • 输入a
  • 输入i
  • 输入o
  • [插入模式]切换至[命令模式]
  • 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以 先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
  • [命令模式]切换至[底行模式]
  •  「shift + ;」, 其实就是输入「:」
  • 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如: 
  • : w (保存当前文件)
  • : wq (输入「wq」,存盘并退出vim)
  • : q! (输入q!,不存盘强制退出vim) 

3、vim命令模式命令集 

首先我们要知道一般是在命令模式下进行功能操作,大致可以分为3类:第一类是移动光标类,第二类是删除、复制和粘贴类,第三类是查找和替换类

3.1 移动光标类

命令模式下的移动光标类的快捷键
按键名称按键的效果
h或者←键光标向左移动一个字符
j或者↓键光标向下移动一个字符
k或者↑键光标向上移动一个字符
l或者→键光标向下移动一个字符
Ctrl+f键或者PgDn键屏幕向文件尾部移动一页
Ctrl+b键或者PgUp键屏幕向文件头部移动一页
n空格(n是数字)按下数字n然后按空格,则光标向右移动n个字符,如果该行字符数小于n,则光标继续从下一行开始向右移动,一直到n
0(数字0)或者Home移动到本行行首
$或者End移动到本行行尾
H光标移动到当前屏幕的最顶行
M光标移动到当前屏幕的中央那一行
L光标移动到当前屏幕的最底行
G光标移动到文件的最后一行
nG(n是数字)光标移动到文件的第n行
gg光标移动到文件的第一行
n回车(n是数字)光标向下移动n行

3.2 删除、复制和粘贴类

命令模式下的删除、复制和粘贴类快捷键
按键名称按键的效果
x,Xx表示向后删除一个字符,X表示向前删除一个字符
n x(n是数字)向后删除n个字符
dd删除光标所在的那一行
n dd删除光标所在的向下n行
d1G删除光标所在行到第1行的所有数据
dG删除光标所在行到末行的所有数据
yy复制光标所在的那一行
n yy复制从光标所在行开始的向下n行
p,Pp将复制的数据从光标下一行粘贴,P则从光标上一行粘贴
y1G复制光标所在行到第1行的所有数据
yG复制光标所在行到末行的所有数据
J将光标所在行与下一行的数据结合成一行
u还原过去的操作
Ctrl+r重做上一个操作
.重复前一个操作

3.3 查找和替换类

命令模式下的查找和替换类快捷键
按键名称按键的效果
/keyword向光标之后查找名为keyword的字符串,当找到第一个keyword后,该单词高亮显示,按n键继续查找下一个,按N键,反方向查找下一个
?keyword向光标之前查找名为keyword的字符串,当找到第一个keyword后,该单词高亮显示,按n键继续查找下一个,按N键,反方向查找下一个
:n1,n2s/word1/word2/g在n1和n2行之间查找word1字符串并替换为word2
:1,$s/word1/word2/g从第一行到最末行,查找word1并替换为word2
:1,$s/word1/word2/gc在第一行到最末行之间查找word1,替换为word2之前需要用户确认
r替换光标所在处的字符
R替换光标所到之处的字符,直到按下「ESC」键为止

 4、vim底行模式下的功能键

命令行模式下的功能键
按键名称按键的效果
:w保存文件内容
:w!如果文件属性为只读时,强制保存
:q退出vim
:q!强制退出vim,不管编辑还是未编辑都不保存内容直接退出
:wq保存文件内容之后立即退出
:e!将文档还原成最原始状态
ZZ等价于:wq
:w[filename]将文档另存为filename
:r[filename]在光标所在行的下面读入filename文档的内容
:set nu在文件中每行的首行设置行号
:set nonu取消已经设置的行号
:n1,n2 w[filename]将n1~n2行的内容另存为filename文件中
:!command暂时离开vim,执行某个Linux命令,例如::!ls /home暂时列出/home下的文件,然后会提示按Enter键返回vim

5、vim的其他功能

5.1 文件救援

        使用vim的过程中可能会出现文件还没来及保存就关闭了终端的情况,这是要挽救没有保存的文件,就要使用vim的救援功能了

        一般情况下,vim在编辑过程会建立一个filename.swp的文件,如果突然退出,这个文件并不会删除。

6个可用选项

  • (1)[O]pen Read-Only:以只读方式打开
  • (2)(E)dit anyway:直接编辑
  • (3)(R)ecover:恢复,即加载暂存盘的内容,用来挽救之前未保存的文件
  • (4)(D)elete it:删除文件,如果确定那个暂存文件是无用的,那么可以先将这个暂存文件删除。有时候如果不确定这个暂存文件是怎么来的,也可以删除它
  • (5)(Q)uit:退出,按q键就可以离开vim,不会进行任何动作,返回到命令行提示符
  • (6)(A)bort:终止,与quit差不多,也会返回到命令行提示符。
  • 在这里,先按R键,再按Enter键,该文件就会出现
  • 注意:
  • 除非选择D键,否则离开vim后,都需要在终端中自行删除该交换文件(rm .filename.swp),不然以后每次使用命令都会出现同样的警告。

5.2 多窗口编辑

5.2.1 多个文件分屏编辑

  • 命令格式

vim -On [FILE_1] [FILE_2]... 或者 vim -on [FILE_1] [FILE_2]...

  •  参数说明
  • -O(大写的O):垂直分割(vertical),不同窗口切换用Ctrl+W+←键或者Ctrl+W+→键
  • -o(小写的o):水平分割(horizontal,默认),不同窗口切换用Ctrl+W+↑键或者Ctrl+W+↓键
  • n:表示分几个屏,可省略,默认按后面要分割的文件数来决定分几个屏
  • [FILE_1] [FILE_2] ...:需要分屏打开的文件。如果只打开了两个文件,重复按两次Ctrl+w键即可切换窗口

 5.2.2 单个文件分屏编辑

在使用vim filename.txt文件是,在一般模式下,输入“:sp”,然后按Enter键,会将该文件显示在两个窗口中,实现水平分屏的功能。

可以使用Ctrl+W+↑键或者Ctrl+W+↓键在上下两个窗口中切换

5.2.3 关闭分屏

要取消其他分屏,保留当前分屏,只需要输入“:only”,然后按Enter键即可;或者按Ctrl+W+o键也可以关闭其他分屏

如果要退出当前所在的分屏,输入“:q”,然后按Enter键就可以了

6、对普通用户的升权操作

对普通用户进行升权操作


结语

到此,我们对vim的初步学习就结束啦,说实话vim并不好用,但是呢它是方便的,而且不论再怎么变换都不会被淘汰,所以我们还是需要把它视为重点来学习的,有不足的话,希望大家指正哦!

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

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

相关文章

junit格式报告解析工具

前言 在测试过程中,使用unittest或者pytest等主流框架,都可以生成junit格式的测试报告。当然也可以生成html格式的报告。但是为了自定义自己的测试报告,我开发了一款web网页工具,使用该工具上传junit格式的xml报告,可…

[Algorithm][综合训练][奇数位丢弃][求和][计算字符串的编辑距离]详细讲解

目录 1.奇数位丢弃1.题目链接2.算法原理详解 && 代码实现 2.求和1.题目链接2.算法原理详解 && 代码实现 3.计算字符串的编辑距离1.题目链接2.算法原理详解 && 代码实现 1.奇数位丢弃 1.题目链接 奇数位丢弃 2.算法原理详解 && 代码实现 解法…

丙类谐振功放的工作状态分析

前言:我们之前已经根据导通角θ,将工作状态分成了甲乙丙三类。我们发现丙类的效率最高,所以现在我们专门分析一下丙类工作状态。 1定量分析与定性分析 定量分析:是指分析以数量形式存在着的属性。 定性分析:是指分析…

2024.8.29 C++

作业 仿照string类&#xff0c;实现myString 代码 #include <iostream> #include <cstring> using namespace std; //仿照string完成myString类 class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度p…

flex实现骰(tou)子点数

文章目录 效果演示分析思路代码实现 效果演示 分析思路 5点需要使用margin进行移动点数。而6点的话&#xff0c;使用align-content: space-between;和 justify-content: space-between;就能实现&#xff0c;不过需要注意的是主轴为侧轴&#xff0c;dot的第二个要给padding才能实…

【功能自动化】自动识别测试用例

1.创建unitWebtours.py 将unitWebtours.py放在test文件夹下 unitWebtours.py 代码实现 from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleep import unittestdriver Noneclass Webtours(unittest.TestCase):clas…

java写入word表格(poi-tl)

1.导入依赖 <!--poi-tl--> <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version> </dependency>2.代码 自己创建模板。放在&#xff08;resource/file&#xff09;…

如何更改 Mac 上 Java 的默认版本?

优质博文&#xff1a;IT-BLOG-CN 第一次运行/usr/libexec/java_home -V将输出类似以下内容&#xff1a; Matching Java Virtual Machines (3): 1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 1.6.0_65-b14-4…

那么啥是MySQL集群技术捏

Mysql 集群技术 一 Mysql 在服务器中的部署方法 在企业中90%的服务器操作系统均为Linux 在企业中对于Mysql的安装通常用源码编译的方式来进行 官网&#xff1a;http://www.mysql.com 1.1 在Linux下部署mysql 1.1.1 安装依赖性&#xff1a; [rootmysql1 ~]# yum install c…

Windows通过网线连接开发板共享网络

Windows端 打开更开适配器选项右键WLAN–属性–共享 右键以太网–属性–Internet协议版本4(TCP/IPv4) 记住IP地址 开发板端 查看网卡 ifconfig设置IP在同一网段 ifconfig eth0 192.168.137.2 netmask 255.255.255.0设置网关 route add default gw 192.168.137.1配置DNS su…

Python-MNE-源空间和正模型03:自动源配准的方法

这个例子展示了如何使用coregistration函数通过脚本自动完成MEG-MRI的coregistration。一般情况下&#xff0c;该方法的结果与人工共配准的结果是一致的。 **但一定要注意&#xff1a;**协同配准的质量在很大程度上取决于受试者准备过程中收集的头形点(HSP)的质量和t1加权MRI的…

C语言重难点总结(1)-指针、二维数组、结构体(联合体、枚举)

本节内容 1.指针&#xff08;指针数组、数组指针&#xff09; 2.二维数组&#xff08;指针操作与二维数组&#xff09; 3.结构体、联合体、枚举 一、指针 1.什么是指针&#xff1f; 内存中字节的编号地址称为指针 2.指针的大小&#xff1f; 固定为四字节 3.指针变量的…

YOLOv8改进 | 注意力篇 | YOLOv8引入CBAM注意力机制

1.CBAM介绍 摘要&#xff1a;我们提出了卷积块注意力模块&#xff08;CBAM&#xff09;&#xff0c;这是一种用于前馈卷积神经网络的简单而有效的注意力模块。 给定中间特征图&#xff0c;我们的模块沿着两个独立的维度&#xff08;通道和空间&#xff09;顺序推断注意力图&…

Python | Leetcode Python题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, nums: List[int]):self.nums numsself.original nums.copy()def reset(self) -> List[int]:self.nums self.original.copy()return self.numsdef shuffle(self) -> List[int]:for i in range(l…

C++ | Leetcode C++题解之第383题赎金信

题目&#xff1a; 题解&#xff1a; class Solution { public:bool canConstruct(string ransomNote, string magazine) {if (ransomNote.size() > magazine.size()) {return false;}vector<int> cnt(26);for (auto & c : magazine) {cnt[c - a];}for (auto &am…

群晖(Docker Compose)配置 frp 服务

为了方便远程电脑&#xff0c;访问自己电脑上的ComfyUI等服务&#xff0c;配置了 frp 服务。 配置 frp 服务后&#xff0c;发现群晖中的一些服务也可以 stcp 安全的暴露出来。 直接在群晖通过 Docker Compose 方式部署 frps 和 frpc&#xff0c;访问者通过 frpc 安全访问暴露…

计算机三级网络第3套练习记背

计算机三级网络第3套练习记背

【C++ | 设计模式】抽象工厂模式的详解与实现

1. 概念 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;用于创建一系列相关或相互依赖的对象&#xff0c;而无需指定它们具体的类。它允许客户端代码通过工厂接口来创建一组对象&#xff0c;而无需了解它们的具体实现细节。 …

从暴力到秩序:解锁权力奥秘

从暴力到秩序&#xff1a;解锁权力奥秘 - 孔乙己大叔权力的诞生 在人类社会的最初形态中&#xff0c;权力往往源自最原始的力量——暴力。一个人&#xff0c;起初仅拥有一把枪&#xff0c;他的权力简单而直接&#xff1a;决定对谁开枪。然而&#xff0c;随着他利用这把…

【58同城-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …