当前位置: 首页 > 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…...

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

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

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...