当前位置: 首页 > news >正文

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 特点

  1. 属于交互式编辑工具,允许用户实时编辑文件内容

  2. 编辑文件时,会将该文件的内容全部加载到内存,在内存中完成修改后再写入

  3. 有三种工作模式,末行模式、命令模式和编辑模式,默认进入的是命令模式;

三: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 / 自定义事件的校验响应性调试钩子开发工具集成 然而&#xff…...

Linux:各发行版及其包管理工具

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Debian 包管理工具:dpkg(低级包管理器)、apt(高级包管理器,建立在dpkg基础上)包格式:…...

【计算机网络】课程 作业一 搭建连续覆盖的办公网络

作业一 搭建连续覆盖的办公网络 题目:论述题(共1题,100分) 充分利用所学习的数据链路层局域网知识,加上物理层的基础知识,请给一个办公场所(三层,每层约100平方)&#xf…...

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

二维码文件在线管理系统-收费版

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

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...