【Linux】编辑器——vim的使用

news2024/11/24 11:51:52
环境:centos7.6,腾讯云服务器
Linux文章都放在了专栏:【 Linux 】欢迎支持订阅 🌹

vim的基本概念

vim是什么?

vim是一款多模式编辑器,是vi的升级版本,在兼容vi指令的同时,还带有一些新的特性在里面。通过本章学习,我们以后便可以在Linux下用vim来进行编写我们的源代码了。

vim的安装与基本使用

在一些云服务器里,大多的vim都是已经安装好后的了,当然,如果自己的Linux中并没有安装vim

编辑器,我们以root身份输入命令:yum install -y vim即可。

在安装完成后,我们输入:vim 源文件(如果源文件不存在,则会自动创建)命令,便可以打开vim编辑器用来编写,如下:

当然,我们这里的vim是没有配置好的,所以看起来很简陋,在后面会进行vim的配置。接下来我们要知道vim的几种基本模式。

vim的基本模式

上面我们介绍了,vim是一款多模式的编辑器,这里我们主要知道以下几个就足以够用了:

命令模式vim默认打开就是命令模式,该模式是vim的最根本模式,几种模式的切换都是从命令模式进行的。(其他模式进入命令模式的方法:无脑按Esc键即可)。

插入模式我们只有进入插入模式,才能对文件进行编辑,否则是无法进行编辑的。

进入插入模式的几种方法:

  1. 通过键盘Insert键进行切换

  1. 命令模式下,i键进行切换,切换后光标处在原位置(最常用)

  1. 在命令模式下,a键进行切换,切换后光标会后退一格

  1. 在命令模式下,o键进行切换,切换后光标会新起一行

底行模式:一种比较特殊的模式,在命令模式下按住Shift:即可进入底行模式,在底行模式下也有着对应的一些命令,包括vim的退出操作,也是在底行模式下进行,进入底行模式的标志是光标处在最底部,并且前面有一个冒号。如下:

替换模式以及视图模式我会放在后面的内容中讲解,也都是从底行模式进行切换的。

vim指令操作(命令模式

行的复制与粘贴

yy/nyy :复制光标所在的一行内容/复制光标开始,往下n行内容,n为具体数字
p/npp :从光标所在的下一行进行粘贴1次/n次,n为具体数字

行的剪切与删除

dd/ndd :剪切光标所在的行/剪切光标行在内的往下n行,n为具体数字(只进行剪切,不进行粘贴,就相当于删除操作)

撤销操作

u :撤销上一次操作
ctrl r :撤销刚刚的撤销操作

光标的定位与移动

shift g (等价于 G ):将光标定位到文档末尾
n shift g nG ):将光标定位到第n行
gg :光标回到最开始
shift 4 (等价于 $ ):光标定位到光标所在行的末尾
shift 6 (等价于 ^ ):光标定位到光标所在行的最开始
w/nw :向后移动光标(以一个/n个单词为单位)
b/nb :向前移动光标(以一个/n个单词为单位)
光标的移动:可以通过键盘的上下左右键,但其实在以往都是通过hjkl四个键来移动
h :往左移动光标
j :往下移动光标
k :往上移动光标
l :往右移动光标

字符的替换与删除

shift ~/nshift ~ :对一个/n个字母进行大小写切换(按住不放,会一直往后进行切换)
r/nr :替换光标所在的一个/n个字符(输入r后再输入想要替换的字符,光标所在的字符就会被替换了)注意:该替换只能把n个字符同时替换成同一个。
如果想要进行多个字符替换,并且替换成的字符也不同,此时输入 shift r (即 R ),进入替换模式,此时输入的字符会实时替换光标所在的字符,Esc退出替换模式
x/nx :删除光标所在的一个/往右(往后)数n个字符
X/nX :删除光标所在的一个/往左数(往前)n个字符

vim指令操作(底行模式

首先在命令模式下按Shift :进入底行模式。

行号的列出

set nu:在文件的每一行显示行号

查找字符

/关键字 :查找关键字,找到后会使关键字高亮显示,此时按 n ,可以使光标往后移动到关键字处。
?关键字 :与上面的作用相同,只不过这个按 n 键是从后往前移动光标

vim的退出与保存

q :退出vim
w :保存文件内容
wq :保存文件内容,并退出vim
!q :强制退出vim
!wq :强制保存并退出vim

批量化注释以及注释删除

批量化注释

我们首先要先把光标放在我们想要注释的行的最开始(方便进行批量化注释),然后在 命令模式 下按下 ctrl v ,进入VISUAL BLOCK 模式,然后此时我们通过 上下 键(或者 j k 键)来控制光标, 此时光标所选中的行,就是我们即将注释掉的行 ,然后按住 shift i (即 I ),接着输入注释符号,比如 // ,然后按 Esc 键,即可实现批量化注释

删除注释

命令模式 下按住 ctrl v ,进入VISUAL BLOCK ,然后通过光标,来选中注释符号,选完后按 d 键,即可实现注释的批量化删除。

vim的配置

关于vim的配置,有两种方式可以实现,一种是自己来配置,另一种就比较简单省事,直接用别人的来实现自动配置,这里都介绍一下。

自己配置vim

我们先在自己用户下输入 cd ~ ,进入个人用户的工作目录,然后输入 vim .vimrc ,接着我们就可以在里面输入一些具体的命令(具体可以自己在网络上搜索),输入完后进行保存退出,然后此时打开vim,便是按照自己的想法配置好后的了。这里我简单的做个演示

可以看到刚开始vim里啥都没有,但是我在.vimrc文档里输入set nu后,再次打开vim,此时vim已经被我们配置好了行号。其余更多的自己感兴趣可以试试

自动配置vim

我们可以直接用大神配置好的vim,输入以下命令:curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

然后按照提示输入root密码,然后等待下载,下载完毕后就会得到一个已经配置后的精美vim了

(vim自动配置原帖在这里:->点击传送,注意此自动配置仅适用centos7.6环境)


end

生活原本沉闷,但跑起来就会有风🌹

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

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

相关文章

Linux主机下连接远程postgresql数据库、容器版postgresql数据库

背景 简单啰嗦一下背景,想看解决方案的,直接跳过本章节。 最近在预研postgresql的功能,其中有个场景就是需要在系统中ssh到postgresql集群上执行psql命令。但是我只有容器版的postgresql,并不能直接ssh到容器中。而ssh到我自己的…

Spring5 框架新功能(Webflux)

目录 1、SpringWebflux 介绍 2、响应式编程(Java 实现) 3、响应式编程(Reactor 实现) 1、SpringWebflux 介绍 (1)SpringWebflux 是 Spring5 添加新的模块,用于 web 开发的,功能和…

JDBC用PrepareStatement解决SQL注入

什么是sql注入?SQL注入(SQL injection)是因为应用程序在执行SQL语句的时候没有正确的处理用户输入字符串,将用户输入的恶意字符串拼接到了SQL语句中执行,从而导致了SQL注入。例如:当你的用户名为 qwert or 11;# 密码为123&#xf…

springmvc拦截器及源码分析

springmvc拦截器是我们项目开发中用到的一个功能,常常用于对Handler进行预处理和后处理。本案例来演示一个较简单的springmvc拦截器的使用,并通过分析源码来探究拦截器的执行顺序是如何控制的。1、springmvc拦截器使用1.1 项目初始搭建1.1.1 创建一个mav…

如何用ffmpeg截取视频片段截取时间不准确的坑

之前在工作中,有遇到需要程序化截取视频片段的场景,这里使用ffmpeg命令行就可以很容易实现,这里也记录下我们使用过程中遇到的坑,希望对大家也有所帮助。    举个例子,当我们要截取视频文件中input.mp4的第15秒到第9…

windows+python+bleak+BLE低功耗蓝牙通讯连接

前言 1.为什么选bleak   参考这篇知乎:https://zhuanlan.zhihu.com/p/577687336   windows端使用python连接常规的BLE设备(蓝牙4.0),仅考虑bleak模块(排除pybluez、pybluez2、pygatt)。 2.本文主要参…

【c语言】对结构体数组按照某项规则进行排序

这是基于qsort()函数进行的简单排序。(附带其他类型的数组使用qsort()进行的排序) 目录 一、qsort()函数 二、compare()函数 1.结构体数组 1)升序实现 2)降序实现 2.整型数组 为什么不直接返回 a>b(a&#x…

CentOS 下PostgreSQL安装、简单配置及数据迁移(存储目录迁移)

目录 数据库安装 数据库初始化 配置修改 1、修改监听范围 2、修改数据库用户密码 3、开启远程连接 附件内容:PostgreSQL数据迁移 方式一,从新初始化数据库在导出导入 方式二:存储文件物理迁移 数据库安装 安装包下载请参考PG官网(根据…

OAuth2介绍(一)

目录 1. 什么是OAuth2.0 2. OAuth2中的角色 3. 认证流程 4. 生活中的Oauth2思维 5. 令牌的特点 6. OAuth2授权方式 6.1 授权码 6.2 隐藏方式 6.3 密码方式 6.4 凭证方式 7. 流程 7.1 资源所有者 7.2 客户 7.3 客户 7.4 认证服务器 7.5 客户 7.6 资源服务器 1.…

【高并发】- 分布式事务都不会?

前言 本章主要对分布式事务进行梳理和讲解。可能在业务设计过程中,各微服务都采用了独立数据库,所以,这些微服务之间的数据共享有了更高的要求:要解决数据一致性的问题。 1. 数据一致性 数据一致性是指:数据被多次操作…

【自然语言处理】主题建模评估:连贯性分数(Coherence Score)

主题建模评估:连贯性分数(Coherence Score)1.主题连贯性分数 主题连贯性分数(Coherence Score)是一种客观的衡量标准,它基于语言学的分布假设:具有相似含义的词往往出现在相似的上下文中。 如果…

如何使用ArcGIS计算道路中心线

1.概述 在制图等应用的时候,有时需要将双线的面状道路提取中心线,转换为线状的道路。 由于道路多为不规则的图形,提取难度比较高,加上能提取中心线的软件有限,更加增加了提取的难度。 ArcGIS虽然提供了提取中心线的…

C语言文件操作(二)

文件的随机读写fseek函数#include <stdio.h>int main() {FILE* pf fopen("test.txt", "r");if (NULL pf){perror("fopen");return 1;}char ch fgetc(pf);printf("%c\n", ch);fseek(pf, 2, SEEK_SET);ch fgetc(pf);printf(&q…

Mysql第四期 运算符规则计算】

文章目录写在前面1.算数运算符2.比较运算符3.逻辑运算符4.位运算符5.运算符的优先级拓展&#xff1a;使用正则表达式查询写在前面 基本的运算符号在计算机编程领域都是相通的&#xff0c;会有自己的一些特定符号语言&#xff0c;就像是各地的普通话一样&#xff0c;尽管语音描…

C语言小题,又3个学生的信息,放在结构体数组中,要求输出全部学生的信息。(指向结构体数组的指针)

前言&#xff1a; 此篇是针对 指向结构体数组的指针 方面的练习。 解题思路&#xff1a; 用指向结构体变量的指针来处理&#xff1a; &#xff08;1&#xff09;声明结构体类型 struct Student &#xff0c;并定义结构体数组&#xff0c;同时使之初始化&#xff1b; &#xff…

SpringBoot项目如何引入外部jar及将外部jar打包到项目发布war包

1 Springboot项目如何打成war包 1.1 环境准备 打包成war整体思路就是排查web容器依赖&#xff0c;添加maven-war-plugin插件。接下来就使用Tomcat容器给大家做个示范&#xff0c;亲测有效。 在讲解下说明一下环境&#xff0c;避免因为环境的问题&#xff0c;给大家带来不必要…

设计师都在用的5个设计素材库

作为一名设计师推荐几个设计素材网站&#xff0c;建议收藏起来&#xff01; 1、菜鸟图库 https://www.sucai999.com/?vNTYxMjky 站内平面海报、UI设计、电商淘宝、高清图片、样机模板等素材非常齐全。还有在线抠图、CDR版本转换功能&#xff0c;能有效的为设计师节省找素材时…

嵌入式Linux-线程属性

1. 线程的属性 1.1 概念 如前所述&#xff0c;调用 pthread_create()创建线程&#xff0c;可对新建线程的各种属性进行设置。在 Linux 下&#xff0c;使用pthread_attr_t 数据类型定义线程的所有属性。 调用 pthread_create()创建线程时&#xff0c;参数 attr 设置为 NULL&a…

Three.js 初阶入门篇(一)

系列文章目录 文章目录系列文章目录学习背景一、什么是3D&#xff08;直接看作品吧&#xff09;&#xff1f;汽车作品欣赏鼠标可以随意转动角度打开机盖&#xff08;交互效果&#xff09;尾部3D链接&#x1f517;如下&#xff08;链接打开会有一些慢&#xff09;二、如何创建一…

零入门容器云网络实战-7->Mac环境下为虚拟机磁盘空间进行扩容

在Mac环境下&#xff0c;使用PD软件创建的虚拟机磁盘空间不够时&#xff0c;如何扩容呢&#xff1f; 主要分两大步骤&#xff1a; 先通过PD界面&#xff0c;设置增加多少空间进入虚拟机里&#xff0c;通过fdisk等相关命令&#xff0c;使其增加的空间生效 1、第一大步&#xf…