Linux | vim的入门手册
目录
前言
一、什么是vim
二、vim编辑器的模式
1、插入模式
(1)用vim打开文件
(2)进入插入模式
2、默认模式
(1)光标移动
(2)复制、粘贴与剪切操作
(3)撤销与取消撤销操作
(4)光标快速行移动操作
(5)光标快速列移动操作
(6)编辑相关操作
3、底行模式
(1)进入底行模式
(2)退出与保存
(3)打开行号或取消行号
(4)分屏相关操作
(5)其他操作
4、替换模式
前言
关于vim想必大家多多少少有一些了解,不大了解也没关系,本章节就带着大家一起学习vim的基本使用;
一、什么是vim
vim是Linux下的一款编辑器软件,注意,这里说的是编辑器,类似于记事本,我们可以通过vim在Linux系统下进行代码的编辑,这里有些小伙伴就疑惑了,我们难道不能使用vscode等软件吗?是的,我们可以直接使用vscode等软件,且效率也可能更高,但我们有一些情况可能需要纯Linux系统下编辑代码,那是可能就无图形化界面,因此Vim是我们的最好选择了;
二、vim编辑器的模式
vim编辑器有很多模式,对于新手来说无需弄清每种模式,本文主要介绍如下四种模式,分别为普通模式(默认模式)、插入模式、底行模式、替换模式;这四种模式已经满足大部分需求,且已足够日常使用,对于想精进vim的读者来说,可后续自行完善知识体系本文仅仅为vim入门文章;

1、插入模式
(1)用vim打开文件
我们用vim打开一个文件,默认进入的就是默认模式;我们可以通过下面这条指令来用vim打开一个文件;
vim test.c
其中test.c为文件名,可以自己取别的名字,其中若文件不存在,则会在当前目录自动创建一个文件;

(2)进入插入模式
我们按下键盘的 i 即可进入插入模式,进入插入模式后,我们左下角的normal就变成了insert,如下图所示;

我们按下键盘的左上角的 Esc 键即可退出插入模式,进入我们的普通模式,插入模式下,我们就可以进行代码编辑了;对于新手来说,插入模式理解到这一步就已经可以了进行基本的编辑代码了;
2、默认模式
(1)光标移动
在默认模式中,我们可以通过键盘中的上下左右对光标进行移动,也可以通过H、J、K、L对光标进行移动,后者的使用更加推荐,我们可以通过下图来记忆这四个键;

(2)复制、粘贴与剪切操作
复制:
yy:复制当前行
nyy:从光标选中当前行开始复制 n 行
粘贴:
p:从光标选中的下一行开始粘贴一次
np:从光标选中的下一行开始粘贴 n 次
剪切(删除):
dd:剪切(删除)当前行
ndd:从当前行开始剪切(删除)n 行
(3)撤销与取消撤销操作
撤销:
u:撤销上次操作
取消撤销:
ctrl + r:撤销刚才的撤销操作
(4)光标快速行移动操作
shift + g:将光标移动到最后一行
gg:将光标移动到第一行
n shift + g:快速移动到第 n 行(n为数字)
(5)光标快速列移动操作
shift + 4:快速移动到当前行的最后一列
shift + 6:快速移动到当前行的第一列
w:以单词为单位,快速在当前行向前移动
b:以单词为单位,快速在当前行向后移动
(6)编辑相关操作
shift + ~:大小写切换
r + 要替换的字符:替换当前字符
n r + 要替换的字符: 替换从当前字符开始的 n 个字符
x:删除光标当前指向的字符
n x:删除从光标当前指向的字符位置开始的 n 个字符
3、底行模式
(1)进入底行模式
shift + :(冒号):shift 加 冒号(分号)进入底行模式,下面所有介绍的操作都是基于底行模式下的操作,默认已经进入底行模式了;以下为进入底行模式的界面;

(2)退出与保存
q:仅退出
q!:强制退出
w:仅保存
w!:强制保存
wq!:强制保存并退出
(3)打开行号或取消行号
set nu:打开行号
set nonu:取消行号
(4)分屏相关操作
vs 文件名:分屏出另一个文件出来,若文件不存在,且创建该文件
ctrl + w + w:进行光标切换(这里的切换指的是这两个文件中切换)
(5)其他操作
!cmd:不退出vim执行对应命令(常与编译、运行、man指令等配合)


如上图所示,我们可以不退出vim编辑器的情况下,查看当前目录下有哪些文件;
4、替换模式
shift + r:进入替换模式,此时可以进行输入替换;
注意:替换模式我们就不必做过多了解,我们将上述命令学会便已经可以在vim编辑器上完成大部分的编辑任务了;
相关文章:
Linux | vim的入门手册
目录 前言 一、什么是vim 二、vim编辑器的模式 1、插入模式 (1)用vim打开文件 (2)进入插入模式 2、默认模式 (1)光标移动 (2)复制、粘贴与剪切操作 (3&#x…...
B053 项目部署
目录 Linux简介虚拟机软件安装安装centos步骤备份系统网络设置 远程访问Linux步骤永久关闭CentOS防火墙 linux命令linux文件系统linux常用命令目录相关命令文件相关命令 安装JDK先卸载自带的JDK安装JDK复制压缩包到linux解压配置环境变量 安装MySql清理旧文件安装mysqlMysql编码…...
视觉Slam面试题(不定时更新)
文章目录 0 引言1 单目、双目、深度相机和RGBD相机的区别2 特征点法与直接法的优缺点3 等距变换、相似变换、仿射变换、射影变换的区别4 单应矩阵、本质矩阵和基础矩阵的区别5 Slam中为什么用李群李代数6 解释Slam中的绑架问题7 ORB、SIFT和SURF特征点检测算法的区别8 什么是对…...
从入门到进阶 之 ElasticSearch 节点配置 集群篇
🌹 以上分享 ElasticSearch 安装部署,如有问题请指教写。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有需要,请👍点赞💖收藏🐱&a…...
UE4中无法保存项目问题
系列文章目录 文章目录 系列文章目录前言一、解决方法 前言 取消:停止保存所有资产并返回编辑器。 重试:尝试再次保存资产。 继续:仅跳过保存该资产。 当我点击继续时,关闭项目,然后重新打开项目,发现之前…...
解剖—顺序表相关OJ练习题
目录 一、删除有序数组中的重复项,返回出现一次元素的个数。 二、原地移除数组中所有数值等于val的元素 三、合并两个有序数组 四、旋转数组 五、数组形式的整数加法 一、删除有序数组中的重复项,返回出现一次元素的个数。 26. 删除有序数组中的重…...
NAT网关在阿里云的应用
NAT网关(Network Address Translation Gateway)是一种网络地址转换服务,提供NAT代理(SNAT和DNAT)能力。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决I…...
操作系统体系结构和OS
1.冯诺依曼计算机体系 关于冯诺伊曼系统,在这里我只是简单讲一讲,更加详细的内容可以看我的计算机组成系列。 常见的笔记本、台式机,不常见的服务器、工作站,大部分都遵守“冯诺依曼体系”,因此该计算机体系就是现代…...
Flutter ☞ 常量
常量 只能被定义一次,并且不可修改的值叫做常量。 在 Flutter 中有两种常量修饰方法 finalconst 相同点 类型声明可以省略 final String a 123; final a 123;const String a 123; const a 123;初始化后不能再赋值 final a 123; a abc; // 错误const a …...
C++ 配置VSCode开发环境
C配置VSCode开发环境 简介 Visual Studio Code (VSCode) 是一款开源的轻量级代码编辑器。它支持许多编程语言,包括C。本文档将详细介绍如何在Windows环境下配置VSCode的C开发环境。 安装步骤 1. 安装Visual Studio Code 首先,你需要下载并安装Visua…...
Arduino_STM32整理贴
Arduion-STM32 stm32duino 让stm32 在arduino中使用 源代码:https://github.com/stm32duino/Arduino_Core_STM32 busybox文件位置 stm32duino 下有个stm32tool 项目,内含有busybox.exe 使用usb转TTL烧写 使用 PA9 PA10 端口 PA9接 RX ,PA10接 TX …...
MoeCTF 2023 Web+Jail wp
----------签到---------- hello CTFer 给了一个URL,是赛博厨子解码base64的flag,flag直接给了。 远程端口转发: 这次比赛估计好多大师傅都没参加,题目环境是在本机内网上的(比如localhost:52005)导致请…...
494.目标和 474.一和零
目标和 题目 给一个都是正整数的组合,然后你可以在里面任意添加或-,求使得最后结果为 目标和S(target)的有多少种方法? 范围 数组非空,且长度不会超过 20 。初始的数组的和不会超过 1000 。保证返回的…...
模拟电源与数字电源之间的区别
BOSHIDA 模拟电源与数字电源之间的区别 模拟电源与数字电源是两种不同的电源类型,其核心区别在于电源控制方式和输出特性。本文将从这两方面对模拟电源和数字电源进行比较和分析。 电源控制方式: 模拟电源的控制方式以模拟电压和模拟电流为基础。模拟电…...
P5461 赦免战俘
题目描述 现有 2 n 2 n ( n ≤ 10 ) 2^n\times 2^n (n\le10) 2n2n(n≤10) 名作弊者站成一个正方形方阵等候 kkksc03 的发落。kkksc03 决定赦免一些作弊者。他将正方形矩阵均分为 4 个更小的正方形矩阵,每个更小的矩阵的边长是原矩阵的一半。其中左上角那一个矩阵…...
【工具】转码silk格式为mp3
【工具】转码slk格式为mp3 前提 安装 ffmpeg 【安装】Linux安装ffmpeg_linux安装ffmpeg4.4_我是Superman丶的博客-CSDN博客 GitHub - kn007/silk-v3-decoder: [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to o…...
蓝桥杯每日一题2023.10.18
题目描述 特别数的和 - 蓝桥云课 (lanqiao.cn) 题目分析 简单枚举每一个可行的数 #include<bits/stdc.h> using namespace std; int flag, ans; int main() {int n;cin >> n;for(int i 1; i < n; i ){flag 0;int x i;while(x){int y x % 10;if(y 2 || y…...
大数据开发中的秘密武器:探索Hadoop纠删码的奇妙世界
随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用。为了系统的可靠性,HDFS通过复制来实现这种机制。但在HDFS中每一份数据都有两个副本,这也使得存储利用率仅为1/3,每TB数据都需要占用3TB的存储空间。因此&…...
华为数通方向HCIP-DataCom H12-831题库(单选题:301-310)
第301题 关于配置防火墙安全区域的安全级别的描述,错误的是 A、同一系统中,两个安全区域不允许配置相同的安全级别 B、只能为自定义的安全区域设定安全级别 C、安全级别一旦设定不允许更改 D、新建的安全区域,系统默认其安全级别为1 答案:D 解析: 新创建的安全区域缺省未…...
Vite 踩坑 —— require is not defined
动态require引入图片报错 require 是属于 Webpack 的方法,而我使用的是 Vite,所以我们需要去寻找 Vite 静态资源处理的方法 所以,我们只需要将代码改写以下形式即可。 template <CarouselItem v-for"(item,index) of carous…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...
