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…...

二维码文件在线管理系统-收费版
需求背景 如果大家想要在网上管理自己的文件,而且需要生成二维码,下面推荐【草料二维码】,这个系统很好。特别适合那些制造业,实体业的使用手册,你可以生成一个二维码,贴在设备上,然后这个二维码…...

UE4.27 Android环境下获取手机电量
获取电量方法 使用的方法时FAndroidMisc::GetBatteryLevel(); 出现的问题 但是在电脑上编译时发现,会发现编译无法通过。 因为安卓环境下编译时,包含 #include "Android/AndroidPlatformMisc.h" 头文件是可以正常链接的,但在电…...

vue-i18n报错
1. 开发环境报错Uncaught (in promise) TypeError: ‘set’ on proxy: trap returned falsish for property ‘$t’ legacy需要设置为false const i18n createI18n({legacy: false,// 默认语言locale: lang,// 设置语言环境messages, })2. 打包配置tsc --noEmit时报错&#…...

Docker新手:在tencent云上实现Python服务打包到容器
1 使用docker的原因 一致性和可移植性:Docker 容器可以在任何支持 Docker 的环境中运行,无论是开发者的笔记本电脑、测试服务器还是生产环境。这确保了应用在不同环境中的行为一致,减少了“在我的机器上可以运行”的问题。 隔离性ÿ…...

React基础知识学习
学习React前端框架是一个系统而深入的过程,以下是一份详细的学习指南: 一、React基础知识 React简介 React是一个用于构建用户界面的JavaScript库,由Facebook开发和维护。它强调组件化和声明式编程,使得构建复杂的用户界面变得更…...

ES IK分词器插件
前言 ES中默认了许多分词器,但是对中文的支持并不友好,IK分词器是一个专门为中文文本设计的分词工具,它不是ES的内置组件,而是一个需要单独安装和配置的插件。 Ik分词器的下载安装(Winows 版本) 下载地址:…...

二十三种设计模式-抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种方式,用于创建一系列相关或相互依赖的对象,而不需要指定它们具体的类。这种模式主要用于系统需要独立于其产品的创建逻辑时,并且…...

python opencv的orb特征检测(Oriented FAST and Rotated BRIEF)
官方文档:https://docs.opencv.org/4.10.0/d1/d89/tutorial_py_orb.html SIFT/SURF/ORB对比 https://www.bilibili.com/video/BV1Yw411S7hH?spm_id_from333.788.player.switch&vd_source26bb43d70f463acac2b0cce092be2eaa&p80 ORB代码 import numpy a…...

高阶数据结构----布隆过滤器和位图
(一)位图 位图是用来存放某种状态的,因为一个bit上只能存0和1所以一般只有两种状态的情况下适合用位图,所以非常适合判断数据在或者不在,而且位图十分节省空间,很适合于海量数据,且容易存储&…...

VScode使用密钥进行ssh连接服务器方法
如何正常连接ssh的方式可以看我原来那篇文章:Windows上使用VSCode连接远程服务器ssh 1.连接 点击ssh加号,然后关键点在第2步的书写上 2.命令 2的位置写命令: ssh -i "C:\Users\userName\.ssh\id_rsa" usernameIP -p 端口号 端…...

艾体宝产品丨加速开发:Redis 首款 VS Code 扩展上线!
Redis 宣布推出其首款专为 VS Code 设计的 Redis 扩展。这一扩展将 Redis 功能直接整合进您的集成开发环境(IDE),旨在简化您的工作流程,提升工作效率。 我们一直致力于构建强大的开发者生态系统,并在您工作的每一步提…...