Linux中vim的基本介绍和使用
善为理者,举其纲,疏其网。
vim
- 1、vim介绍
- 2、命令模式详情
- 3、底行模式详情
- 4、困难问题
- 5、历史存疑问题
- 6、vim配置问题
- 6、1、配置的原理
- 6、2、一键式配置
1、vim介绍
如果我面想要在Linux上编写代码的话,我就需要vim来帮助我们编写代码。但是vim并不像是在Windows上的vs集成软件把所有的东西都集成起来但是呢,如果不进行配置的话,vim和其他是相互独立的,vim就是写代码的编辑器,编译代码就是gcc/g++的编译器,调试代码就有gdb的调试器。自动化构建就有make和makefile构建的工具。
vim是款编辑器,同时也是多模式的编辑器—命令模式,底行模式,插入模式。
简单编译一个hello vim程序
vim刚开始打开的时候,暂时是无法正常输入的,因为刚打开的时候是命令模式,默认打开的时候,目前所输入的都会看成是命令,当然,如果命令不对当然什么操作都没有咯。
从命令模式进入插入模式输入 i。
如果编辑完了,想要退出去,该怎么办呢?首先需要从插入模式退出到命令模式,按一下Esc,现在在命令模式,此时想要退出的话,需要按:() ,从命令模式进入到底行模式之后,继续按wq就能够退出。如果是在底行模式不想退出的话,也能够通过按Esc重新命令模式。
概括介绍:
插入模式:编辑模式
命令模式:允许使用者通过命令,来进行文本的编辑控制。
底行模式:如果前两个模式是对于文本内容的控制,底行模式就是让vim进行包括但不限于和shell进行交互的。
2、命令模式详情
命令模式:没必要进入插入模式才能对文本进行操作。
yy:复制当前行
p:粘贴到当前光标的下一行
u:撤销
dd:剪切/删除
n dd:剪切/删除n行
n p:粘贴n行
n yy:复制n行
$:快速定位光标到当前行的最末尾
^:快速定位光标到当前行的最开头
gg:将光标定位到文本的最开头
G:将光标定位到文本的最末尾
n G:定位到指定的n行
h:光标向左一位
j:光标向下一位
k:光标向上一位
l:光标向右一位n h:光标向左n位
n j:光标向下n位
n k:光标向下n位
n l:光标向右n位
快速记住hjkl方向键的意义。
h最左边,所以h表示向左。l在最右边,所以l表示向右。k(king高高在上),所以k表示向上。j(jump向下跳),所以j表示向下。
w:按照单词为单位,进行光标后移
b:按单词为单位,进行光标前移
ctrl r:撤销撤销的动作
shift~:shift按住不动,连续按~能让光标定位的字母快速进行大小写切换
x:删除光标所在位置的字符,先向后删,删完后向前删
n x:删除光标所在位置的n个
X:删除光标之前的字符
r:对光标指定的位置,进行一个字符的替换
n r:对光标指定的位置,进行n个字符的替换
R:进入replace模式,能够进行多次替换
i:直接进入插入模式
o:进入编辑模式的同时还新增一行
a:进入编辑模式,同时向后一位字符
3、底行模式详情
进入底行模式,是在命令模式情况下按:。
q!:强制退出。
q:退出,但是如果不保存的话,会警告没有保存。
wq:保存并退出
wq!:保存并强制退出
set nu:调出行号
set nonu:去掉行号
还可以进行批量化的替换
s/prinf/PRINTF/g:进行printf全部替换成PRINTF
/XXX:进行XXX的全文搜索,并且高亮
!command:不退出vim,可以进行shell命令的执行
(最常用的能够man指令,这样就不用退出后再去查看)
vim不会新建文件,只有当我们保存的时候,才会首次被创建。(vim 文件(新文件))。
在windows上的图形化界面,想要多文件同时编辑的话,只需要点击相对应的文件图形就能够切换,那么在Linux中怎么实现呢?难不成还是保存完之后再进行编辑另一个文件?
vs filename:分屏,多文件操作
ctrl ww:光标在两个编辑窗口切换
左右两个窗口可以互相拷贝粘贴。
底行模式不能直接进入插入模式,插入模式也不能直接进入底行模式。
命令模式时候怎么快速的退出?ZZ即可
4、困难问题
怎么注释?
换句话说困难的问题是,如何批量注释?
ctrl+v:先进入视图模式
//进入视图模式后选择需要批量化编辑的区域
I:大写的i进入编辑模式
编写完成之后按Esc两次,就能够进行多行的注释
怎么批量化去注释
ctrl+v:进入视图模式
//选择需要进行编辑的区域
d:删除/去注释
5、历史存疑问题
解决历史问题:普通用户无法进行sudo提权(其中Linux用户章节留下的问题)
如果没有提前解决白名单黑名单类似的问题的话,会出现这样的报错。


首先如果想要修改这个文件的话,必须要是root才能。利用root打开/etc/sudoers文件。进行修改。

找到这里并添加用户

可是此时也会出现报错,会有系统来提醒是否需要保存。这是就必须要用到**wq!**来强制保存并退出。

这样就成功了,能够实现sudo命令。
6、vim配置问题
6、1、配置的原理
vim不是简单的执行可执行程序,在启动执行的时候也会读取若干可执行的配置文件。通常来说没配置的话读取的都包含 .vimrc。
如果本身没有的话,可以创建一个.vimrc文件并在里面进行配置。这样的话也符合Linux多用户操作系统的作用,每一个人都可以个性化配置vim。可以但不限于set nu。
6、2、一键式配置
在网上寻找例如gitte或者github上的教程。
相关文章:
Linux中vim的基本介绍和使用
善为理者,举其纲,疏其网。 vim 1、vim介绍2、命令模式详情3、底行模式详情4、困难问题5、历史存疑问题6、vim配置问题6、1、配置的原理6、2、一键式配置 1、vim介绍 如果我面想要在Linux上编写代码的话,我就需要vim来帮助我们编写代码。但是…...
宝塔面板上,安装rabbitmq
废话不多说,直接上干货! 第一步:登录宝塔账号,在软件商店里搜索 第二步:点击设置 第三步:已经完成了,还看啥!...
【Docker系列】Docker 镜像管理:删除无标签镜像的技巧
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
数据采集器
目录 1. 采集Redis 2. 采集MySQL 3. 采集容器 1. 采集Redis 出口商和集成 |普罗 米修斯 (prometheus.io) 发布 奥利弗006/redis_exporter (github.com) 在目标机器上安装redis 上传redis采集器包redis_exporter-v1.53.0.linux-amd64.tar.gz [rootharbor opt]# tar -xf …...
小红书0510笔试-编程题
解题思路: 先射击左边和先射击右边两种情况,就是2*1/n*(n-1)的概率。 解题思路: 枚举所有的评论作为最小值,按评论从大到小排序,每次遍历到的都是最小值。要想得到以该评论为最小值的最大优秀度,就要维护一…...
2024年热门开放式耳机评测!悠律、韶音、声阔到底该选谁?
开放式耳机选购技巧篇,可参考选购! 作为一名数码评测博主,这两年用过的开放式耳机不下50款了,市面上的开放式耳机众多,很多人不知道该如何选择,其实选购都是有一定的技巧和规律性的,看配置就能…...
计算机毕业设计选题推荐-智慧物业服务系统-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...
新手小白学习PCB设计,立创EDA专业版
本教程有b站某UP主的视频观后感 视频链接:http://【【教程】零基础入门PCB设计-国一学长带你学立创EDA专业版 全程保姆级教学 中文字幕(持续更新中)】https://www.bilibili.com/video/BV1At421h7Ui?vd_sourcefedb10d2d09f5750366f83c1e0d4a…...
查物流信息用什么软件
在电子商务日益繁荣的今天,快递物流信息的查询成为了我们日常生活中不可或缺的一部分。无论是网购达人还是商家,都需要随时掌握货物的物流动态。然而,如何快速、准确地查询物流信息却是一个令人头疼的问题。今天,我将为大家介绍一…...
(40)温度传感器
文章目录 前言 1 设置 2 记录 3 参数说明 前言 ArduPilot 已经有许多可能的温度报告来源:电调,智能电池,电机 EFI,这些独立的传感器可以用来取代 ArduPilot 中已经存在的那些设备温度报告。它们也可以只是被记录下来。 ArduP…...
【靶场实操】sql-labs通关详解----第二节:前端页面相关(Less-11-Less-17)
SQL注入攻击是一种针对Web应用程序的安全漏洞,那么自然,SQL注入攻击也和前端页面息息相关,用户输入未被正确处理、动态查询的构建、前端JavaScript代码错误,等等我问题都可能造成安全威胁。 在上一节,我们了解了基础的…...
样式与特效(2)——新闻列表
1.盒子模型的边距概念 ) Margin-top 上面 Margin-bottom 底部 Margin-right 右边 Margin-left 左边 Margin : 10px (上下左右都是10px) Margin :10px,20px (上下边距10px 左右20px) CSS里面最重要的属性之一 将页面理解成…...
NICE Seminar(2023-07-16)|演化算法的理论研究到底有什么用?(南京大学钱超教授)
模式定理(Schema Theorem) 模式定理(Schema Theorem)是遗传算法(Genetic Algorithm, GA)的重要理论基础,由约翰霍兰德(John Holland)在1975年提出。它描述了具有特定模式…...
优盘驱动器未格式化?数据恢复全攻略
在数字时代,优盘作为便携的数据存储工具,广泛应用于日常生活与工作中。然而,当遇到“优盘驱动器未被格式化”的提示时,无疑给许多人带来了不小的困扰。这一状况往往意味着优盘的文件系统出现了问题,导致系统无法正确识…...
(超全)Kubernetes 的核心组件解析
引言 在现代软件开发和运维的世界中,容器化技术已经成为一种标志性的解决方案,它为应用的构建、部署和管理提供了前所未有的灵活性和效率。然而,随着应用规模的扩大和复杂性的增加,单纯依靠容器本身来管理这些应用和服务已不再足够…...
前端常用的【设计模式】和使用场景
设计原则 最重要的:开放封闭原则 对扩展开放对修改封闭 工厂模式 用一个工厂函数,来创建实例,隐藏 new 如 jQuery 的 $ 函数,React 的 createElement 函数 单例模式 全局唯一的实例(无法生成第二个) 如 Vuex 和 Redux 的 store…...
QT下载问题:Download from your IP address is not allowed
问题 Download from your IP address is not allowed 解决 https://download.csdn.net/download/baidu_34971492/89608794...
自建数据库VS云数据库
自建数据库VS云数据库 什么是自建数据库?自建数据库方案自建数据库的优点自建数据库的缺点什么是云数据库?自建数据库的缺点什么是云数据库? 云数据库方案云数据库的优点云数据库的缺点适用场景比较总结 【纪录片】中国数据库前世今生 在数字…...
【大数据开发语言Scala的入门教程】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🪁Scala 🪡Scala是一种功能丰富且具有强大表达能力的静态类型…...
docker部署kkfileview文件在线预览服务
kkfileview文件在线预览服务部署使用 免费开源,功能强大,几乎支持日常见到的所有文件类型在线预览 目前支持的文件类型如下 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx,xlam, xla 等 Office 办公文档支持 wp…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
