vim的使用
vim文本编辑器
- vim介绍
- 命令模式
- 光标移动
- 选中内容
- 复制内容
- 粘贴内容
- 删除
- 撤销/恢复
- 字符转换
- 编辑模式
- 末行模式
- 保存/退出
- 查找
- 行号显示
- 文件切换
- 扩展
vim介绍
vim是Linux自带的文本编辑器,具有命令模式、编辑模式、末行模式三种模式。
模式间的切换:
- 命令模式下,按键盘上的
i
、a
等键可进入编辑模式 - 命令模式下,输入
:
可进入末行模式 - 编辑模式下,按键盘上的
esc
键可回到命令模式 - 末行模式下,按一次(慢退)或两次(快退)
esc
键可回到命令模式
vim打开文件方式 | 说明 |
---|---|
vim filename | 打开或新建一个文件,并将光标置于第一行的首部 |
vim -r filename | 恢复上次vim打开时崩溃的文件 |
vim -R filename | 用只读的方式打开文件 |
命令模式
光标移动
快捷键 | 功能描述 |
---|---|
h、j、k、l | 光标向左、下、上、右移动 |
gg | 光标移动到首行 |
G | 光标移动到末行 |
b/B | 光标向前移动一个单词 |
w/W | 光标向后移动一个单词 |
ctrl+b 或 PageUp | 翻屏操作,向上翻 |
ctrl+f 或 PageDown | 翻屏操作,向下翻 |
ctrl+u | 向上翻半屏 |
ctrl+d | 向下翻半屏 |
` | 光标移动到上次编辑处 |
数字+G | 快速将光标移动到指定行 |
数字+上下方向键 | 以当前光标为准,向上/下移动n行 |
数字+左右方向键 | 以当前光标为准,向上/下移动n个字符 |
H | 光标移动到屏幕顶部 |
M | 光标移动到屏幕中间 |
L | 光标移动到屏幕底部 |
shift+6 | 光标移动到行首 |
shift+4 | 光标移动到行尾 |
选中内容
快捷键 | 功能描述 |
---|---|
v | 字符选中 |
V 或 shift+v | 行选中 |
复制内容
快捷键 | 功能描述 |
---|---|
y | 复制已选中的文本到剪贴板 |
n+yy | 复制光标所在行,此命令前可以加数字n,表示复制n行 |
yw | 复制光标位置的单词 |
ctrl+v,方向键,yy | ctrl+v,并按方向键选中区块,按下yy进行复制 |
粘贴内容
快捷键 | 功能描述 |
---|---|
p | 将剪贴板中的内容粘贴到光标后 |
P | 将剪贴板中的内容粘贴到光标前 |
删除
快捷键 | 功能描述 |
---|---|
x | 删除光标所在位置的字符 |
X | 删除光标前一个字符 |
dd | 删除光标所在行,删除之后,下一行上移;严格来说它是剪切命令,可以配合p命令使用 |
D | 删除光标位置到行尾的内容,删除之后,下一行不上移;也有剪切的作用 |
ndd | 删除当前行(包括此行)后n行文本;可以理解成剪切多行,配合p命令使用 |
dG | 删除光标所在行一直到文件末尾的所有内容 |
撤销/恢复
快捷键 | 功能描述 |
---|---|
u | 撤销 |
U | 撤销所有编辑 |
ctrl+r | 恢复 |
字符转换
快捷键 | 功能描述 |
---|---|
~ | 转换大小写 |
u | 转成小写 |
U | 转成大写 |
编辑模式
快捷键 | 功能描述 |
---|---|
i | 在当前光标所在位置插入,光标后的文本相应向右移动 |
o | 在光标所在行的下方插入新的一行,光标停在空行首,等待文本输入 |
O | 在光标所在行的上方插入新的一行,光标停在空行首,等待文本输入 |
a | 在当前光标所在位置之后插入 |
A | 在光标所在行的行尾插入,相当于光标移动到行尾再执行a命令 |
末行模式
保存/退出
快捷键 | 功能描述 |
---|---|
wq | 保存并退出vim编辑器 |
wq! | 保存并强制退出vim编辑器 |
q | 不保存并退出vim编辑器 |
q! | 不保存并强制退出vim编辑器 |
w | 保存但不退出vim编辑器 |
w! | 强制保存文本 |
w filename | 另存到filename文件中 |
x! | 保存文本,并退出编辑器 |
ZZ | 直接退出编辑器 |
查找
快捷键 | 功能描述 |
---|---|
/abc | 从光标所在位置向前查找字符串abc |
?abc | 从光标所在位置向后查找字符串abc |
/^abc | 查找以abc为行首的行 |
/abc$ | 查找以abc为行尾的行 |
行号显示
快捷键 | 功能描述 |
---|---|
set nu | 行号显示 |
set nonu | 取消行号显示 |
文件切换
使用vim打开多个文件后,在末行模式下可以进行切换。
快捷键 | 功能描述 |
---|---|
files(%a表示激活状态,#表示上一个打开的文件) | 查看当前打开的所有文件 |
open filename | 切换到filename文件 |
bp | 切换到上一个文件 |
bn | 切换到下一个文件 |
扩展
在末行模式下,输入syntax on/off
,能够显示或取消显示代码颜色。
vim内置计算器的使用:
- 进入编辑模式
- 按
“ctrl+r
,光标变成引号,输入=
,光标转到最后一行 - 输入需要计算的内容,按下Enter键,计算结果会替代引号,光标恢复
vim的配置:
- 文件打开时,末行模式下输入的配置为临时配置,关闭文件后配置无效
- 修改个人配置文件,可以永久保存个人配置(~/.vimrc,如果没有可以自行创建)
- 修改全局配置文件,对每个用户生效(vim自带,/etc/vimrc)
注:个人配置文件优先级更高,当个人配置和全局配置发生冲突时,系统以当前用户的个人配置文件为准
处理异常:
- 在编辑文件后,未正常保存退出时,会产生异常退出交换文件(.原文件名.swp);将交换文件删除后,再次打开文件时,便不会有提示:“#rm -f .原文件名.swp”。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
vim的使用
vim文本编辑器 vim介绍命令模式光标移动选中内容复制内容粘贴内容删除撤销/恢复字符转换 编辑模式末行模式保存/退出查找行号显示文件切换 扩展 vim介绍 vim是Linux自带的文本编辑器,具有命令模式、编辑模式、末行模式三种模式。 模式间的切换: 命令模…...
![](https://img-blog.csdnimg.cn/078a2b179e614dcfac497fda183e427f.png)
马氏杆法检查斜视
使用 检查水平向斜视时,使用水平向马氏杆检查;重直向斜视时,使用重直问马氏杆;检查旋转斜视时,使用双马氏杆. 检查水平向斜视 双眼屈光不正全矫 双眼同时打开,右眼前加水平向马氏杆,左眼前不加 双眼同时观察点光源&…...
![](https://img-blog.csdnimg.cn/img_convert/ab913095c7ddfdacf3386ba64eeff451.jpeg)
Mac电脑怎么使用“磁盘工具”修复磁盘
我们可以使用“磁盘工具”的“急救”功能来查找和修复磁盘错误。 “磁盘工具”可以查找和修复与 Mac 磁盘的格式及目录结构有关的错误。使用 Mac 时,错误可能会导致意外行为,而重大错误甚至可能会导致 Mac 彻底无法启动。 继续之前,请确保您…...
![](https://img-blog.csdnimg.cn/a4d232268c2f4656ae285740e3403e96.png)
c++画出分割图像,水平线和垂直线
1、pca 找到图像某个区域的垂直线,并画出来 // 1、 斑块的框 血管二值化图,pca 找到垂直血管壁的直线, 还是根据斑块找主轴方向吧// Step 1: 提取斑块左右范围内的血管像素点坐标,std::vector<cv::Point> points;for (int y 0; y <…...
![](https://www.ngui.cc/images/no-images.jpg)
Python 程序设计入门(015)—— enumerate() 函数的用法
Python 程序设计入门(015)—— enumerate() 函数的用法 目录 Python 程序设计入门(015)—— enumerate() 函数的用法一、enumerate() 函数的语法二、为可迭代对象创建索引三、将字符串、列表等转换为字典1、将字符串转换为字典2、…...
![](https://www.ngui.cc/images/no-images.jpg)
__dict__属性
__dict__ 是 Python 中的一个特殊属性,通常存在于大多数 Python 对象中,用于存储该对象的可变属性。 以下是关于 __dict__ 的一些关键点和详细信息: 存储属性:对于大多数自定义的 Python 对象,__dict__ 属性包含了这个…...
![](https://img-blog.csdnimg.cn/d2e3349bfef640ce95940cbaab8995de.png)
k8s之Pod控制器
目录 一、Pod控制器及其功用二、pod控制器的多种类型2.1 pod容器中的有状态和无状态的区别 三、Deployment 控制器四、SatefulSet 控制器4.1 StatefulSet由以下几个部分组成4.2 为什么要有headless?4.3 为什么要有volumeClaimTemplate?4.4 滚动更新4.5 扩…...
![](https://www.ngui.cc/images/no-images.jpg)
逆元(求乘法逆元的几种方法)
目录 逆元 加法逆元 乘法逆元 如何求 快速幂 扩展欧几里得 O(n)求1到n的乘法逆元 逆元 数学中,逆元素(英语:Inverse element)推广了加法中的加法逆元和乘法中的倒数。直观地说,它是一个可以取消另一给定元素运…...
![](https://www.ngui.cc/images/no-images.jpg)
没点本事,还真做不好数字化转型
数字化转型逐渐成为企业业务增长的利器 然而,在此过程中 企业最应该注重哪些? 效率?质量? 但还有一个至关重要的点不容忽视 那就是安全 有一家硬核企业通过技术与狠活 硬生生提升了应用安全性 保障了产业与数字化的安全融合…...
![](https://img-blog.csdnimg.cn/99e9cf1071fa4b3cb76b2887db2d4e8a.png)
windows 10 远程桌面配置
1. 修改远程桌面端口(3389) 打开注册表(winr), 输入regedit 找到配置项【计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Wds\rdpwd\Tds\tcp】 , 可以通过搜索“Wds”快速定位。 修改端口配…...
![](https://www.ngui.cc/images/no-images.jpg)
OpenStreetMap 上基于A*搜索算法的C ++路线规划项目
引言 在现代的地理信息系统(GIS)中,路线规划是一个重要的组成部分。它涉及到从一个地点到另一个地点的最优路径的确定。在这篇文章中,我们将探讨如何在OpenStreetMap数据上实现一个基于A*搜索算法的C路线规划项目。 OpenStreetM…...
![](https://img-blog.csdnimg.cn/ab659292ccc649eea670327cae9e2613.png)
java实现随机生成验证码
import java.util.concurrent.ThreadLocalRandom;/* 生成验证码的工具 可动态配置验证码长度*/ public class CodeUtils {public static void main(String[] args) {//随机生成5个长度为4的验证码for (int i 0; i < 5; i) {System.out.println(CodeUtils.getCode(4));}for …...
Positive证书是什么?
Positive SSL是全球著名CA Sectigo的子品牌, 也是目前全球签发量最高的商业SSL证书。价格低,安全性高,在个人网站和中小型企业网站中拥有极高的占有率。 Positive SSL证书包括DV SSL, EV SSL,也是唯一支持IP地址加密的…...
![](https://img-blog.csdnimg.cn/1ccc520fcf104736a5fe95a16ed374d0.png)
vulnhub靶场-y0usef笔记
vulnhub靶场-y0usef笔记 信息收集 首先fscan找到目标机器ip http://192.168.167.70/ nmap扫描端口 Host is up (0.00029s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ub…...
华为智选首款纯电轿跑“LUXEED”能大卖吗?
监制 | 何玺 排版 | 叶媛 华为智选纯电轿跑来袭! 8月7日,华为常务董事余承东在社交媒体上发文,宣布华为智选即将推出首款“突破想象”的纯电轿跑车。 01 华为智选首款纯电轿跑来袭 余承东的发文引起了极大关注,在各大媒体的报…...
![](https://www.ngui.cc/images/no-images.jpg)
ArcGIS API for JavaScript 3.44 地图Demo示例合集
ArcGIS API for JavaScript 3.44 demo合集 (一)创建地图(二)基准图库(三)编辑书签(四)主页按钮(五)LayerList小部件(六)测量小工具&am…...
![](https://img-blog.csdnimg.cn/5f6e597a6a32411abe7a54949db833b6.png)
RFID工业识别技术:供应链智能化的科技颠覆
RFID工业识别技术,作为物联网的先锋,正在供应链管理领域展现着前所未有的科技颠覆。从物料追踪到库存管理,再到物流配送,RFID技术以其高效的数据采集和智能的自动化处理,彻底改变着传统供应链的运营方式。 RFID在物料追…...
![](https://www.ngui.cc/images/no-images.jpg)
行列转换两例的思考
1、多行转成一列 (1)、建测试表及插入测试数据 create table t(i int,a varchar2(1)); insert into t(i,a) select 1,a from dual union all select 1,b from dual union all select 1,d from dual union all select 1,e from dual union all select 2,z from dual union all…...
![](https://img-blog.csdnimg.cn/be4e314140504db683640a63ff064e6d.png)
高德地图 SDK 接口测试接入(AndroidTest 上手)
学习资料 官方文档 在 Android 平台上测试应用 | Android 开发者 | Android Developers 测试了解 【玩转Test】开篇-Android test 介绍 Android单元测试全解_android 单元测试_一代小强的博客-CSDN博客 Android单元测试-对Activity的测试_activitytestrule_许佳佳233的博客…...
![](https://img-blog.csdnimg.cn/ba4ef783187e4420ae408433df1064df.png)
省电模式稳定电压显示IC32×4 LCD显示驱动芯片
简述 VK1C21A是一个点阵式存储映射的LCD驱动器,可支持最大128点(32SEGx4COM) 的LCD屏,也支持2COM和3COM的LCD屏。单片机可通过3/4个通信脚配置显示参数和发 送显示数据,也可通过指令进入省电模式。具备高抗干扰&a…...
![](https://www.ngui.cc/images/no-images.jpg)
分布式架构的观测
分布式架构的观测 日志日志的输出收集与缓冲加工与聚合存储与查询 追踪数据收集 度量 在一个分布式应用中,如果出现了某个异常,那我们必然不可能只依靠 awk、grep 等命令来查看日志分析问题,往往分布式架构的一个异常都贯通多个节点ÿ…...
![](https://img-blog.csdnimg.cn/f410c8f6f9be4bc092a73a975913583c.png)
交替方向乘子
目录 一,交替方向乘子ADMM 1,带线性约束的分离优化模型 2,常见优化模型转带线性约束的分离优化模型 3,带线性约束的分离优化模型求解 4,交替方向乘子ADMM 本文部分内容来自教材 一,交替方向乘子ADMM …...
![](https://img-blog.csdnimg.cn/b5602683ba934aca87d769fee67bcfb7.png)
9-数据结构-栈(C语言版)
数据结构-栈(C语言版) 目录 数据结构-栈(C语言版) 1.栈的基础知识 1.入栈,出栈的排列组合 情景二:Catalan函数(计算不同出栈的总数) 2.栈的基本操作 1.顺序存储 (1)顺序栈-定义…...
![](https://img-blog.csdnimg.cn/b9f2aee6895b48e5aad9e39dbe0b9e69.png)
C#,数值计算——用于从连续的数据值流估计任意分位数的计算方法与源程序
1 分位数Quantile 分位数(Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。 2 常见各类分位数 2.1 二分位…...
![](https://wiki.finogeeks.club/download/attachments/227952637/image-2023-8-1_10-53-30.png?version=1&modificationDate=1690858413359&api=v2)
实践分享:小程序事件系统设计
微信小程序官方文档中解释说:事件是用于子组件向父组件传递数据,可以传递任意数据。 小程序开发中的事件是指视图层到逻辑层的通讯方式,主要是可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件&#…...
![](https://www.learnfk.com/guide/images/wuya.png)
无涯教程-Perl - bless函数
描述 此函数告诉REF引用的实体,它现在是CLASSNAME包中的对象,如果省略CLASSNAME,则为当前包中的对象。建议使用bless的两个参数形式。 语法 以下是此函数的简单语法- bless REF, CLASSNAMEbless REF返回值 该函数返回对祝福到CLASSNAME中的对象的引用。 例 以下是显示其…...
![](https://www.ngui.cc/images/no-images.jpg)
Java关键字:final解析
目录 一、final变量 二、final方法 三、final类 final是Java语言中的一个关键字,凡是被final关键字修饰过的内容都是不可改变的。 一、final变量 final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常࿰…...
![](https://img-blog.csdnimg.cn/08e5d41446f843e780d65131d5146327.png)
LeetCode--HOT100题(25)
目录 题目描述:141. 环形链表(简单)题目接口解题思路代码 PS: 题目描述:141. 环形链表(简单) 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连…...
![](https://www.ngui.cc/images/no-images.jpg)
外卖项目,登录设计,nginx反向代理,MD5明文加密
.gitignore文件里的东西是进行排除,不用git进行管理。登录设计, controller 接收并封装参数调用service方法查询数据库封装结果并响应 登录成功后,生成jwt令牌 Service层 调用mapper查询数据库密码比对返回结果Mapper 编写sql语句为什么前端不…...
![](https://img-blog.csdnimg.cn/ab67767e520044a1b6525ff3951da2e4.png)
【云原生】kubernetes在Pod中init容器的作用和使用
目录 Pod 中 init 容器 1 init 容器特点 2 使用 init 容器 Pod 中 init 容器 Init 容器是一种特殊容器,在Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。 1 init 容器特点 init 容器与普通的容器非常像…...
![](/images/no-images.jpg)
公众号网站开发用什么模板/查询网 网站查询
连续投影算法(SPA)被大量应用在光谱特征波段选择中,但是可能是比较小众,网上很难找到可用的代码。因此我自己写了一个关于连续投影算法的matlab函数,包含了SPA最核心的部分,起始波段的选择方法可见参考文献…...
![](https://img-blog.csdnimg.cn/31c36d0fa2ee47d490b0054dc02d723f.png)
网站seo推广优化报价表/网络营销计划的七个步骤
这里写目录标题1.DataSource理论知识1.DataSource理论知识 什么是数据源-DataSource 简单理解为数据源头,提供了应用程序所需要数据的位置。数据源保证了应用程序与目标数据之间交互的规范和协议,它可以是数据库,文件系统等等。其中数据源定…...
![](https://img-blog.csdnimg.cn/img_convert/9e73f32474aa1c02e84c9676b5614f40.png)
重庆建设工程交易中心/许昌seo公司
前面介绍了一些Go语言的基础,但要想对Go语言有深入的理解,还要学习加事件才行。本号给大家推荐几本必读教程。Go语言是最近几年流行起来的语言,该语言有谷歌发明,并得到广泛的应用。Go语言最大的特点是并发支持度好,而…...
![](https://www.oschina.net/img/hot3.png)
政务网站集约化建设/广州seo推荐
2019独角兽企业重金招聘Python工程师标准>>> 在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码&am…...
![](https://img-blog.csdnimg.cn/img_convert/2847c6ddba8109e552d1689713452458.png)
新疆建设云网站办理程序/微信拓客的最新方法
复盘微信支付金额不正确问题—PHP浮点型计算2020-11-15 11:58:29一、背景在做微信支付项目的时候,微信要求金额的单位必须为分,而数据库中订单金额单位是元,所以使用订单金额*100是正确的做法,但是会经常出现少一分钱的状况&#…...
![](/images/no-images.jpg)
做代购的购物网站/十大搜索引擎地址
先上辗转相除的代码 while (true) {int t a % b;if (t 0) break;else {a b;b t;} } 为什么要这么做? 我们来证明余数也是公因数的倍数 a,b两个数,(a>b),肯定是有一个公因数1的,或者也可…...