Linux:vim的简单使用
个人主页 : 个人主页
个人专栏 : 《数据结构》 《C语言》《C++》《Linux》
文章目录
- 前言
- 一、vim的基本概念
- 二、vim的基本操作
- 三、vim正常模式命令集
- 四、vim底行模式命令集
- 五、.xxx.swp的解决
- 总结
前言
本文是对Linux中vim使用的总结
一、vim的基本概念
vim是一款多模式的文本编辑器,vim里有许多子命令,来进行代码编写的操作。本文将总结vim的三种常用模式,分别是命令模式(command mode),插入模式(insert mode),底行模式(last line mode),其中默认打开命令模式
- 命令模式
控制屏幕光标的移动,字符,字或行的删除,移动复制某区段及进入插入模式,或者到底行模式
输入 vim 文件名 指令后进入的界面就是命令模式 - 插入模式
只有在插入模式下,才可以做文字输入,按[ESC]键可以回到命令模式。
在命令模式下输入:i,a,o都可以进入命令模式 - 底行模式
文件保存或退出,也可以进行文件替换,找字符串(/ 字符串),列出行号(set nu)等操作。在命令模式下,shift + ; 进入底行模式。在底行模式下,可以查看vim的所有模式( help vim-modes)
按h,j,k,l进行左,下,上,右移动光标。输入shift ; q退出
二、vim的基本操作
- 进入vim,在系统提示符号输入vim及文件名称后,就可以进入vim全屏膜编辑模式
要注意,在命令行模式下,不能输入文字。要在插入模式才能输入文字 - 命令行模式 到 插入模式
输入 i,a,o都可以
但输入i,光标不移动。输入a,光标向右移动一字符。输入o,光标向下移动一行。
现在我们处于命令行模式,光标位于第三个a处。
输入 i :
输入:o
输入:a
- 插入模式 切换至 命令行模式
目前处于插入模式,就只能一直输入文字,如果发现输入错误,想用光标往回移动,将该字符删除,可以先输入 ESC转到命令行模式在删除文字。当然也可以直接删除
- 命令行模式 转到 底行模式
输入shift ;
三、vim正常模式命令集
- 插入模式
输入 i 切换进入插入模式,按 " i "进入插入模式后从光标当前位置开始输入文件
输入 a 进入插入模式,从目前光标所在位置的下一个位置开始插入文字
输入 o 进入插入模式,插入新的一行,从行首开始输入文字
- 移动光标
vim可以直接用键盘上的光标来上下移动,但正规的vim是用小写字母 h,j,k,l分别控制光标左,下,上,右移动一格
输入 shifr g(G):移动到文件的最后
输入 $:移动到光标所在行的行尾
输入 ^:移动光标到所在行的行首。 ^ 和 $ 表示一行的开始与结尾,被称为锚点符号
输入 w:光标调到下一个字的开头
输入 e:光标调到下一个字的字尾
输入 b:光标回到上个字的开头
输入 #|:光标移到该行的第#个位置
输入 gg:进入文本开始
输入 shift + g :进入文本末端
输入 ctrl + b :屏幕向后移动一页
输入 ctrl + f:屏幕向前移动一页
输入 ctrl + u:屏幕向后移动半页
输入 ctrl + d:屏幕向前移动半页
- 删除文字
x:每按一次,删除光标所在位置的一个字符
#x:表示删除光标所在位置的后面(包含自己在内)#个字符
X(大写):每按一次,删除光标所在位置前一个字符
dd:删除光标所在行
#dd:从光标所在行开始删除#行
- 复制
yy:复制光标所在行到缓冲区
#yy:复制包含光标所在行后#行到缓冲区
p:将缓冲区的字符贴到光标所在的位置。注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能。
注意dd可以与p配合使用,当只使用dd,就是删除。但是在dd后再使用p就是剪切。
- 替换
r :替换光标所在处的字符
R:替换光标所到之处的字符,直到按ESC为止 (也就是 shift + r 进入替换模式)
shift ~:智能大小写转换
- 撤销上一次操作
u :如果你误操作一个命令,可以按u,回到上一个操作。按多次u可以执行多次回复
ctrl + r:对撤销的回复
- 更该
cw:更改光标所在处的字到字尾处
c#w:更改光标所在的字(包含光标所在的字)后#个字
- 跳至指定的行
- ctrl + g:列出光标所在的行号
- #G:光标移动至文件的第#行行首
- 批量化注释
ctrl + v -> j / k两个按键上下选中区域 -> shift + i -> // -> ESC
四、vim底行模式命令集
- 列出行号
set nu:输入set nu后,会在文件中的每一行前面列出行号
set nonu:取消行号
- 跳到文件中的某一行
#:#表示一个数字,在冒号后输入一个数字,在按回车键就会跳到该行
- 查找字符
/关键字:先按/,再输入你想寻找的字符,如果第一次的关键字不是你想要的,可以一直按 n 会往后寻找到你要的关键词
?关键字:先按?,再输入你想寻找的关键字,如果第一次的关键字不是你想要的,可以一直按 n 会往后寻找到你要的关键字
- 保存文件
w:在冒号后输入字母w,就可以保存文件
- 退出vim
q:按q就是退出,如果无法离开vim,可以输入 q!强制退出vim
wq:一般建议离开时,搭配w一起使用,这样在退出的时候还可以保存文件
五、.xxx.swp的解决
在打开文件时,如果直接退出shell,会产生一个隐藏备份文件.xxx(文件名).swp。此时我们在打开xxx文件就无法打开,这时我们可以直接rm掉.xxx.swp文件
如下:我们vim test.txt文件再输入一些内容,之后直接退出shell就会查收.test.txt.swp文件
此时我们不能vim test.txt打开文件,会有如下提示
我们只有rm .test.txt.swp文件后才可以正常打开文件
总结
以上就是我对于Linux中vim使用的总结。感谢支持!!!
相关文章:

Linux:vim的简单使用
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、vim的基本概念二、vim的基本操作三、vim正常模式命令集四、vim底行模式命令集五、.xxx.swp的解决总结 前言 本文是对Linux中vim使用的总结 一、vim的基本概念 …...

Python---文件和文件夹操作
os模块 在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下: 第一步:导入os模块 import os 第二步:调用os模块中的相关方法 os.函数名() 与文件操作相关方法 编号函数功能1os.rename(目标文件名称&…...

electron-vue运用及案例代码
前言 Electron是一个使用JavaScript, HTML和CSS构建跨平台桌面应用程序的开源库。它允许开发者使用纯web技术创建原生应用程序,这使得web开发者能够利用他们已经掌握的web技术来构建桌面应用。 以下是一个简单的Electron应用程序的代码示例: // 引入Electron的主模块 co…...

视频字幕处理+AI绘画,Runway 全功能超详细使用教程(4)
runway的视频字幕处理、AI绘图功能介绍,感觉完全就是为了做电影而布局,一整套功能都上线了!想系统学习的必收藏! 在深度研究Runway各个功能后,无论是AI视频生成及后期处理技术,还是AI图像生成技术ÿ…...

令人疑惑的Promise相关问题
令人疑惑的Promise相关问题 问题1 const promise new Promise((resolve, reject) > {reject(Error(Error occurred)); });promise.catch(error > console.log(error.message)); promise.catch(error > console.log(error.message));输出: Error occurr…...

Spring 多数据源搭建
目录 前言 正文 1.Druid 介绍和使用 2.其他多数据源解决方案 总结 前言 对于复杂的业务和项目,可能在一个单体项目中存在需要连接多个数据库的情况。这时,就会使用到多数据源,实际中遇到的可能性比较大。 正文 如果一个项目中需要连…...

【二分查找】LeetCode1970:你能穿过矩阵的最后一天
本文涉及的基础知识点 二分查找算法合集 作者推荐 动态规划LeetCode2552:优化了6版的1324模式 题目 给你一个下标从 1 开始的二进制矩阵,其中 0 表示陆地,1 表示水域。同时给你 row 和 col 分别表示矩阵中行和列的数目。 一开始在第 0 …...

利用python连接MySQL数据库并执行相关sql操作
一、新建MySQL数据库 1.启动MySQL服务 打开phpstudy,开启MySQL服务。如果开启失败的话,可以打开任务管理器,把正在运行的mysqld服务的进程进行关闭,再次打开MySQL服务即可启动。 2.新建MySQL数据库 选择数据库,点击…...

jenkins配置
branch: "dev" 切换分支 $WORKSPACE: /var/lib/jenkins/workspace/jenkins任务名 dest_passwd服务器密码 变量 sudo sshpass -p $dest_passwd ssh root192.168.211.319 -tt rm -rf /data/patent/*:删除文件/data/patent/* sudo sshpa…...

LeNet对MNIST 数据集中的图像进行分类--keras实现
我们将训练一个卷积神经网络来对 MNIST 数据库中的图像进行分类,可以与前面所提到的CNN实现对比CNN对 MNIST 数据库中的图像进行分类-CSDN博客 加载 MNIST 数据库 MNIST 是机器学习领域最著名的数据集之一。 它有 70,000 张手写数字图像 - 下载非常简单 - 图像尺…...

Django的回顾的第4天
1.模型层 1.1简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别。 也就是说,HTML被直接硬编码在 Python代码之中。 def current_datetime(request):now datetime.datetime.now()html "<html><body>It is now %s.</body><…...

点云从入门到精通技术详解100篇-基于三维点云的工件曲面轮廓检测与机器人打磨轨迹规划(中)
目录 2.2.2 散乱点云滤波去噪 2.2.3 海量点云数据压缩 2.3 点云采集与预处理实验...

Mapper文件夹在resource目录下但是网页报错找不到productMapper.xml文件的解决
报错如下: 我的Mapper文件夹在resourse目录下但是网页报错找不到productMapper.xml。 结构如下:代码如下:<mappers><mapper resource"com/dhu/mapper/productMapper.xml" /> </mappers> 这段代码是在mybatis-co…...

22.Oracle中的临时表空间
Oracle中的临时表空间 一、临时表空间概述1、什么是临时表空间2、临时表空间的作用 二、临时表空间相关语法三、具体使用案例1、具体使用场景示例2、具体使用场景代码示例 点击此处跳转下一节:23.Oracle11g的UNDO表空间点击此处跳转上一节:21.Oracle的程…...

附录A 指令集基本原理
1. 引言 本书主要关注指令集体系结构4个主题: 1. 提出对指令集进行分类的方法,并对各种方法的优缺点进行定性评估; 2. 提出并分析一些在很大程度上独立于特定指令集的指令集评估数据。 3. 讨论语言与编译器议题以及…...

Unittest单元测试之unittest用例执行顺序
unittest用例执行顺序 当在一个测试类或多个测试模块下,用例数量较多时,unittest在执行用例 (test_xxx)时,并不是按从上到下的顺序执行,有特定的顺序。 unittest框架默认根据ACSII码的顺序加载测试用例&a…...

海云安谢朝海:开发安全领域大模型新实践 人工智能助力高效安全左移
2023年11月29日,2023中国(深圳)金融科技大会成功举行,该会议是深圳连续举办的第七届金融科技主题年度会议,也是2023深圳国际金融科技节重要活动之一。做好金融工作,需要兼顾创新与安全,当智能体…...

Postman接口测试工具完整教程
前言 作为软件开发过程中一个非常重要的环节,软件测试越来越成为软件开发商和用户关注的焦点。完善的测试是软件质量的保证,因此软件测试就成了一项重要而艰巨的工作。要做好这项工作当然也绝非易事。 第一部分:基础篇 postman:4.5.1 1.安…...

Android 滑动按钮(开关) SwitchCompat 自定义风格
原生的SwitchCompat控件如下图,不说不堪入目,也算是不敢恭维了。开个玩笑... 所以我们就需要对SwitchCompat进行自定义风格,效果如下图 代码如下 <androidx.appcompat.widget.SwitchCompatandroid:id"id/switch_compat"android:…...

前端面试灵魂提问-计网(2)
1、websocket 为什么全双工? 1.1 WebSocket是什么 WebSocket 是一种通信协议,它在客户端和服务器之间建立持久的全双工连接。全双工意味着数据可以双向流动,即客户端可以向服务器发送消息,服务器也可以向客户端发送消息,而无需…...

Git修改远程仓库名称
1、先直接在远程点仓库名,然后左侧菜单栏找settings-general,然后直接修改工程名,保存即可。 2、还是在settings-general下,下拉找到Advanced点击Expand展开,然后下拉到最底部 在Change path里填入新的项目名称&#x…...

kafka 集群 ZooKeeper 模式搭建
Apache Kafka是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序 Kafka 官网:Apache Kafka 关于ZooKeeper的弃用 根据 Kafka官网信息,随着Apache Kafka 3.5版本的发布,Zookeeper现…...

【LeetCode】 160. 相交链表
相交链表 题目题解 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&am…...

TZOJ 1429 小明A+B
答案: #include <stdio.h> int main() {int T0, A0, B0, sum0;scanf("%d", &T); //输入测试数据的组数while (T--) //循环T次{scanf("%d %d", &A, &B); //输入AB的值sum A B;if (sum > 100) //如果是三位数{…...

制作openeuler的livecd
下载该项目,执行下面的操作gitee openeuler livecd项目 基于openeuler环境 #安装工具,第一次可能报错,可以再执行一次 make installx86 livecd-creator -d -v --config./config/euler_x86_64.ks --fslabeleuler-LiveCD --cachecache --log…...

B.牛牛排队伍——模拟双链表
当前位置: 首页 > news >正文 B.牛牛排队伍——模拟双链表 news 2023/12/1 15:14:37 分析 题目其实很简单,就是双链表的增删查,但是刚开始,直接vis标记删除元素,查找一个位置的前一个用的while不断向前找,但是TLE;毕竟O(n*k)的复杂度,一开始没有考虑时间复杂度…...

【PyTorch】(四)损失函数与优化器
文章目录 1. 损失函数2. 优化器 1. 损失函数 2. 优化器...

【Python】使用execute(sql)执行insert之后没有插入数据
在sql为insert语句,用Python的sqlalchemy模块中的execute()执行之后没有插入数据的情况,主要是因为sqlalchemy版本的更新,不能直接只用execute()了,MySQL数据库连接的配置和sql都需要多处理一步: 之前的版本ÿ…...

虚拟机备份数据自动化验证原理
备份数据成功备份下来了,但是备份数据是否可用可靠?对于这个问题,最好最可靠的方法是将备份数据实际恢复出来验证。 但是这样的方法,不仅费时费力,而且需要随着备份数据的定期产生,还应当定期做备份数据验…...

前端入门(五)Vue3组合式API特性
文章目录 Vue3简介创建Vue3工程使用vite创建vue-cli方式 常用 Composition API启动项 - setup()setup的执行时机与参数 响应式原理vue2中的响应式vue3中的响应式ref函数reactive函数reactive与ref对比 计算属性 - computed监视属性 - watchwatchEffect Vue3生命周期自定义hook函…...