Linus: vim编辑器的使用,快捷键及配置等周边知识详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- vim的安装
- 创建新用户 adduser + 用户名
- Linus是个多用户的操作系统
- 是否有创建用户的权限
- 查看当前用户身份:whoami**
- 怎么创建
- 设置密码passwd
- sudo提权(sudo输入的是用户的密码)
- 普通用户切换成root:su
- 修改sudoers
- 易犯错误
- vim三种常见模式
- 命令模式
- 复制粘贴:yy+p
- 撤销u与撤销复原ctrl+r
- 剪切dd
- 在文本中进行快速移动
- 大小写切换和删除字符
- 替换模式shift+r**
- 保存退出:shift+zz
- 批量化注释(比较复杂)
- 批量化去注释
- 插入模式
- 底行模式
- vim的配置
- vim的原理
- 手动配置
- 一键配置
vim的安装
因为vim的配置在每个用户上面是不一样的.跟我们的windows一样,可以进行个性化设置.下面我给大家从创建一个新用户开始,一步步教学.
root用户安装vim
指令:yum -y install vim
yum install vim 表示安装vim,-y(yes)表示确定安装.
因为我提前安装好了,所以它显示nothing to do.
创建新用户 adduser + 用户名
Linus是个多用户的操作系统
首先,Linus和windows一样,是个多用户的操作系统.也就是你可以同时拥有多个用户.
[root@iZ2vc7kou0oyop7xcabvtoZ ~]# ll /home
total 8
drwx------ 3 admin admin 4096 Jul 22 18:00 admin
drwx------ 7 king king 4096 Jul 23 18:01 king
我们可以用ll /home 查看我们当前系统有几个一般用户.我当前系统有两个一般用户:admin和king.
是否有创建用户的权限
查看当前用户身份:whoami**
[root@iZ2vc7kou0oyop7xcabvtoZ ~]# whoami
root
root是超级管理员,基本啥事都能干.
[king@iZ2vc7kou0oyop7xcabvtoZ root]$ whoami
king
一般用户也可以进行创建.但是一般用户要先对sudo进行提权
sudo提权相当于给这个用户加进白名单,代表这个用户值得信任,让这个用户有root的权力.
怎么创建
在root用户下:adduser + 用户名

在家目录就可以看到新用户了

设置密码passwd
passwd:设置密码

sudo提权(sudo输入的是用户的密码)
没提权前:
[king@iZ2vc7kou0oyop7xcabvtoZ root]$ sudo adduser shh
[sudo] password for king:
king is not in the sudoers file. This incident will be reported.
在linus系统中有一个文件sudoers,里面就记载着这个"白名单".要修改这个文件得把用户切换成root
普通用户切换成root:su
su输入的密码是root的密码
[king@iZ2vc7kou0oyop7xcabvtoZ root]$ whoami
king
[king@iZ2vc7kou0oyop7xcabvtoZ root]$ su
Password:
[root@iZ2vc7kou0oyop7xcabvtoZ ~]# whoami
root
修改sudoers
[root@iZ2vc7kou0oyop7xcabvtoZ ~]# ll /etc/sudoers
-r--r-----. 1 root root 4358 Dec 17 2023 /etc/sudoers
要修改sudoers,需要我们提前安装好vim.所以我们先用root用户安装vim,
在root用户下:vim /etc/sudoers
[root@iZ2vc7kou0oyop7xcabvtoZ king]# vim /etc/sudoers
我们首先会看到这样的一堆代码,记住:先别慌.

我们先按下shift键+分号键; ->其实相当于输入冒号

左下角会出现一个冒号的标志,代表vim进入底行模式(先别管是什么,我下面会讲).
输入命令:set nu,然后回车

鼠标下拉(或者一直按住j键),滑到100行.

输入yy(复制) + p(拷贝) .会拷贝出新的一行.
这些指令下面都会一一提及.

先按esc键,从底行模式切换到命令模式.
再按i键 从命令模式切换到插入模式.
插入模式就跟我们平常写代码一样可以正常输入.
最后再把root改成我们新建的用户名.

上面的做完,就可以退出了.esc+(shift+;)->回到底行模式.输入:wq!
w->写入,q->退出.!->强制
易犯错误
用一般用户访问sudoers

左下角会出现Permission Denied->拒绝访问.因为你是一般用户,看不了sudoers.
那怎么除去呢?
shift+; 进入底行模式
q! 因为一般用户对sudoers没有读写权限,没有w.直接q!->强制退出,
vim三种常见模式

这是vim三种模式的关系图,下面我会一一讲解.
命令模式:通过命令来控制文本的逻辑(例如拷贝,粘贴)
插入模式:进行编辑
底行模式:包括但不限于让vim和shell进行交互.(wq->写入并关闭)

指令:touch test.c 新建一个test.c的普通文件
[root@iZ2vc7kou0oyop7xcabvtoZ king]# vim test.c
按下i ,进入编辑模式.左下角有INSERT的标记代表进入成功.
然后按下esc+(shift+;)进入底行模式.
输入set nu设置行号

命令模式
复制粘贴:yy+p
在命令模式:光标在第四行,按下yy(复制)+p(拷贝),在下一行拷贝出与上一行一样的内容.

LInus支持一次拷贝多行和一次复制多次
n+yy:一次拷贝多行
演示:我在第四行按下3yy+p

n+p:一次复制出多份
演示:yy+99p 一次打印出99份printf(“hello vim\n”);

撤销u与撤销复原ctrl+r
相当于windows的ctrl+z撤销 ctrl+r复原

按下u

ctrl+r

注意,左下角一直有提示
剪切dd
相当于windows的ctrl+x.剪切的功能不只有删除
n+dd:一次剪切n行
按下5dd

按下p,粘贴你所剪切的内容.

在文本中进行快速移动

定位到行的开始:^

定位到行的结束:$

定位到文本的最开始:gg

定位到文本的最后一行:shift+g

定位到文本的第n行:n+shift+g
这里我敲的是5+shift+g

上下左右的移动
老版的电脑没有现在的上下左右

所以用hjkl来表示左下上右.
速记:h和l在四个数字的最左边和最右边,分别表示左和右.
j可以想成jump,向下;k想成king,国王一般坐在上面.
n+hjkl 一次跳转n行
一次跳转一个单词w,b
前进一个单词:w
后退一个单词:b
大小写切换和删除字符
大小写切换:~

一行内删除字符

删除光标后面的:n+x
演示:5+x
删除光标前面的:n+shift+x
演示:5+shift+x

替换模式shift+r**

左下角的REPLACE代表进入替换模式.
保存退出:shift+zz
跟进入底行模式再wq功能一样.
批量化注释(比较复杂)
ctrl+v,hjkl区域选择,j,shift+i,//,esc*2.
演示:
ctrl+v,10j

shift+i,//

esc*2

批量化去注释
ctrl+v,hjkl区域选择,dd
ctrl+v,5j,l 相当于选中五行的//

dd

插入模式
命令模式->插入模式
a:在下一个字符进入插入模式
i:在当前字符进入插入模式
o:新建一行并在该行进入插入模式
底行模式
命令模式->底行模式:shift+;
w->保存,q->退出,!->强制

vs+文件名:进行分屏操作. 例:vs test7-24.c
在不同文件进行切换:ctrl+ww

光标在哪一个文件,代表正在操作哪一个文件.
设置行号:set nu 取消:nonu

不退出vim,执行xshell的命令:!commond
例如:用man手册来查看fgets这个函数的使用.不用退出到shell里进行操作.
直接:!man fgets,然后回车


看完直接按q,然后回车.
搜索关键字./关键字
演示:/main

两个文件的main函数的光标都会高亮
vim的配置
vim的原理
vim不是简单的去执行可执行程序.它会读取若干文件,例如…vimrc文件
手动配置
先创建.vimrc的文件
[shh@iZ2vc7kou0oyop7xcabvtoZ ~]$ touch .vimrc
然后进入.vimrc的文件
[shh@iZ2vc7kou0oyop7xcabvtoZ ~]$ vim .vimrc
set nu " 设置显示行号set showmode " 设置在命令行界面最下面显示当前模式等set ruler " 在右下角显示光标所在的行数等信息set autoindent " 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐syntax on " 即设置语法检测,当编辑C或者Shell脚本时,关键字会用特殊颜色显示

然后退出再进入test.c文件就会发现vim已经"悄悄进化"了.
一键配置
在gitee上面早就有大佬帮我们搞好了.
我们在Linus上面直接输入.不推荐在root下执行,建议在一般用户执行
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
这个是网站:VimForCpp,里面可以看到这个配置文件的功能.

相关文章:
Linus: vim编辑器的使用,快捷键及配置等周边知识详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 vim的安装创建新用户 adduser 用户名Linus是个多用户的操作系统是否有创建用户的权限查看当前用户身份:whoami** 怎么创建设置密码passwdsudo提权(sudo输入的是用户…...
数仓作业延时告警-基于关键路径预推
简介 作业延时告警,通常来说有两种方式: 其一,当作业到目标时间点还没完成触发告警;这类情况,对于目标作业而言,延时已经触发了,风险相对较大;有的是监控接口延时(raw层…...
秋招复习笔记——八股文部分:网络TCP
TCP 三次握手和四次挥手 TCP 基本认识 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。 确认应答号…...
麒麟桌面操作系统上配置Samba
原文链接:麒麟桌面操作系统上配置Samba Hello,大家好啊!今天给大家带来一篇关于在麒麟桌面操作系统上配置Samba的文章。Samba是一种免费的软件,实现了SMB/CIFS网络协议,使得Linux和Windows系统之间可以共享文件和打印机…...
【Go】探索 Go 语言的内建函数 copy
山水间歌声回荡 回荡思念的滚烫 去年的家书两行 读来又热了眼眶 云水边静沐暖阳 烟波里久违的故乡 别来无恙 你在心上 🎵 张靓颖/张杰《燕归巢》 在 Go 语言中,copy 是一个用于在切片之间复制元素的内建函数。它提供了一种简单而高…...
【React】JSX:从基础语法到高级用法的深入解析
文章目录 一、什么是 JSX?1. 基础语法2. 嵌入表达式3. 使用属性4. JSX 是表达式 二、JSX 的注意事项1. 必须包含在单个父元素内2. JSX 中的注释3. 避免注入攻击 三、JSX 的高级用法1. 条件渲染2. 列表渲染3. 内联样式4. 函数作为子组件 四、最佳实践 在 React 开发中…...
JMeter 使用
1.JMeter 是什么? JMeter 是一款广泛使用的开源性能测试工具,由 Apache 软件基金会维护。它主要用于测试 Web 应用程序的负载能力和性能,但也支持其他类型的测试,如数据库、FTP、JMS、LDAP、SOAP web services 等。 2.特点&#x…...
20240724----安装git和配置git的环境变量/如何用命令git项目到本地idea
备注参考博客: 1)可以参考博客,用git把项目git到本地 2)可以参考博客vcs没有git 3)git版本更新,覆盖安装 (一)安装git (1)官网下载的链接 https://git-scm.com/downlo…...
JavaScript实战 - 用Canvas画一个心形
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问或建议,请私信或评论留言! 前言: 如…...
vim gcc
vim 使用 vs filename 分屏 ctrl ww 切窗口 shift zz 快速提出vim vim配置 vim启动时自动读取当前用户的家目录的.vimrc文件 vim配置只影响本用户 其他用户观看同一文件不受影响 gcc指令 & c文件编译过程 动态库 静态库 & 链接方式 有相应库才能进行…...
Symfony 表单构建器:创建和管理表单的最佳实践
Symfony 表单构建器:创建和管理表单的最佳实践 Symfony 是一个流行的 PHP 框架,以其强大的功能和灵活性闻名。表单构建器是 Symfony 中一个非常重要的组件,它提供了简单且高效的方式来创建和管理表单。本文将详细介绍 Symfony 表单构建器的最…...
Intel电脑CPU的选择
酷睿 i5/i7/i9 系列至强 Xeon 系列应用场景家用消费级电脑企业服务器工作站PCIe通道数 16X 最多识别到2张显卡,且每张降速为8X 64X 最多支持8张显卡同时使用 内存信道2通道8通道内存容量最大128GB最大6TB工作时长不建议长期不间断连续使用专为365*24不断电使用而设…...
MySQL字段设置的varchar长度小于数据长度自动截取丢弃超出的长度而不是报错?
MySQL字段设置的varchar长度小于数据长度自动截取丢弃超出的长度而不是报错? 事情是这样的,我们一个订单表存放了商品的快照信息其中快照信息存储的是json格式商品信息,当查看订单是报错了,发现我们后端服务查询到订单的快照信息…...
Linux|多线程(三)
线程池 线程池是一种多线程处理形式,处理过程中它将被提交的任务分配给预先创建好的多个线程中的一个去执行。 线程池的实现 #pragma once #include <pthread.h> #include <vector> #include <string> #include <unistd.h> #include <…...
智能合约中如何返回mapping
在 Solidity 中,直接返回一个 mapping 的所有数据是不可能的,因为 mapping 本身不支持直接遍历。但是,可以使用一些技巧来实现这一目标,例如通过维护一个额外的数组来跟踪 mapping 中的键,并通过这个数组来返回所有的键…...
nginx的学习(二):负载均衡和动静分离
简介 nginx的负载均衡和动静分离的简单使用 负载均衡配置 外部访问linux的ip地址:80/edu/a.html地址,会轮询访问Tomcat8080和Tomcat8081服务。 Tomcat的准备 准备两个Tomcat,具体准备步骤在nginx的学习一的反向代理例子2中,在Tomcat8080…...
普中51单片机:DS1302时钟芯片讲解与应用(十)
文章目录 引言基本特性什么是RAM?什么是涓流充电? 电路图和引脚说明通信协议以及工作流程寄存器控制寄存器日历/时钟寄存器 DS1302读写时序代码演示——数码管显示时分秒 引言 DS1302 是一款广泛使用的实时时钟 (RTC) 芯片,具有低功耗、内置…...
Preact:轻量级替代React的选择
Preact是一个轻量级的JavaScript库,它提供了与React相似的API,但体积更小,性能更优。Preact的核心理念是尽可能地保持与React的兼容性,同时去除不必要的部分,使其成为一个理想的替代品,尤其是在对性能和包大…...
全栈嵌入式C++、STM32、Modbus、FreeRTOS和MQTT协议:工业物联网(IIoT)可视化系统设计思路(附部分代码解析)
项目概述 随着工业4.0时代的到来,工业物联网(IIoT)在提高生产效率、降低运营成本和实现智能制造方面得到了广泛应用。本项目旨在开发一个全面的工业物联网监控系统,能够实时监测设备的温度、压力、振动和电流等参数,并…...
Greenplum数据库中的数据倾斜问题及处理方法
一、数据倾斜问题的原因 数据分布不均匀:当数据在表的分区或分片中不均匀分布时,会导致某些分区或分片的数据量较大,从而引发数据倾斜问题。连接键存在热点数据:如果连接操作中使用的键值存在热点数据,即某些键值出现…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

