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…...
二维码文件在线管理系统-收费版
需求背景 如果大家想要在网上管理自己的文件,而且需要生成二维码,下面推荐【草料二维码】,这个系统很好。特别适合那些制造业,实体业的使用手册,你可以生成一个二维码,贴在设备上,然后这个二维码…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
