当前位置: 首页 > news >正文

Linux环境开发工具之vim

前言

上一期我们已经介绍了软件包管理器yum, 已经可以在linux上查找、安装、卸载软件了,本期我们来介绍一下文本编辑器vim。

本期内容介绍

什么是vim

vim的常见的模式以及切换

vim命令模式常见的操作

vim底行模式常见的操作

解决普通用户无法执行sudo问题

vim配置

一、什么是vim?

vim是一款多模式的文本编辑器。

多模式是指他有不同的操作模式,各个模式的功能是不是一样的。我知道的他好像有12种模式!

二、vim常见的模式

vim的常见模式有三种,分别是:命令模式(正常、普通模式)、插入模式底行模式

命令模式

默认一开始进入vim(在命令行输入:vim filename)的那个模式(左下角有"normal一般的"提示)!

作用:允许使用者通过相关的指令,来进行文本的编辑和控制。例如光标移动等

在bash输入vim filename即可进入,此时就是命令模式!

插入模式

通过在命令模式按i\a\o等进入的那个模式(左下角有"insert插入"的提示)!

作用:进行对文本的编辑!

底行模式

在命令模式按shift + ; = :进入的模式(有"command命令"的提示)进入后下面会有 : 和光标等你操作!

作用:文本保存、退出,与shell交互等

三种模式的切换

命令模式切换到插入模式

在命令模式输入: i\o\a

i\o\a的区别:

i进入后光标在上一次的位置(第一次进入在文本内容的第一个字符处)!

o进入后会光标在上一次的行换行到下一行(第一次o进入默认第一行换到第二行!)!

a进入后光标会转移到上一个字符的下一个位置(第一次进入在文本内容的第一个字符处

i进入:

o进入:

a进入:

插入模式切换到命令行模式

直接在插入模式按Esc即可退出到命令模式

命令行模式切换到底行模式

直接在命令行模式按 shift + ; 到底行模式

底行模式切换到命令行模式

直接在底行模式按Esc即可退出到命令模式

底行模式是无法直接进入插入模式的!同样,插入模式也是无法直接进入底行模式的!要想在底行模式进入插入模式,可以先底行到命令,在命令到插入!插入到底行则反之!

三、vim命令模式常见的操作

光标移动

将光标定位到当前行的结尾: shift + 4 = $ 

将光标定位到当前行的开始: shift + 6 = ^

将光标定位到整个文件的最开头:gg

将光标定位到整个文件的最后一行:shift + g = G

将光标定位到任意行: n + shift + g = nG

上、下、左、右 :k、j、h、l 这几个也都支持n(键盘的上下左右也是支持的)

光标以照单词为单位进行后移: w

光标按照单词为单位进行前移: b

光标移动到下一个单词的结尾:e

复制

复制当前行: yy  

连续复制n 行:n + yy

粘贴到当前行的下一行:p

当前行的下一行开始粘贴n行:n + p

撤销:u

对指令撤销(对撤销撤销): ctrl + r

剪切/删除:dd

剪切/删除n行 :n + dd

删除

删除光标后的一个字符(一行内):x

删除光标后的n个字符(一行内):n + x

删除光标前的一个字符(一行内):shift + x

删除光标前的n个字符(一行内):n + shift + x

删除当前行:dd

替换

大小写转换:shift + ` = ~

替换光标所在的字符:r 

替换光标所在的后n个:n + r 

替换模式替换(替换光标所到之处的字符,Esc结束到命令模式):shift + r = R 

注释和去注释

注释:ctrl + v,hjkl, shift + i, //, Esc*2

去注释:ctrl + v, hjkl, //, d(注意在选择时仅仅选择注释//即可)

四、vim底行模式常见的操作

列出行号:set nu

跳转到文件中的某一行:n

搜索字符:/ + 字符 或 ? + 字符

保存:w

退出:q

保存并退出:wq(一般建议在退出vim时wq

强制:!

不退出vim与shell交互:!command

分屏(多文件操作):vs filename

五、解决普通用户无法执行sudo问题

我们以前在权限的时候介绍过,在你执行某个是需要root权限,但是你又是普通用户;你又想让你的指令以root的身份执行时,此时可以利用sudo指令对你的指令赞提权!此时输入你的密码就可以以root的身份执行指令了!但问题我们前面也说了,如果每个普通用户都可以随意sudo的话那岂不是没有必要存在root了,而且也很危险!所以linux默认一般的用户是无法执行sudo的,普通用户要想执行sudo就必须让root把你添加到以前的白名单中!他就是:/etc/sudoers

ls /etc/sudoers/

我们现在介绍了vim可以利用vim让root把你把自己的账户添加到这个文件中(自己没有权限无法添加)

一进去是这样的:

可以在底行模式调出行号:

在100行左右找到这个:

然后: yy 在 p一下, i 进入插入模式,只需要把root换成你普通用户的名字即可!

底行退出vim时此时需要 wq!

ok,这样cp这个普通用户就可以以root的身份执行指令了!!!

六、vim配置

在/etc/ 目录下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的家目录下,都可以自己建立私有的配置文件,命名为:“ .vimrc ”,如果不存在自己创建。 配置Vim就是对这个文件的内容进行修改!!!

简单的vim配置

 set nu           "在左侧行号 set tabstop      "tab 长度设置为 4set autoindent   "自动缩进set cindent "设置c语言自动对其  syntax on  "设置语法高亮set shiftwidth=4 "设置缩进的空格数为4//....

这有好多的设置,可以上网查询更多的!如果嫌麻烦私信我教你一键生成~!

OK,好兄弟本期分享就到这里,我们下期再见!

结束语:

你我终将上岸,阳光万里!

相关文章:

Linux环境开发工具之vim

前言 上一期我们已经介绍了软件包管理器yum, 已经可以在linux上查找、安装、卸载软件了,本期我们来介绍一下文本编辑器vim。 本期内容介绍 什么是vim vim的常见的模式以及切换 vim命令模式常见的操作 vim底行模式常见的操作 解决普通用户无法执行sudo问…...

「Linux系列」Shell介绍及起步

文章目录 一、Shell简介二、Shell脚本三、Shell解释器四、相关链接 一、Shell简介 Shell本身是一个用C语言编写的程序,它既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计…...

用pdf2docx将PDF转换成word文档

pdf2docx是一个Python模块,可以将PDF文件转换为docx格式的Word文档。 pdf2docx模块基于Python的pdfminer和python-docx库开发,可以在Windows、Linux和Mac系统上运行。它可以从PDF文件中提取文本和图片,并将其转换成可编辑的Word文档&#xf…...

STM32U5 ADC 自校准不成功的问题分析

1、引言 很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括 ADC 上电/掉电序列在内的所有校准动作。在这个过程中,ADC 计算出一个校准因子,并在内部应用到此 ADC 模块,直到下一次 ADC 掉电。…...

使用光标精灵更换电脑鼠标光标样式,一键安装使用

想要让自己在使用电脑时更具个性化,让工作和娱乐更加愉快,改变你的电脑指针光标皮肤可能是一个简单而有效的方法。很多人或许并不清楚如何轻松地调整电脑光标样式,下面我就来分享一种简单的方法。 电脑光标在系统里通常只有几种默认图案&…...

微服务day04(上)-- RabbitMQ学习与入门

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但…...

Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动)

Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动) 链接:https://pan.baidu.com/s/1UfFyZ6y-EFq9jy0T_DTJGA 提取码:ewdi * 1.读取图片 ****************...

npm 插件 中 版本号为 星号 是什么意思

npm 插件 中 版本号为 星号 是什么意思 "dependencies": {"hstool/side-adaptor": "*","hsui/core": "*","h_ui": "*" }, "devDependencies": {"plugin-jsx": "*","…...

Codeforces\ Round\ 930(C.Bitwise Operation Wizard)

C o d e f o r c e s R o u n d 930 ( C . B i t w i s e O p e r a t i o n W i z a r d ) \Huge{Codeforces\ Round\ 930(C.Bitwise Operation Wizard)} Codeforces Round 930(C.BitwiseOperationWizard) 文章目录 题意思路注意 标程 题目链接:[B.Bitwise Operati…...

监控系统prometheus+grafana+发送告警信息

1、基础环境准备两台或更多的主机 2、关闭selinux vi /etc/selinux/config,修改SELINUX的值为disabled 3、关闭防火墙 systemctl disable firewalld systemctl stop firewalld 4、prometheus官网下载 https://prometheus.io/download/ 5、grafana官网下载 https…...

IoT 物联网场景中如何应对安全风险?——青创智通

工业物联网解决方案-工业IOT-青创智通 ​随着物联网(IoT)技术的快速发展,越来越多的设备、系统和应用被连接到互联网上,从而构建了一个庞大的物联网生态系统。然而,这种连接性也带来了前所未有的安全风险。在物联网场景…...

滴滴基于 Clickhouse 构建新一代日志存储系统

滴滴基于 Clickhouse 构建新一代日志存储系统 ClickHouse 是2016年开源的用于实时数据分析的一款高性能列式分布式数据库,支持向量化计算引擎、多核并行计算、高压缩比等功能,在分析型数据库中单表查询速度是最快的。2020年开始在滴滴内部大规模地推广和应用,服务网约车和日…...

虚拟主机去除index.php目录地址

复制代码到NGINX设置 虚拟主机去除index.php目录地址-复制代码-NGINX设置 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s/$1 last; break; } } location ~ /\.ht { deny all; }...

JD商品详情原数据 API 返回值说明

一、应用场景 商品详情原数据API的应用场景广泛而多样。具体来说,它可以被用于以下方面: 1、电商平台数据分析:电商平台可以通过商品详情原数据API提取商品销售数据、质量评分、评论和反馈等信息,从而帮助用户更好地理解市场和竞…...

python日常刷题(一)

前言:本文记录2024年3月11日至2024年3月19日牛客网所做的基础题目(错题本): 🎬个人简介:努力学习ing 📋本专栏:python日常刷题 🎀CSDN主页:愚润求学 文章目录…...

Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库

如何将Excel数据插入到MySQL数据库中 在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理。本文将介绍如何使用Python将Excel表格中的数据插入到MySQL数据库中。 导入必要的库 首先,我们…...

Stable Diffusion训练图片时,简陋的数据处理

0 图片从命名 如果有强迫症,看到似乎乱码的命名会不舒服,那么就批量从命名 import osdef rename_files_in_directory(directory, key_word, new_suffix):i 1for filename in os.listdir(directory):new_file key_word str(i).zfill(3) new_suffixsou…...

如何在ubuntu 18.04中升级python 3.6到3.7

在ubuntu下安装python 3.7有两种方法: 1,通过使用Deadsnakes PPA中的标准apt工具(本文暂时只介绍这种方法) 2,从源代码进行构建。 前提条件: 需要以root用户或具有sudo访问权限的用户身份登录才能在Ubuntu系统上安装软件包。 方法一:使用apt工具安装…...

python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息

Task1 读取网站主页整个页面的 html 内容并解码为文本串(可使用urllib.request的相应方法),将其以UTF-8编码格式写入page.txt文件。 Code1 import urllib.requestwith urllib.request.urlopen(https://dblp.dagstuhl.de/db/conf/kdd/kdd202…...

简单记录一次帮维修手机经历(Vivo x9)

简介 手边有一台朋友亲戚之前坏掉的Vivo X9手机, 一直说要我帮忙修理一下, 我一直是拒绝的, 因为搞程序的不等于维修的(会电脑不等于维修电器),不知道这种思路如何根深蒂固的,不过好吧&#xff…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...