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

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

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...