Linux编辑器vim

目录

一、vim的几种模式

1、命令模式

2、编辑/插入模式

3、底行模式

①增加行号

②分屏操作

③不退出vim执行命令

4、替换模式

二、vim的常见命令

1、yy命令

2、p命令

3、dd命令

4、u命令

5、Ctrl + r命令

6、shirt+g命令

7、gg命令

8、shirt+6命令

9、shirt+4命令

10、w,b命令

11、h,j,k,l命令

12、shirt + ~

13、r命令

14、x或shirt + x命令

三、关于vim的配置


vim是一款多模式的编辑器

vim是编辑器,所以只负责写代码

vim要打开文件,直接在vim后面跟上文件名即可


vim也可以创建文件

本身不存在temp.c,但是vim temp.c后,保存并退出后(底行模式下输入wq)就存在这个temp.c文件了


一、vim的几种模式

1、命令模式

我们进入vim,默认打开的模式就是命令模式

2、编辑/插入模式

在命令模式下输入i,就进入了编辑/插入模式

vim编辑器的左下角出现insert的标志,就说明在编辑/插入模式中

进入编辑/插入模式后,正常编写代码即可,如:

如果想从编辑/插入模式回退到命令模式,按键盘的ESC按键(左上角按键)即可

3、底行模式

在命令模式下进行shirt + :的操作,进入到底行模式

vim编辑器的左下角出现一个:的标志,就说明此时在底行模式中

然后输入wq即可保存并退出vim

w指保存,q指退出,wq就是保存且退出

如果有其他情况无法退出或保存,w!或q!表示强制保存或强制退出,!就是强制的意思

而如果想从底行模式回退到命令模式,按键盘的ESC按键(左上角按键)即可


①增加行号

在底行模式下可以增加行号

输入set nu

取消行号输入set nonu

 


②分屏操作

底行模式下输入:vs + 文件名

Ctrl + w + w 光标在左右屏之间切换,也就是按住ctrl后连续按两次w

w:写入(w!强制写入)

q:退出(q!强制退出)

例如:当前输入了vim temp.c

在底行模式下输入vs mytest.c

这时就会进行分屏操作,一边是mytest.c,一边是temp.c

此时光标在哪个文件中,底行模式输入的指令就是对哪个文件执行的

如图就是光标在mytest.c文件中,所以输入的指令都是在mytest.c文件中执行


③不退出vim执行命令

底行模式下输入:! + cmd(对应的指令)

输入!ls -al就是在不退出vim的情况下,显示当前路径下的文件

然后按回车键即可返回vim页面

在不退出vim的情况下进行指令的操作还是有些好处的,比如:

可以在vim编辑器中就进行gcc,检验是否出错

如果编写代码时忘记接口功能,可以使用man在不退出的情况下进行查看


总结一下:命令模式可以通过操作切换到编辑/插入模式或底行模式编辑/插入模式或底行模式按ESC按键即可回退到命令模式中但是编辑/插入模式和底行模式不能直接进行切换,必须要回退到命令模式后再切换


4、替换模式

在命令模式下进行shirt + r的操作,进入到替换模式

vim编辑器的左下角出现一个replace的标志,就说明此时在替换模式中

这时在光标所在位置输入代码,会直接替换掉原位置的代码,不会受原位置代码的影响

同样如果想从替换模式回退到命令模式,按键盘的ESC按键(左上角按键)即可


二、vim的常见命令

注意:都是在命令模式下的常见命令

1、yy命令

将当前光标所在的行复制

也支持nyy(n代表具体数字)


2、p命令

将复制行进行粘贴

也支持np(n代表具体数字)


例如:

当前在光标所在行,命令模式下输入yy,再输入p,就变为:

而nyy与np也和这个操作一样,例如原本是这三行内容:

我们输入3yy,输入2p

3yy就是复制这三行内容,2p就是复制两次这三行内容


3、dd命令

将当前光标所在行进行剪切(删除)

这里也支持ndd(n代表具体数字)

只进行dd操作,就是删除作用,如果dd和p结合使用,就有了剪切的作用


 

4、u命令

u就是撤销刚刚的操作

比如刚刚3yy+2p后,按一下u就变为下图所示的情况:


5、Ctrl + r命令

Ctrl+r就是撤销u的操作

也就是刚刚u操作后后悔了,所以撤销刚刚做的撤销操作

比如刚刚u操作撤销了3yy+2p的操作,但是我后悔这个撤销操作,想恢复这个撤销操作前的代码,这时按Ctrl+r即可恢复,即:


6、shirt+g命令

光标定位到文件的结尾

也支持 n + shirt + g,表示光标定位到第n行

比如想让光标出现在第50行

那就在命令模式下先输入50,在shirt+g即可


7、gg命令

光标直接定位到文件的最开始

第5条和第6条命令是光标的上下移动


8、shirt+6命令

将光标定位到当前行的最开始


9、shirt+4命令

将光标定位到当前行的最结尾


10、w,b命令

以单词为单位进行光标的前后移动

第7、8、9条命令是光标的左右移动


11、h,j,k,l命令

hjkl这四个键就是对应的左下上右四个方向操作

h:左;j:下;k:上;l:右

因为老式键盘就是这四个键表示的上下左右,所以延续至今


12、shirt + ~

光标所在位置挨个进行大小写切换

即大写变为小写,小写变为大写

原本是这样:

shirt+~后,变为:


13、r命令

替换光标所在的字符

也支持nr(n代表具体数字)

nr就是表示替换从光标所在位置开始的n个字符


14、x或shirt + x命令

x是删除光标所在位置的字符,shirt + x是删除光标之前位置的字符

也支持nx(n代表具体数字)

nx就是表示删除从光标所在位置开始的n个字符


三、关于vim的配置

在我们初步使用vim时会发现非常难用,因为使用vim时不会自动缩进,不会自动填补符号或括号,不会根据输入的头文件进行搜索已有的头文件之类的工作,这时我们就需要自己配置自己vim

在自己的.vimre文件中,从网上搜索vim 配置,找到自己所需要的功能,vim .vimrc后粘贴进去即可

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(其他) 剑指 Offer 61. 扑克牌中的顺子 ——【Leetcode每日一题】

❓剑指 Offer 61. 扑克牌中的顺子 难度:简单 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大…

Qt应用开发(基础篇)——组合框容器 QGroupBox

一、前言 QGroupBox继承于QWidget,是一个带有标题的组合框架容器控件。 QGroupBox组合框容器自带一个顶部标题,一个面板。面板内部展示各种各样的部件,标题用来解释这些部件为什么集合在一起,并且支持键盘快捷方式切换部件焦点。比…

Android逆向——脱壳解析

“壳”是一种对程序进行加密的程序,“壳”形象地表现了这个功能。我们可以把被加壳的程序当成食物,而加壳程序就是在外面加上一层坚硬的外壳,防止别人去窃取其中的程序。加壳后的程序依然可以被直接运行。在程序运行时壳的代码先运行&#xf…

【C++】怎么接受未知数量的参数?

2023年9月8日,周五下午 目录 第一种方式:可变参数函数(Variadic Function)头文件使用方法详解va_start宏详解va_arg宏示例程序 第一种方式:可变参数函数(Variadic Function) 可变参数函数(Variadic Function)是一种可以接受不定数量参数的函…

静态代理和动态代理笔记

总体分为: 1.静态代理: 代理类和被代理类需要实现同一个接口.在代理类中初始化被代理类对象.在代理类的方法中调 用被代理类的方法.可以选择性的在该方法执行前后增加功能或者控制访问 2.动态代理: 在程序执行过程中,实用JDK的反射机制,创建代理对象,并动态的指定要…

STM32-HAL库07-软件SPI驱动0.96寸OLED

STM32-HAL库07-软件SPI驱动0.96寸OLED 一、所用材料: STM32VGT6自制控制板 STM32CUBEMX(HAL库软件) MDK5 二、所学内容: 通过HAL库配置四个GPIO输出口,对其进行软件模拟SPI发送规则,进而驱动OLED进行数…

C#__文件操作之FileInfo和DirectoryInfo

// 代码(含注释) class Program{static void Main(string[] args){// FileInfo 文件操作FileInfo myFile new FileInfo("D:\C#编程\文件操作之FileInfo和DirectoryInfo\TextFile1.txt");// 实例方法// myFile.CopyTo("D:\C#编程\文件操作…

企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部供…

OpenCV(三十六):霍夫直线检测

1.检测直线的霍夫变换原理 2.检测直线函数HoughLines() 检测直线流程: Step1:将参数空间的坐标轴离散化。 Step2:将图像中每个非0像素通过映射关系求取在参数空间通过的方格 Step3:统计参数空间内每个方格出现的次数,选取次数大于某一值的方格作为表示直线的方格…

Prompt Tuning训练过程

目录 0. 入门 0.1. NLP发展的四个阶段: Prompt工程如此强大,我们还需要模型训练吗? - 知乎 Prompt learning系列之prompt engineering(二) 离散型prompt自动构建 Prompt learning系列之训练策略篇 - 知乎 ptuning v2 的 chatglm垂直领域训练记…

如何剪辑视频?方法来了,零基础也能学会!

“视频怎么剪辑呀,刚刚用录屏软件录制了一段视频,但是录进去了很多不需要的画面,需要进行修改,可是不知道视频怎么剪辑,有没有人知道剪辑视频的方法,推荐一下。” 剪辑视频是一门重要的技能,无…

DAY03_瑞吉外卖——公共字段自动填充新增分类分类信息分页查询删除分类修改分类

目录 1. 公共字段自动填充1.1 问题分析1.2 基本功能实现1.2.1 思路分析1.2.2 代码实现1.2.3 功能测试 1.3 功能完善1.3.1 思路分析1.3.2 ThreadLocal1.3.3 操作步骤1.3.4 代码实现1.3.5 功能测试 2. 新增分类2.1 需求分析2.2 数据模型2.3 前端页面分析2.4 代码实现2.5 功能测试…

为什么5G 要分离 CU 和DU?(4G分离RRU 和BBU)

在 Blog 一文中,5G--BBU RRU 如何演化到 CU DU?_5g rru_qq_38480311的博客-CSDN博客 解释了4G的RRU BBU 以及 5G CU DU AAU,主要是讲了它们分别是什么。但是没有讲清楚 为什么,此篇主要回答why。 4G 为什么分离基站为 RRU 和 BBU…

三维模型3DTile格式轻量化压缩模型变形浅析

三维模型3DTile格式轻量化压缩模型变形浅析 在对三维模型进行轻量化压缩处理的过程中,常常会出现模型变形的现象。这种变形现象多数源于模型压缩过程中信息丢失或误差累积等因素。以下将对此现象进行详细分析。 首先,我们需要了解三维模型轻量化压缩的…

无需编程经验,也能制作租车预约微信小程序,快速上手

现在,制作租车预约微信小程序不再需要编程经验,只需几个简单的步骤,您就可以拥有自己的租车预约微信小程序。在本文中,我们将介绍如何利用乔拓云网后台来制作租车预约微信小程序,并实现您所需的功能。 首先&#xff0c…

postgresql|数据库|数据迁移神器ora2pg的安装部署和初步使用

前言: 有的时候有需求需要迁移Oracle数据库的数据到postgresql,那么,其实可供选择的工具是比较多的,但从迁移效率,准确度这些角度来选择的话,无疑还是GitHub上的开源免费工具ora2pg比较合适的。 ora2pg主…

Python之线程(二)

一、线程同步和互斥锁 同一个资源,多人想用?排队啊! 现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题。 比如:教室里,只有一台电脑,多个人都想使用。天然的解决办法就是,在电脑旁边,大家排队。前一人使用完后,后一人再使用。再比如,上厕所排队。 二、线…

SpringBoot 基于 MongoTemplate 的工具类

一、 什么是MongoDB MongoDB基于分布式文件存储的数据库。由C语言编写。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。 他支持的数据结构非常松散,是类似json的bjson格式,因此…

Linux 下静态库与动态库的制作与使用

Linux 下静态库与动态库的制作与使用 文章目录 Linux 下静态库与动态库的制作与使用示例代码:静态库静态库制作静态库使用 动态库动态库制作动态库使用 示例代码: test.c test.h main.c 静态库 静态库制作 以示例代码为例,先执行下面…

使用Python编写高效程序

在当今竞争激烈的互联网时代,搜索引擎优化(SEO)成为了各类网站提升曝光度和流量的关键策略。而要在SEO领域中脱颖而出,掌握高效的网络抓取程序编写技巧是至关重要的。本文将分享一些宝贵的知识和技巧,帮助你使用Python…