vim 的基础使用
目录
- 一:vim 介绍
- 二:vim 特点
- 三:vim 配置
- 四:vim 使用
- 1、vim 语法格式
- 2、vim 普通模式
- (1)保存退出
- (2)光标跳转
- (3)文本删除
- (4)文本查找
- (5)撤销操作
- (6)可视化模式
- 3、vim 命令模式
- (1)保存退出
- (2)set 命令
- (3)搜索替换
- 4、vim 编辑模式
一:vim 介绍
vim 是一个跨平台的交互式文本编辑工具,是vi编辑器的增强版,常用于Linux环境中对文本文件的内容进行增删查改;
二:vim 特点
-
属于交互式编辑工具,允许用户实时编辑文件内容
-
编辑文件时,会将该文件的内容全部加载到内存,在内存中完成修改后再写入
-
有三种工作模式,末行模式、命令模式和编辑模式,默认进入的是命令模式;
三:vim 配置
vim 有两种级别的配置文件,分别是用户级配置文件和系统全局配置文件;vim 配置文件中,使用 " 作为注释符号,注释内容不会被执行:
-
用户级配置文件:只对当前用户生效,一般默认不存在,需要手动创建;
-
系统级配置文件:针对所有用户生效;
查看配置文件优先级和路径:
# 例如
$ vim --version | grep vimrcsystem vimrc file: "$VIM/vimrc"user vimrc file: "$HOME/.vimrc"2nd user vimrc file: "~/.vim/vimrc"
四:vim 使用
1、vim 语法格式
vim [filename]
-
如果指定的文件
filename存在,打开文件并显示其内容。 -
如果指定的文件不存在,创建一个空白的缓冲区(
buffer),将其命名为filename,如果编辑后保存 (:w),文件将被创建并写入指定路径。 -
直接执行 vim 而不指定文件名:vim 会打开一个空白缓冲区(
buffer),没有关联的文件。可以进行文本的输入,但是保存的时候需要在命令行模式下指定文件名:w filename
2、vim 普通模式
-
打开某个文件时,默认就处于普通模式;
-
命令模式下可以通过执行相关命令来对文本进行管理,但是输入的命令不会在界面有任何显示;
-
命令模式下不能直接编辑文本,而是通过按键命令操作文件内容;
(1)保存退出
-
ZQ:直接退出vim编辑器,当前更改的内容不会被保存; -
ZZ:保存当前对文本的修改,然后退出vim编辑器;
(2)光标跳转
-
^(脱字符):跳转到光标所在行的,数字0也可以; -
$:将光标跳转到光标所在行的行尾 -
gg:光标移动到文本的第一行 -
G:光标移动到文本的最后一行,前面加数字就是移动到指定行。 -
[num]G:跳转到指定行。例如 11G,表示将光标跳转到第11行
(3)文本删除
-
d0或d$:(删除到行尾)从光标处开始的内容一直到光标所在行的最后一个字符会被删除; -
dd: 删除光标所在行的整行内容; -
dG:删除从光标开始行到最后一行的内容;
(4)文本查找
-
/关键字: 向下搜索, -
?关键字:从当前光标位置向上搜索,n:向上 N:向下
(5)撤销操作
-
u:撤销当前操作 -
ctrl+r:取消撤销操作
(6)可视化模式
可视化模式的作用是用于选择文本块,进入可视化模式后,可以批量选择。
-
v:选择文本中的单个字符 -
v:选择整行文本 -
ctrl+v:选择文本的一个矩形区块
例如:批量注释行:
1、先将光标移动到指定行的第一行行首

2、输入ctrl+v 进入可视化模式

3、向下移动光标,选中希望操作的每一行的第一个字符

4、输入大写字母 I切换至插入模式(大写I 表示在当前光标所在行的行首输入)

5、输入 #

6、按 ESC 键返回到普通模式

3、vim 命令模式
命令模式也叫做末行模式,于执行文件操作和全局操作命令,例如保存、退出、搜索和替换等。
普通模式下按 : 可以进入末行模式,按 Esc 返回普通模式。
(1)保存退出
-
w:保存 -
q:退出 -
x:保存并退出 -
!:结合w q等命令使用,表示强制的意思
(2)set 命令
-
set nu:显示行号,set nonu:取消行号显示 -
set ai:自动缩进,set noai:取消自动缩进 -
set paste:复制文本内容到该文件时候,保留文件格式,set nopaste:取消格式保留 -
set list:显示不可见的字符。^I:表示tab键$:表示回车 -
set ff=unix|dos:更改文本格式,unix就是linux格式,dos就是windows的格式 -
set fileencodings=utf-8,iso-8859-1:设置当前内容显示的编码格式 -
set fileencoding=utf-8:设置使用vim创建新文件时的编码格式;
(3)搜索替换
说明:分隔符 / 可以换为其它的,例如 s#xx#yy#
-
s/xx/yy/:将文本中光标所在行的第一个xx替换为yy -
s/xx/yy/g:将文本中光标所在行的所有的xx替换为yy -
%s/xx/yy/g:将文本中所有的xx都替换为yy,如果不加g,只会搜索
4、vim 编辑模式
编辑模式也叫做插入模式,用于直接对文本内容进行操作。
在普通模式下按 i、a、o 可以进入到编辑模式;
-
i:在当前光标位置前插入文本;I:在当前行的行首插入文本 -
a:在当前光标位置后插入文本;A:在当前行的行首插入文本 -
o:在当前行下方新建一行并插入文本;O:在当前行上方新建一行并插入文本
相关文章:
vim 的基础使用
目录 一:vim 介绍二:vim 特点三:vim 配置四:vim 使用1、vim 语法格式2、vim 普通模式(1)保存退出(2)光标跳转(3)文本删除(4)文本查找&…...
关于flinkCDC监控mysql binlog时,datetime类型自动转换成时间戳类型问题
flinkCDC监控mysql binlog时,datetime类型自动转换成时间戳类型 问题解决1.自定义转换器类2.代码引用 结果 问题 flink版本:1.18.1,mysql版本:8.0.40 使用FlinkCDC的MySqlSource 连接mysql,对于datetime 类型字段&…...
基于Springboot校园失物招领系统【附源码】
基于Springboot校园失物招领系统 效果如下: 系统登陆页面 物品页面 系统首页面 失物招领管理页面 失物认领页面 宣传视频页面 物品挂失留言管理页面 宣传视频类型管理页面 研究背景 在校园环境中,失物招领是一个常见的问题。传统的失物招领方式主要依…...
单片机端口操作和独立引脚操作
单片机端口操作和独立引脚操作 在单片机编程中,控制I/O端口是最基础的操作之一。通过控制端口,我们可以实现对外设(如LED、按键、继电器等)的控制。在51单片机中,有两种常见的端口操作方式:整体控制&#…...
【Vim Masterclass 笔记03】S03L10 + S03L11:Vim 中的文本删除操作以及 Vim 思维习惯的培养(含 DIY 拓展知识点)
文章目录 Section 3:Vim Essentials(Vim 核心知识)S03L10 Vim 核心浏览命令同步练习点评课S03L11 Deleting Text and "Thinking in Vim" 文本的删除及 Vim 思维习惯的培养1 删除单个字符2 删除一个单词2.1 推广1:D HJK…...
ARM200~500部署
前提:数据库已经安装好,并且正常运行 1.修改hostname,将里面的AR-A 改为hzx vi /etc/hostname 2.重启网络服务 sudo systemctl restart NetworkManager 3.修改community-admin.service 文件,更改小区名称和IP,并将文件上传到/…...
word中插入zotero引用
1、参考文献末尾没有文献? 在文献条目要显示的地方点击“refresh” 2、参考文献条目没有悬挂缩进? 把“书目”添加到样式库中,修改样式为悬挂缩进1.5字符 3、交叉引用? 宏 新建一个宏 粘贴下面代码 Public Sub ZoteroLinkCita…...
需求上线,为什么要刷缓存?
在需求上线的过程中,刷缓存主要有以下几个重要原因: 一、保证数据的准确性 旧数据残留问题 缓存是为了加快数据访问速度而存储的数据副本。在需求更新后,之前缓存中的数据可能已经不符合新的业务逻辑。例如,一个电商网站修改了商…...
TVS二极管选型【EMC】
TVS器件并联在电路中,当电路正常工作时,他处于截止状态(高阻态),不影响线路正常工作,当线路处于异常过压并达到其击穿电压时,他迅速由高阻态变为低阻态,给瞬间电流提供一个低阻抗导通…...
《从入门到精通:蓝桥杯编程大赛知识点全攻略》(一)-递归实现指数型枚举、递归实现排列型枚举
本篇博客将聚焦于通过递归来实现两种经典的枚举方法:指数型枚举和排列型枚举。这两种枚举方式在计算机科学和算法竞赛中都有广泛应用,无论是在解题中,还是在实际工作中都极具价值。 目录 前言 斐波那契数列递归 递归实现指数型枚举 算法思…...
C#对线程同步的应用
什么是线程同步?线程同步的应用场景有哪些?在C#中有哪些线程同步方式?下面对这些问题做一个总结,让大家在面试的时候遇到这些问题能够游刃有余。 线程同步是指在多线程环境下,多个线程同时访问共享资源时,确…...
基于微信小程序的面部动作检测系统
引言 本技术文档旨在详细阐述一个基于微信小程序的面部动作检测系统的技术路线、实现方法及关键技术框架。系统的核心功能包括检测用户的左右转头、眨眼和张嘴动作,并根据检测结果逐步引导用户完成任务。为确保系统的安全性和准确性,特别是防止用户通过…...
Activation Functions
Chapter4:Activation Functions 声明:本篇博客笔记来源于《Neural Networks from scratch in Python》,作者的youtube 其实关于神经网络的入门博主已经写过几篇了,这里就不再赘述,附上链接。 1.一文窥见神经网络 2.神经…...
《Vue3实战教程》37:Vue3生产部署
如果您有疑问,请观看视频教程《Vue3实战教程》 生产部署 开发环境 vs. 生产环境 在开发过程中,Vue 提供了许多功能来提升开发体验: 对常见错误和隐患的警告对组件 props / 自定义事件的校验响应性调试钩子开发工具集成 然而ÿ…...
Linux:各发行版及其包管理工具
相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Debian 包管理工具:dpkg(低级包管理器)、apt(高级包管理器,建立在dpkg基础上)包格式:…...
【计算机网络】课程 作业一 搭建连续覆盖的办公网络
作业一 搭建连续覆盖的办公网络 题目:论述题(共1题,100分) 充分利用所学习的数据链路层局域网知识,加上物理层的基础知识,请给一个办公场所(三层,每层约100平方)…...
C++ 设计模式:单例模式(Singleton Pattern)
链接:C 设计模式 链接:C 设计模式 - 享元模式 单例模式(Singleton Pattern)是创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。单例模式在需要全局共享资源或控制实例数量的…...
OpenCV调整图像亮度和对比度
【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 1、基本方法---线性变换 // 亮度和对比度调整 cv::Mat adjustBrightnessContrast(const cv::Mat& src, double alpha, int beta) {cv::Mat dst;src.convertTo(dst, -1, alpha, beta);return dst; }// 使用…...
Kafka Offset explorer使用
Kafka集群配置好以后以后运维这边先用工具测试一下,便于rd展开后续的工作,本地调试时一般使用Offset explorer工具进行连接 使用SASL(Simple Authentication and Security Layer)验证方式 使用SCRAM-SHA-256(Salted Challenge Response Authentication…...
二维码文件在线管理系统-收费版
需求背景 如果大家想要在网上管理自己的文件,而且需要生成二维码,下面推荐【草料二维码】,这个系统很好。特别适合那些制造业,实体业的使用手册,你可以生成一个二维码,贴在设备上,然后这个二维码…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
五、jmeter脚本参数化
目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...
职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...
