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

Vim教程

目录

vim 介绍

常用的四种模式

首先先学会如何正确进入和退出vim:

normal模式

insert模式:

command模式:

v-block模式:

vim异常退出

vim配置


vim 介绍

Vim是一款高度可定制的文本编辑器,它的前身是Vi,但又在Vi的基础上做了很多改进和增加。Vim是自由软件,在类Unix系统中常被使用。虽然Vim需要一定的学习才能掌握,但其掌握之后可以非常高效地进行文本编辑。

Vim以类似于在普通编辑器中移动光标的方式进行文本编辑,这种编辑方式被称为“命令模式”。除此之外,Vim还提供了“插入模式”和“底行模式”,可以让你在插入文本或在执行命令时更方便地操作。

Vim的另一个特点是其丰富的快捷键和命令,这使得用户可以用极少的按键来完成复杂的编辑操作。例如,用户可以通过在底行模式下输入简单的命令,如“w”,来保存当前编辑的文件。

Vim的学习曲线虽然较为陡峭,但其强大的定制性可以满足用户各种各样的需求。例如,用户可以根据自己的喜好和习惯来设置Vim的各种选项和映射,不仅可以在终端运行,也可以运行于x window、 mac os、windows,Linux CentOS中安装vim:sudo yum install vim

常用的四种模式

Vim模式有很多种,但是最常用的是四种模式:正常模式(normal)、底行模式(command)、编辑模式(insert)、视觉模式(v-block).

首先先学会如何正确进入和退出vim:

vim 文件名 ------ 文件名可以是当前路径下存在的或者是携带路径的文件名,也可以是不存在的文件名(进入编辑后保存则会保存在当前文件夹)
打开文件,需要文件权限,如果没有r权限,则会打开失败,显示空的vim界面
如果没有r权限,打开文件后会有一个小锁的标志,表示只读在这里插入图片描述


正常打开vim后,默认是normal模式,如果要退出,需要转换到command模式(shift + ;)然后输入q,回车 或 q!,回车,强制退出;如需保存并退出,可以输入wq / wq! ,回车。
在这里插入图片描述

normal模式

进入vim的默认模式,其他模式都可以通过Esc键退回到normal模式

通过h、j、k、L(左、下、上、右)或方向键移动光标
在这里插入图片描述
逐个移动太慢的话,可以快速移动光标

  • gg:定位到文本的第一行

  • (n) + G: 定位到文本的最后一行 或 第n行

  • ^:定位到所在行文本的结尾

  • $:定位到所在行文本的开始
    属于正则表达

  • 在这里插入图片描述

  • 0:定位到所在行的最左侧

  • w:以单词为单位,向移动光标,支持跨行

  • b:以单词为单位,向移动光标,支持跨行

移动光标后,如果只是简单的文本操作,不必转到编辑模式:
复制粘贴
(n) + dd:剪切当前行开始的n行文本(如果剪切后不管了,不就是删除呗)
(n) + yy:复制当前行开始的n行文本
(n) + p:粘贴剪切板内容n次
文本修改:
~:文本大小写转化
(n) + r:覆盖光标开始的n个字符,行内操作
(n) + x:删除光标开始的n个字符,行内操作
其他操作:
#:查找同名单词,n同单词跳转
ctrl + r:撤销
u:撤销
以上两个撤销可以互相撤销对方的撤销

insert模式:

文本编辑的主要模式,通过在normal模式中键a/i/o进入
a/i/o

  • a进入:光标向后一格并进入
  • i进入:光标不动并进入
  • o进入:在光标所在行下重新开一行并移动光标到新行进入
    insert模式下,只能通过方向键移动光标或者返回normal模式移动光标

command模式:

  • set nu:显示行号

  • -set nonu:不显示行号

  • /关键字:查找关键字,键入n切换搜索结果

  • !+ Linux中的指令:可以在vim中执行指令并看到返回结果

在这里插入图片描述

  • vs + 其他文件名:同框显示文件,通过ctrl + ww切换文件的光标

在这里插入图片描述

v-block模式:

主要是用该模式来做批量化操作,如多行注释等
通过在normal模式下ctrl + v 进入

多行注释
在这里插入图片描述
在这里插入图片描述

vim异常退出

如果在vim打开文件的过程中,突然断开连接/关机,导致vim异常退出,下次再用vim打开文件的时候,会有提示,ll -a,删除备份文件即可

vim配置

在这里插入图片描述
自动化部署配置:VimForCpp
链接:https://gitee.com/HGtz2222/VimForCpp?_from=gitee_search
目前只支持CentOS 7
在这里插入图片描述
在这里插入图片描述
直接复制这串脚本到linux中去执行即可

相关文章:

Vim教程

目录 vim 介绍 常用的四种模式 首先先学会如何正确进入和退出vim: normal模式 insert模式: command模式: v-block模式: vim异常退出 vim配置 vim 介绍 Vim是一款高度可定制的文本编辑器,它的前身是Vi&#xf…...

selenium查找网页如何处理网站资源一直加载非常卡或者失败的情况

selenium查找网页如何处理网站资源一直加载失败的情况 selenium获取一个网页,某个网页的资源卡了很久还没有加载成功,如何放弃这个卡的数据,继续往下走 有2钟方式。通常可以采用下面的方式一来处理这种情况 方式一、WebDriverWait 这种方式…...

并发工具类库使用的常见问题

一、ThreadLocal在多线程环境中没有清理 由于ThreadLocal是和线程绑定的,如果线程被复用了,也即使用了线程池,那么ThreadLocal中的值是可能被复用的,这个特性如果是开发者没有预料到的,那么会产生很大的问题。例如&am…...

GD32F10X ----RTC

1. RTC的简介 STM32 的实时时钟(RTC)是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置…...

使用UiPath和AA构建的解决方案 1. 机器人过程自动化入门

你好!在这本系列,我们将指导您完成一些真实世界的机器人过程自动化(RPA)项目。感谢您的加入。当你完成本系列时,你将具备使用UiPath和Automation Anywhere在最低指导下进行简单到中等复杂度RPA项目的知识、技术和心态。 RPA是一项令人兴奋的新技术,被视为使用新的先进技…...

rust字面量

字面量就是值。值最终必须编码成二进制存储在某块内存上。 变量与字面量的关系就像杯子和水的关系。 字面量是有类型的。字面量类型有:布尔、数字、文本、字节 一、布尔 类型是bool true false 二、数字 通过后缀表示类型 通过前缀表示进制 通过 “_” 来分割数…...

Unix Network Programming Episode 79

‘gai_strerror’ Function The nonzero error return values from getaddrinfo have the names and meanings shown in Figure 11.7. The function gai_strerror takes one of these values as an argument and returns a pointer to the corresponding error string. #incl…...

Cesium展示——wkt 数据绘制

文章目录 需求分析1. 第一步,数据类型转换2. 第二步,数据渲染需求 WKT 是什么:WKT 简介 在这里,我选择将 Cesium 中将wkt数据转化为geoJSON格式后渲染至地球上 分析 1. 第一步,数据类型转换 npm install terraformer-wkt-parser --savelet wkts =...

打造完美家庭空间,让生活更加舒适

在现代繁忙的都市生活中,家是人们温暖而舒适的避风港。而如何打造一个恰到好处的家庭空间,成为了许多人心中的追求。今天,就让我们来探索一些空间布局方案,为您的家庭营造一个完美融合功能与美感的舒适空间。 🏠&…...

解决loadDep:omelette: sill install loadAllDepsIntoIdealTree

报错信息如下: 解决方案: 1、设置为淘宝的镜像源 npm config set registry https://registry.npm.taobao.org 2、 命令检验是否成功 npm config get registry 3、继续运行npm install即可 npm install 运行效果:...

【深蓝学院】手写VIO第2章--IMU传感器--作业

这次作业坑很多,作业说明的不清楚,摸索了很长时间才将此次作业完成,在这里进行记录。 1. T1 1.1 题干 1.2 解答 1.2.1 法1,ros related方法 不知道为什么我的launch不了,在imu_utils目录下面建立build后&#xff0…...

Android多线程学习:线程

一、概念 进程:系统资源分配的基本单位,进程之间相互独立,不能直接访问其他进程的地址空间。 线程:CPU调度的基本单位,线程之间共享所在进程的资源,包括共享内存,公有数据,全局变量…...

canvas 入门

canvas 入门 canvas是干什么的&#xff1f;canvas 绘制直线canvas画虚线canvas 绘制三角形canvas 绘制正方形canvas 绘制圆形、圆弧与椭圆canvas绘制文本canvas绘制图片 canvas是干什么的&#xff1f; <canvas> 是HTML5中的标签&#xff0c;它是一个容器&#xff0c;可以…...

建议收藏!混迹职场多年总结出的8大技巧!

1. 不要吃“哑巴”亏&#xff1a;不管在什么企业&#xff0c;一定要“会说话”&#xff0c;敢于表达自己&#xff0c;但是又兼顾身边人的感受&#xff0c;考虑好自己的言行将会带来的后果。良好的沟通技巧对于在职场中建立良好的人际关系和解决问题至关重要。学会倾听、表达和理…...

OpenCV4(C++)—— 视频和摄像头的加载、显示与保存

文章目录 一、加载与显示二、保存 一、加载与显示 视频或摄像头的加载是使用 cv::VideoCapture 类。&#xff08;这个类和 ifstream 类比较相似&#xff0c;视频或摄像头的加载和文本文件操作是大致相同。主要步骤&#xff1a;&#xff08;1&#xff09;加载&#xff08;打开&a…...

excel功能区(ribbonx)编程笔记6-box的使用

box元素用来在组里指定的控件周围放置一个可视的框,其主要目的是将控件作为一个单元组合在一起。 通常情况下,分配到组中的每个控件都被放置在先前的控件下面直到该列被填满,然后下一个控件被放置在其右侧列的顶行。然而,通过在框里面组合命令,可以将几个控件视作一个整体…...

oralce配置访问白名单的方法

目录 配置sqlnet.ora文件 重新加载使配置生效 注意事项 Oracle数据库安全性提升&#xff1a;IP白名单的配置方法 随着互联网的发展&#xff0c;数据库安全问题也越来越严重。Oracle是目前使用较为广泛的一款数据库管理系统&#xff0c;而IP白名单作为提升数据库安全性的有效…...

ToBeWritten之让响应团队参与并做好沟通

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…...

ffmpeg ts 关于av_seek_frame

1 ffmpeg命令行 一般对视频文件的裁剪 我们通过一行 ffmpeg命令行即可实现&#xff0c;比如 ffmpeg -ss 0.5 - t 3 - i a.mp4 vcodec copy b.mp4 其中 -ss 放置较前 开启精准seek定位 对于mp4而言 seek将从moov中相关索引表查找 0.5s时刻附近最近的关键帧 &#xff08;此描述…...

【C++】set map 的底层封装

在了解底层封装之前除了对set和map的使用情况要有一定了解&#xff0c;还需要先学习一下二叉搜索树&#xff0c;AVL树&#xff0c;红黑树这些数据结构。 【C】二叉搜索树 【C】AVL树 & 红黑树 RBTree.h enum Colour {RED,BLACK };template<class T> class RBTreeNo…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...