Linux | vim的入门手册

目录

前言

一、什么是vim

二、vim编辑器的模式

1、插入模式

(1)用vim打开文件 

(2)进入插入模式

2、默认模式

(1)光标移动

(2)复制、粘贴与剪切操作

(3)撤销与取消撤销操作

(4)光标快速行移动操作

(5)光标快速列移动操作

(6)编辑相关操作

3、底行模式

(1)进入底行模式

(2)退出与保存

(3)打开行号或取消行号

(4)分屏相关操作

(5)其他操作

4、替换模式


前言

        关于vim想必大家多多少少有一些了解,不大了解也没关系,本章节就带着大家一起学习vim的基本使用;

一、什么是vim

        vim是Linux下的一款编辑器软件,注意,这里说的是编辑器,类似于记事本,我们可以通过vim在Linux系统下进行代码的编辑,这里有些小伙伴就疑惑了,我们难道不能使用vscode等软件吗?是的,我们可以直接使用vscode等软件,且效率也可能更高,但我们有一些情况可能需要纯Linux系统下编辑代码,那是可能就无图形化界面,因此Vim是我们的最好选择了;

二、vim编辑器的模式

        vim编辑器有很多模式,对于新手来说无需弄清每种模式,本文主要介绍如下四种模式,分别为普通模式(默认模式)、插入模式、底行模式、替换模式;这四种模式已经满足大部分需求,且已足够日常使用,对于想精进vim的读者来说,可后续自行完善知识体系本文仅仅为vim入门文章;

1、插入模式

(1)用vim打开文件 

        我们用vim打开一个文件,默认进入的就是默认模式;我们可以通过下面这条指令来用vim打开一个文件;

vim test.c

        其中test.c为文件名,可以自己取别的名字,其中若文件不存在,则会在当前目录自动创建一个文件;

(2)进入插入模式

        我们按下键盘的 i 即可进入插入模式,进入插入模式后,我们左下角的normal就变成了insert,如下图所示;

        我们按下键盘的左上角的 Esc 键即可退出插入模式,进入我们的普通模式,插入模式下,我们就可以进行代码编辑了;对于新手来说,插入模式理解到这一步就已经可以了进行基本的编辑代码了;

2、默认模式

(1)光标移动

        在默认模式中,我们可以通过键盘中的上下左右对光标进行移动,也可以通过H、J、K、L对光标进行移动,后者的使用更加推荐,我们可以通过下图来记忆这四个键;

(2)复制、粘贴与剪切操作

复制:

yy:复制当前行

nyy:从光标选中当前行开始复制 n 行

粘贴:

p:从光标选中的下一行开始粘贴一次

np:从光标选中的下一行开始粘贴 n 次

剪切(删除):

dd:剪切(删除)当前行

ndd:从当前行开始剪切(删除)n 行

(3)撤销与取消撤销操作

撤销:

u:撤销上次操作

取消撤销:

ctrl + r:撤销刚才的撤销操作

(4)光标快速行移动操作

shift + g:将光标移动到最后一行

gg:将光标移动到第一行

n shift + g:快速移动到第 n 行(n为数字)

(5)光标快速列移动操作

shift + 4:快速移动到当前行的最后一列

shift + 6:快速移动到当前行的第一列

w:以单词为单位,快速在当前行向前移动

b:以单词为单位,快速在当前行向后移动

(6)编辑相关操作

shift + ~:大小写切换

r + 要替换的字符:替换当前字符

n r + 要替换的字符: 替换从当前字符开始的 n 个字符

x:删除光标当前指向的字符

n x:删除从光标当前指向的字符位置开始的 n 个字符

3、底行模式

(1)进入底行模式

shift + :(冒号):shift 加 冒号(分号)进入底行模式,下面所有介绍的操作都是基于底行模式下的操作,默认已经进入底行模式了;以下为进入底行模式的界面;

(2)退出与保存

q:仅退出

q!:强制退出

w:仅保存

w!:强制保存

wq!:强制保存并退出

(3)打开行号或取消行号

set nu:打开行号

set nonu:取消行号

(4)分屏相关操作

vs 文件名:分屏出另一个文件出来,若文件不存在,且创建该文件

ctrl + w +  w:进行光标切换(这里的切换指的是这两个文件中切换)

(5)其他操作

!cmd:不退出vim执行对应命令(常与编译、运行、man指令等配合)

        如上图所示,我们可以不退出vim编辑器的情况下,查看当前目录下有哪些文件;

4、替换模式

shift + r:进入替换模式,此时可以进行输入替换;

注意:替换模式我们就不必做过多了解,我们将上述命令学会便已经可以在vim编辑器上完成大部分的编辑任务了;

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

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

相关文章

UE4中无法保存项目问题

系列文章目录 文章目录 系列文章目录前言一、解决方法 前言 取消:停止保存所有资产并返回编辑器。 重试:尝试再次保存资产。 继续:仅跳过保存该资产。 当我点击继续时,关闭项目,然后重新打开项目,发现之前…

广州虚拟动力携数字人全栈式产品,邀您来2023世界VR产业大会(南昌)一探虚实

2023年10月19-20日,由工业和信息化部、江西省人民政府联合主办,中国电子信息产业发展研究院、江西省工业和信息化厅、南昌市人民政府、虚拟现实产业联盟共同承办的2023世界VR产业大会将在南昌绿地国际博览中心盛大举办。 广州虚拟动力作为3D、AI虚拟人领…

guzzle http/guzzle如何在鉴权中使用,如何使用异步操作?

Guzzle HTTP客户端库提供了多种方式来进行鉴权,并且支持异步操作。以下是如何在Guzzle中执行鉴权和使用异步操作的示例: 1. 基本鉴权 Guzzle支持基本的HTTP基本认证(Basic Authentication)鉴权。您可以使用auth选项来指定用户名…

Syntax Error: Error: PostCSS received undefined instead of CSS string (已解决)

错误版本 "node-sass": "^5.0.0" "sass-loader": "^10.1.0" 解决办法如下: 这是因为node-sass 和 sass-loader版本不适配导致,请安装如下版本,并且运行如下命令: "node-sass":…

kafka_2.10启动Kafka broker

要启动 Kafka broker,你需要执行以下步骤: 首先,确保你已经安装了 Kafka。你可以从 Apache Kafka 的官方网站下载 Kafka 的二进制发行版,并按照官方文档中的说明进行安装。 在安装完成后,进入 Kafka 的安装目录。 打…

Junit 集成测试

前言 现在作者说明一下,作者需要开发一个简单的VueSpringboot前后端分离实验,想要尽量将测试的流程应用到这样的系统中。单元测试请见Junit单元测试_Joy T的博客-CSDN博客,而单元测试加上mock呢,最多也只能测试一下Service层的业…

React之受控组件和非受控组件以及高阶组件

一、受控组件 受控组件,简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据 举个简单的例子: class TestComponent extends React.Component {constructor (props) {super(props);this.state { username: lindaidai }…

uniapp在App端如何动态修改原生导航栏?

uniapp在App端如何动态修改原生导航栏? 文章目录 uniapp在App端如何动态修改原生导航栏?page.json配置修改 buttons 文字修改按钮上的角标设置 searchInput的 focus设置 searchInput的 text 在App端可以通过得到 webview 对象,通过当前 webvi…

VSCode 调试 u-boot

文章目录 VSCode 调试 u-boot调试配置启动 u-boot 脚本调试界面重定向之后继续调试参考 VSCode 调试 u-boot 调试配置 参考 qemu基础篇——VSCode 配置 GDB 调试 要想调试 u-boot 只需要再添加一个 u-boot 的配置即可 {"version": "0.2.0","conf…

Flutter ☞ 常量

常量 只能被定义一次,并且不可修改的值叫做常量。 在 Flutter 中有两种常量修饰方法 finalconst 相同点 类型声明可以省略 final String a 123; final a 123;const String a 123; const a 123;初始化后不能再赋值 final a 123; a abc; // 错误const a …

Docker-compose和Consul

目录 1、docker-compose 简介 1.1 Docker-compose 简介 2、compose 部署 2.1 Docker Compose 环境安装 2.2 YAML 文件格式及编写注意事项 * * * * 2.3 Docker Compose配置常用字段 2.4 Docker Compose 常用命令 2.5 Docker Compose 文件结构 3、Consul 3.1 什么是…

SkyWalking 告警规则配置说明

Skywalking告警功能是在6.x版本新增的,其核心由一组规则驱动,这些规则定义在config/alarm-settings.yml 文件中。告警规则定义分为两部分: 1、告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件 2、webhook(网络钩子):定义当告警触发时,哪些服务终端需要被…

unity变体收集工具

项目目录:D:\GIT\YooAsset\Temp 收集代码: using System.Collections; using System.Collections.Generic; using UnityEditor; #if UNITY_EDITOR using UnityEditor.Build; using UnityEditor.Rendering; #if UNITY_2019_4_OR_NEWER using UnityEditor.Build.Pipeline…

学习笔记|串口通信实战|简易串口控制器|sprintf函数|STC32G单片机视频开发教程(冲哥)|第二十一集(下):串口与PC通信

目录 3.串口通信实战实操简易的工作原理Tips:sprintf函数简介 总结课后练习 3.串口通信实战 做一个简易串口控制器。发送对应指令,让板子做相应的事情,或者传输数据(文本模式下发送,不要选择HEX)。 1.串口发送字符Ax\…

2020年亚太杯APMCM数学建模大赛B题美国总统的经济影响分析求解全过程文档及程序

2020年亚太杯APMCM数学建模大赛 B题 美国总统的经济影响分析 原题再现: 美国总统选举每四年举行一次。 2020年是美国总统大选年,共和党候选人唐纳德特朗普和民主党对手乔拜登竞选总统。 甲乙双方候选人在金融贸易,经济金融治理,…

云计算系统与传统计算系统的比较

随着技术的不断发展,云计算系统逐渐成为了企业和个人使用的主要计算方式之一。然而,很多人对云计算系统与传统计算系统之间的区别和相似之处还存在一些疑惑。本文将以云计算系统和传统计算系统为方向,探讨它们之间的异同点。 首先&#xff0…

python爬虫实战-京东商品数据

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 今天介绍一下如何用 Python 来批量获取京东商品信息!! 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 第三方库: requests >>> pip install requests 开发环境: python 3.8 py…

【iOS】——用单例类封装网络请求

文章目录 一、JSONModel1.JSONModel的简单介绍2.JSONModel的使用 二、单例类和Block传值 一、JSONModel 1.JSONModel的简单介绍 JSONModel一个第三方库,这个库用来将网络请求到的JSON格式的数据转化成Foundation框架下的Model类的属性,这样我们就可以直…

mysql中date/datetime类型自动转go的时间类型time.Time

在DSN中需要加入parseTimetrue&&locLocal,或 charsetutf8mb4&locAsia%2FShanghai&parseTimetrue。 package main_testimport ("database/sql""fmt""testing""time"_ "github.com/go-sql-driver/mysq…

Elasticsearch基础篇(五):创建es索引并学习分析器、过滤器、分词器的作用和配置

创建es索引并学习分析器、过滤器、分词器的作用和配置 一、基础概念Elasticsearch与MySQL的类比1. ES与MySQL的结构类比图2. ES与MySQL的类比示意表格3. 索引中重要概念索引(Index)文档(Document)字段(Field&#xff0…