【Linux】vim的基本操作与配置(上)
Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦!
那么废话不多说,咱们直接进入正题!

1.初识vim
vim是一款多模式的文本编辑器,可以对一个文件进行编辑操作。
它一共有三个模式:命令模式,底行模式,插入模式。
下面我将分别对这三个模式进行讲解。
2.vim基本操作
2.1三种模式的切换

首先我们先创建一个文件test.c,然后用vim打开它。

然后就来到如图所示的界面,此时默认处于命令模式,暂时无法键入信息。
如果想要键入信息,需要输入字符'i',就会从命令模式编程插入模式:

左下角变成INSERT,可以键入信息。敲ESC返回命令模式。
要从命令模式切换到底行模式,需要敲SHIFT+L右边的那个键。合起来的效果就是冒号(敲ESC退出):

此事左下角出现了一个冒号,然后敲wq可以退出vim。w的意思是保存,q的意思是退出。如果在打开vim时你没有进行任何的编辑操作,可以不用保存,直接在底行模式下敲q退出。


注意,底行模式不可以直接切换到插入模式,插入模式也不可以直接切换到底行模式。都需要切换到命令模式过渡。
3.用vim写一个简单的c语言代码

咱们的vim没有配置过,所以写代码会有些难受,不过没关系,先试着写一下!
先切换到插入模式写入代码,再切换到底行模式退出。


随后用gcc编译器编译我们刚写好的test.c文件(后缀一定要是.c,否则编译不通过)。编译完成后会产生一个a.out的可执行程序,执行该程序后就可以看到代码允许的结果啦!
4.vim基本操作
4.1set nu

在底行模式下输入set nu,可以显示行号。
4.2复制,粘贴,撤销,剪切操作
首先这些操作是在命令模式下完成的。
yy:复制光标所在行的内容。支持在yy前加数字,表示复制包括光标所在行在内的以下几行。
p:粘贴,支持在p前加数字,表示粘贴被复制内容的次数。
dd:剪切,同样支持在dd前加数字,往往与p配合使用。
u:撤销
CTRL+r:对撤销命令进行撤销。

例如:我把光标放在int那一行,敲4yy,此时左下角会出现4 lines yanked,表示4行被选中。
然后我把光标放到第4行,敲3p:

所得结果就是把我刚才复制的内容粘贴了3遍。

敲u撤销以上操作。
可是我刚撤销完就后悔了,可以敲CTRL+r来进行还原:


我在第三行敲2dd:

那么原来的第3,4行就被剪掉了,可以选择合适的位置敲p再粘贴回来。

5.光标定位
vim在没有配置的情况下不支持鼠标定位,所有的操作需要通过键盘来完成。
5.1 SHIFT+4


敲SHIFT+4光标可以迅速定位到当前行的末尾。
5.2 SHIFT+6


敲SHIFT+6,光标可以迅速定位到当前行的开头。
5.3gg
gg:迅速将光标定位到文本的最开始。


5.4SHIFT+g
SHIFT+g:迅速将光标定位到文本的结尾。


当然也支持n shift g(n为数字)。可以将光标定位到文本的第n行。
5.5 h j k l
除了上下左右键可以移动光标,h j k l键也可以移动光标,大家可以自己试一下。
当然也支持在前面加数字,和上文基本类似。
5.6 w b
w:以单词为单位进行光标后移。
b:以单词为单位进行光标前移。



6.大小写转换
在命令模式下,SHIFT按着不动,再按ESC下面的波浪号可以实现大小写转换。
例如:

第三行本来想小写的,但不小心弄成大写的了,可以通过次操作将这一行转换成小写。

7.行内局部删除
在命令模式下:
x:从光标位置向后删除一个字符;n+x:从光标位置向后删除n个字符;
shift+x:从光标位置向前删除一个字符;n+shift+x:从光标位置向前删除n个字符;
8.文本替换
在命令模式下:
方法一:
r+字符:对光标位置的字符进行替换。n+r+字符:对光标后n个位置的字符进行替换。

例如:输入3 r a,就会将前三个字符替换成a。
方法二:
shift+r:进行替换模式。
从此,每次键入的字符会对光标后面的字符逐一替换:


9.从命令模式进入插入模式的常用方法
i:光标不变,直接进入插入模式。
o:光标另起一行,进入插入模式。
a:光标向后挪动一个字符,进入插入模式。
10.总结
在这篇文章中,我已经给大家讲了大部分关于vim的操作,绝大部分是在命令模式下的。
在下一篇文章中我会把剩下的有关vim的操作讲完,并且教大家如何配置vim,让我们在vim上能够十分方便的写代码。
在学会vim后,就可以开使学习指令提权了!如果你是普通用户,安装或删除一些东西没有权限,可以将自己的指令权限提升到root。这部分的知识会在接下来的一两篇文章中讲解到位!
相关文章:
【Linux】vim的基本操作与配置(上)
Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦! 那么废话不多说,咱们直接进入正题! 1.初识vim vim是一款多模式的文本编辑器,可以对一个文件进行编辑操作。 它一共有三个模…...
幻兽帕鲁怎么样?好玩? Mac版的玩《幻兽帕鲁》也很简单,只需三个步骤
幻兽帕鲁怎么样 幻兽帕鲁是一款集合了多种游戏元素的游戏,它巧妙地融合了《方舟:生存进化》的野外生存挑战、《荒野之息》的开放世界探索、《魔兽世界》的多元角色互动以及宝可梦的精灵捕捉与培养等经典游戏元素。游戏的核心系统是「帕鲁」捕获,你可以让…...
002集——统一码(Unicode)及ASCII码详解
统一码(Unicode),它也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以…...
下载、安装Jenkins
进入官网 下载Jenkins https://www.jenkins.io 直接点击Download 一般是下长期支持版 因为它是java写的,你要运行它(Jenkins.war)肯定要有java环境 有两种方式去运行它,一种是下载Tomcat(是很经典的java容器或者jav…...
python flask 魔术方法
魔术方法作用_init_对象的初始化方法_class_返回对象所属的类_module_返回类所在的模块_mro_返回类的调用顺序,可以找到其父类(用于找父类)_base_获取类的直接父类(用于找父类)_bases_获取父类的元组,按它们…...
2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)
2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024) 会议简介 2024年清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)将在中国丽江举行。本次会议主要围绕清洁能源、环境和智慧城市等研究领域,旨在为该研究领域的专家学者提供一个国际…...
Postgres与DynamoDB:选择哪个数据库
启动新项目时需要做出的决定之一是使用哪个数据库。如果您使用的是Django这样的包含电池的框架,那么没有理由再三考虑。选择一个受支持的数据库引擎,就可以了。另一方面,如果你使用像FastAPI或Flask这样的微框架,你需要自己做出这…...
【ELK】logstash快速入门
1.概述 1.1.什么是logstash? 之前我们聊了es,并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的,然后结合kibana对日志做一些可视化的工作。既然要收集日志,就面临着一个问题: 各个系统的…...
SQL sever2008中创建用户并赋权
一、创建数据库dream CREATE DATABASE dream; 二、创建登录用户XZS 法一:使用SSMS创建 通过查询 sys.syslogins 系统视图来确定当前登录是否具有系统管理员权限。执行以下查询语句: SELECT name, isntname FROM sys.syslogins WHERE sysadmin 1;选…...
SpringBoot2-Jwt
1.官网 jwt.io/libraries 2.选jose4j pom <dependency><groupId>org.bitbucket.b_c</groupId><artifactId>jose4j</artifactId><version>0.9.4</version> </dependency> 3.创建jwt工具 public class JwtUtil {private stat…...
2、安全开发-Python-Socket编程端口探针域名爆破反弹Shell编码免杀
用途:个人学习笔记,欢迎指正! 目录 主要内容: 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码:多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端,服务端Socket编程通信cmd命…...
Python 套接字详解:与网络通信的温柔邂逅
网络世界,犹如一片无垠的海洋,充满了无限的可能性和无尽的探索。而在这个浩瀚的网络宇宙中,Python 语言以其简洁优雅、功能丰富而备受青睐。在 Python 的世界里,有一个神奇的工具,它就像是一座桥梁,将不同的…...
如何在Linux系统中安装MySQL
要在Linux系统中安装MySQL,您可以使用系统的包管理工具。以下是一些常见的Linux发行版的安装命令: 1. **Ubuntu/Debian:** bash sudo apt-get update sudo apt-get install mysql-server 2. **Fedora:** bash sudo dnf install mysql-server 3. **Cent…...
51单片机基础:定时器
1.定时器介绍 51单片机通常有两个定时器:定时器 0/1,好一点的可能有定时器3。 在介绍定时器之前我们先科普下几个知识: 1,CPU 时序的有关知识 ①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或…...
高速接口PCB布局指南(五)高速差分信号布线(三)
高速接口PCB布局指南(五)高速差分信号布线(三) 1.表面贴装器件焊盘不连续性缓解2.信号线弯曲3.高速信号建议的 PCB 叠层设计4.ESD/EMI 注意事项5.ESD/EMI 布局规则 tips:资料主要来自网络,仅供学习使用。 …...
MySQL使用报错1045 - Access denied for user ‘root‘@‘localhost‘ (using password: YES)
问题描述 设备:MacBook Pro macOS Monterey 12.1 MySQL版本:8.0.27 arm-64 描述:在使用Navicat连接电脑本地的数据库时,发现连接不上了,报了个错误1045 - Access denied for user rootlocalhost (using password: YES)…...
UE4 C++创建摄像机摇臂和相机并且设置Transform
新建MyPawn C类 .h #include "GameFramework/SpringArmComponent.h" //SpringArm组件 #include "Camera/CameraComponent.h" //Camera组件class 工程名称_API AMyPawn : public APawn { //定义组件变量 public:UPROPERTY(VisibleAnywhere, BlueprintRead…...
<网络安全>《14 日志审计系统》
1 概念 日志审计系统是用于全面收集企业IT系统中常见的安全设备、网络设备、数据库、服务器、应用系统、主机等设备所产生的日志(包括运行、告警、操作、消息、状态等)并进行存储、监控、审计、分析、报警、响应和报告的系统。 日志审计系统是一种用于…...
嵌入式软件设计方式与方法
1、嵌入式软件与设计模式 思从深而行从简 软件开发,难的不是编写软件,而是编写功能正常的软件。软件工程化才能保证软件质量和项目进度,而设计模式使代码开发真正工程化,设计模式是软件工程的基石。 所谓设计模式就是对常见问题的…...
ELAdmin 前端启动
开发工具 官方指导的是使用WebStorm,但是本人后端开发一枚,最终还是继续使用了 idea,主打一个能用就行。 idea正式版激活方式: 访问这个查找可用链接:https://3.jetbra.in/进入任意一个能用的里面,顶部提…...
智能部署copaw:借助快马ai生成能理解自然语言的下载助手
最近在折腾一个叫copaw的工具时,发现手动下载部署特别麻烦,尤其是遇到网络波动和依赖冲突的时候。于是尝试用AI辅助开发的方式,通过自然语言描述需求,让InsCode(快马)平台的AI模型帮我生成一个智能化的下载部署助手。整个过程意外…...
python-flask-djangol框架的膳食营养食谱管理系统
目录需求分析技术选型数据库设计核心功能实现界面设计测试与部署维护与扩展项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析 膳食营养食谱管理系统需要具备用户管理、食谱管理、营养分析、购物清单生成等功能。系统应支…...
如何实现Flomo到Obsidian的高效迁移与无缝衔接?一站式数据迁移工具全解析
如何实现Flomo到Obsidian的高效迁移与无缝衔接?一站式数据迁移工具全解析 【免费下载链接】flomo-to-obsidian Make Flomo Memos to Obsidian Notes 项目地址: https://gitcode.com/gh_mirrors/fl/flomo-to-obsidian 当你需要将积累已久的Flomo笔记迁移到Obs…...
Debian12下Docker国内镜像加速全攻略:以腾讯云为例快速部署WordPress
Debian12下Docker国内镜像加速全攻略:以腾讯云为例快速部署WordPress 在Debian12系统中使用Docker时,国内用户常遇到镜像下载速度慢的问题。本文将详细介绍如何配置国内镜像源加速Docker,并以腾讯云为例,快速部署WordPress环境。…...
手把手教你用Node.js和Bun配置Cursor AI与Figma的MCP通信(附完整避坑清单)
从零构建Cursor AI与Figma的MCP通信桥梁:Node.jsBun全链路配置指南 当设计工具与AI代码助手实现双向通信时,创意工作流将迎来革命性变化。本文面向具备Node.js基础的前端/全栈开发者,深入解析如何搭建Cursor AI与Figma间的MCP协议通信通道。…...
保姆级教程:ROS1/ROS2下rosbag录制与播放的10个实战技巧(含脚本与launch文件)
ROS1/ROS2高效数据管理:rosbag录制与播放的工程化实践指南 第一次接触rosbag时,我花了整整三天时间才搞明白为什么录制的数据总是无法正常播放。当时在实验室调试移动机器人,每次测试都要重新跑一遍完整流程,效率低得令人抓狂。直…...
Oracle RAC OCR坏了怎么办?手把手教你用ocrconfig修复与备份(附11g/12c实战命令)
Oracle RAC OCR故障应急指南:从诊断到修复的全链路实战 凌晨三点,当手机铃声划破寂静,作为DBA的你从睡梦中惊醒。电话那头传来运维同事急促的声音:"生产环境RAC集群所有节点突然离线,CRS服务无法启动!…...
QobuzDownloaderX-MOD:一站式高品质音乐下载解决方案
QobuzDownloaderX-MOD:一站式高品质音乐下载解决方案 【免费下载链接】QobuzDownloaderX-MOD Downloads streams directly from Qobuz. Experimental refactoring of QobuzDownloaderX by AiiR 项目地址: https://gitcode.com/gh_mirrors/qo/QobuzDownloaderX-MOD…...
SDMatte Web端体验优化:首屏加载速度与模型预热机制说明
SDMatte Web端体验优化:首屏加载速度与模型预热机制说明 1. 引言 在电商、设计、内容创作等领域,高质量的图像抠图已经成为刚需。SDMatte作为一款专注于复杂边缘和透明物体处理的AI抠图工具,其Web端体验直接影响用户的使用感受。本文将详细…...
Wan2.2-I2V-A14B部署教程:系统盘50GB+数据盘40GB最小化配置实操
Wan2.2-I2V-A14B部署教程:系统盘50GB数据盘40GB最小化配置实操 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像,特别针对RTX 4090D 24GB显存显卡进行了深度优化。这个镜像最大的特点是开箱即用,内置了完整…...
