【vim工具的使用】

news2024/12/23 6:48:49

目录:

  • 前言
  • 一、普通/命令模式
    • 1.文件中移动 - 1
    • 2.文件中移动 - 2
    • 3.复制、粘贴、剪切、删除
    • 4.行内删除
    • 5.撤回
    • 6.替换
    • 7.高亮选中
    • 8.逐单词移动 - 3
  • 二、底行模式
    • 1.退出vim
    • 2.设置行号
    • 3.替换
    • 4.搜索
    • 3.不退出vim的情况下进行操作
    • 4.多文件操作
  • 三、替换模式
  • 四、插入模式
  • 总结

前言

打怪升级:第20天
在这里插入图片描述

一、普通/命令模式

进入vim:vim+file,进入后默认处于命令模式。
退出vim:跳转底行模式查看。
注意:下文出现的 shift + g 等复合指令就是 G 。


1.文件中移动 - 1

hjkl
h:光标向左移动一格;
j:光标向下移动一格;
k:光标向上移动一格;
l:光标向右移动一格;
以上选项都可加 数字n,来进行“跳跃移动”。
在这里插入图片描述

2.文件中移动 - 2

shift + 6(^):到达光标所在行的开头;
shift + 4 ($):到达光标所在行的结尾。
gg:跳转到文件开头;
shift + g (G):跳转到文件结尾;
n + shift + g (G):跳转到第n行。
在这里插入图片描述


3.复制、粘贴、剪切、删除

复制、粘贴、剪切、删除
yy:复制光标所在行(放到寄存器中);
n + yy:复制从光标所在行开始的n行。
p:将寄存器中的内容粘贴到光标位置;
n + p:粘贴n遍。
dd:剪切光标所在行(直接将本行数据剪切到寄存器中,如果不进行粘贴,就可以当做删除操作使用);
n + dd:剪切从光标所在行开始的n行;
shift + d (D):剪切光标所在行从行首到行尾,与dd的一点区别在于:会留下一个空行;
n + shift + d:等同于n + dd。
在这里插入图片描述


4.行内删除

行内删除
x:从左往右删除一个字符,(删除光标所在位置的字符被删除的内容也会被放到寄存器中,可以进行粘贴);
n + x:删除本行中光标位置开始的n个字符。
shift + x(X):从右往左删除(删除光标前边的一个字符);
n + shift + x(X):从右往左删除前n个字符。
在这里插入图片描述


5.撤回

u:撤回,回到上一步;
ctrl + r:撤回撤回的撤回(哈哈,换句话说就是:撤回 u 的操作,也只能撤回 u 的操作);
注意:如果文件只进行保存,没有退出,则依然可以进行撤回;
shift + r (R):替换光标所到位置的任意字符,直到按下 ESC为止(其实就是进入和退出插入模式)。


6.替换

r + 字符ch:将光标所在位置字符替换成 字符ch
shift + ~:快速切换大小写
在这里插入图片描述


7.高亮选中

shift + 3 (#):所以相同的数据都会变成高亮;
shift + 冒号 + set nohlsearch:取消高亮;
我们也可以设置让编辑器只进行选择,不高亮,不过这些需要进行一些简单配置,且看下文。
在这里插入图片描述

8.逐单词移动 - 3

逐单词移动w、b、e
b:向前移动一个单词;
w:向后移动一个单词;
e:向后移动一个单词;
n + b:向前跳过n个单词。
n + w:向后跳过n个单词;
b和w的光标会落在单词开头,e的光标则是落在单词末尾。
在这里插入图片描述


二、底行模式

shift + 冒号(:) :为进入底行模式;(更常用)
/ :直接一个反斜杠也可以进入底行模式;(两者前缀不同,使用情况不同)
ESC:退出底行模式。


1.退出vim

:w:写入(保存);
:q:退出(如果同时打开多个文件,退出的就是光标所在的文件);
:wq:写入并退出(保存并退出);
:q!:强制退出。


2.设置行号

:set nu:添加行号
:set nonu:去掉行号
在这里插入图片描述


3.替换

:%s/ dst / src / g
功能:把文件中所以的 dst 替换为 src
在这里插入图片描述


4.搜索

/ key (注意,斜杠前面不需要加冒号)
在这里插入图片描述


3.不退出vim的情况下进行操作

不退出vim,直接在底行模式下进行操作
! + commend,之后按任意键即可返回vim;
在这里插入图片描述


4.多文件操作

:vs + file:打开file文件;
可以打开两个及以上个文件,此时光标在哪个文件就是对哪个文件进行操作;
切换光标所在文件: 在命令模式下:按住Ctrl 键不动,连续按两下 w(这只是其中一种较为简单的方法);
退出操作同上。
在这里插入图片描述

切换文件:在这里插入图片描述


三、替换模式

shift + r 为进入替换模式。
ESC:退出替换模式。
在这里插入图片描述


四、插入模式

插入模式就是一个编辑器。
以下内容重在见过:

i:进入插入模式;
shift + i (I):光标移动到行首后进入插入模式;
a:光标向后移动一格后进入插入模式;
shift + a (A):光标移动到行尾后进入插入模式;
o:向下另起一行后进入插入模式;
shift + o (O):向上另起一行后进入插入模式;
s:删除光标位置字符后进入插入模式;
shift + s (S):清空当前行后进入插入模式;
cc:清空当前行后进入插入模式;
shift + c (C):清空光标位置及本行后面全部内容后进入插入模式;
c + w:清空当前单词到词尾处后进入插入模式;
c + n + w:清空当前n个字符后进入插入模式;
等等。


ESC:退出底行模式。
在这里插入图片描述


总结

  1. 如果不知道自己当前所处为那个模式,就可以多按几次 ESC,最终都会到达命令模式
  2. 以上动图中所使用的编译器为熊猫自行配置的,如果想要设置一个属于自己的独特的编辑器,需要建立一个.vimrc文件,在里面进行设置后功能都会即时生效;
  3. 当然这里更推荐直接使用大佬们设置好的配置文件,否则对于新手来说这些配置也是一件相当麻烦的事情呢,
    这里熊猫为大家找了一份配置文件,操作十分简单,感兴趣的朋友可以看一看:vim的强大配置文件;
  4. 想要了解更多的朋友可以继续参看这篇文章:vim命令大全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python递归小练习

递归算法是常见的基础算法之一,阶乘、青蛙跳台、兔子算法等便是递归算法中典型的例子。 1、阶乘以6的阶乘为例,计算的过程如下图所示 Python代码实现如下: def jiecheng(n):if n 1:result 1else:result n * jiecheng(n - 1)return resul…

蓝桥杯寒假集训第九天(回文日期)

没有白走的路,每一步都算数🎈🎈🎈 题目描述: 输入一行数据,这个数据是从10000101到89991231,输出这个数据后面的第一个回文数,以及输出第一个ABABBABA型的回文数。 注意&#xff1…

跟着博主一起刷题:《剑指offer》(第五天)

跟着博主一起刷题 这里使用的是题库: https://leetcode.cn/problem-list/xb9nqhhg/?page1 目录剑指 Offer 37. 序列化二叉树剑指 Offer 38. 字符串的排列剑指 Offer 40. 最小的k个数剑指 Offer 37. 序列化二叉树 剑指 Offer 37. 序列化二叉树 序列化: …

windows下mmclassification安装教程

文章目录mmclassification版本0.23.1一.官方安转教程二.安装教程mmclassification版本0.23.1 一.官方安转教程 官网 二.安装教程 创建conda环境 conda create --name openmmlab python3.8 -y进入创建的环境 conda activate openmmlab安转pytorcch conda install pytorch torc…

CSS知识点精学5-定位装饰

目录 一.定位 1.定位的基本介绍 2.定位的基本使用 3.静态定位 4.相对定位 5.绝对定位 6.子绝父相 a.优化学成网站推荐课程卡片 b.绝对定位盒子的居中(案例) 8.固定定位 9.元素的层级关系 二.装饰 1.垂直对齐方式 2.光标类型 3…

计算机网络实验报告

计算机网络实验报告 文章目录计算机网络实验报告一、验证性实验ipconfig实作一实作二问题ping实作一实作二问题tracert实作一问题一问题二问题三ARP实作一实作二实作三问题DHCP实作一问题netstat实作一实作二DNS实作一实作二实作三问题cache实作二二、Wireshark 实验数据链路层…

果蔬消毒机行业市场深度监测及发展趋势预测分析

2023-2029年中国果蔬消毒机行业市场深度监测及发展趋势预测报告报告编号:1691217本报告著作权归博研咨询所有,未经书面许可,任何组织和个人不得以任何形式复制、传播或输出中华人民共和国境外。任何未经授权使用本报告的相关商业行为都将违反…

STP生成树基础,一个难点

技术背景:二层交换机网络的冗余性与环路 二层环路带来的问题(三层环路,ttl跳数达到一定次数会丢弃) 典型问题 1:广播风暴不停的在接口内复制转发广播 2:MAC地址漂移 sw1接口1与2,对sw3的接收ma…

CentOS7.x下部署oracle19c环境

CentOS7.x下部署oracle19c环境 文章目录CentOS7.x下部署oracle19c环境前言一、环境准备工作1.1、虚拟机搭建及关闭防火墙和selinux1.2、RPM包预安装1.3、检查安装情况用户组已创建完成1.4、创建目录1.5、修改/etc/hosts 文件1.6、设置oracle口令1.7、设置环境变量1.8、将oracle…

[LeetCode周赛复盘] 第 327 场周赛20230108

[LeetCode周赛复盘] 第 327 场周赛20230108 一、本周周赛总结二、 [Easy] 6283. 正整数和负整数的最大计数1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6285. 执行 K 次操作后的最大分数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6284. 使字符串总不同字符的数目相等…

10、ThingsBoard-租户

1、租户的概念 目前,有很多的系统都是以多租户的形式来设计的,目的是为了实现数据隔离,thingsboard中也是如此。但是thingsboard把租户在抽象成了一种实体,后续还会讲解其它的实体;用官方的语言解释租户:您可以将租户视为一个单独的业务实体:它是拥有或生产设备和资产的…

Java中ThreadLocal说明

1、ThreadLocal是什么 ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。 这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。 ——《Java并发编程艺术》如…

GrapeCity Documents Data Viewer[GcDataViewer] Crack

GrapeCity Documents Data Viewer,简称GcDataViewer,是一个统一的基于 JavaScript 的客户端查看器,旨在加载和预览与数据相关的所有流行文档格式。目前,查看器支持 XLSX、SSJSON 和 CSV 格式。除了仅加载数据文件外,数…

卷径计算(厚度累计法/膜厚积分法)

卷径计算的截面积法请参看下面的文章链接: 卷径计算详解(通过卷绕的膜长和膜厚进行计算)_RXXW_Dor的博客-CSDN博客有关卷绕+张力控制可以参看专栏的系列文章,文章链接如下:变频器简单张力控制(线缆收放卷应用)_RXXW_Dor的博客-CSDN博客_收放卷应用张力控制的开闭环算法,…

“/ArcGIS/services”应用程序中的服务器错误

本文迁移自本人网易博客,写于2013年1月5日No Content说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: No Content源错误…

第三章 图形初阶

我曾经多次向客户展示以数字和文字表示的、精心整理的统计分析结果,得到的只是客户呆滞的眼神,尴尬得房间里只能听到鸟语虫鸣。然而,当我使用图形向相同的用户展示相同的信息时,他们往往会兴致盎然,甚至豁然开朗。我经…

jQuery控制元素的显示与隐藏(三种方式对比)

hide和show hide:是$(“.类名”)或$(“#标签名”)或$(“标签名”).hide() show:是$(“.类名”)或$(“#标签名”)或$(“标签名”).show() 元素直接消失,没有任何动态效果 slideToggle 通过控制元素的高度来显示与隐藏,因此会有动画效果。slideToggle如果…

RHCE ansible 作业

1、jinjia2模板 hosts.j2,内容如下(主机名和ip地址使用变量): Welcome to 主机名 !(比如servera.lab.example.com) My ip is ip地址. 要求在所有受管主机生成文件:/etc/welcome.txt。 2、角色部分 根据下列…

【Java】生产者消费者模型

【Java】生产者消费者模型 0x1 前言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者…

设计模式的简单整理

单例的几种方式。 public class Single{private static volatile Single single;private single(){}public static Single getSingle(){if(single null){synchronized(Single.class){if(single null){single new Single();}}}return single;} } 在dcl中volatile为了防止指…