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

Linux下的编辑器——vim的简单上手指南

文章目录

  • 一.概念
    • 1. 什么是 vim
    • 2. Vim 的模式
      • ①命令模式
      • ② 插入模式
      • ③底线命令模式
  • 二.vim的基本操作
    • 1.如何启动vim?
    • 2. [命令模式」切换至 「插入模式」
    • 3.「插入模式」 切换至 「命令模式」
    • 4.「命令模式」切换至 「底行模式」
    • 5. 如何退出 vim?
  • 三.vim指令集
    • 1.命令模式指令集
      • ①移动光标
      • ②删除文字
      • ③复制
      • ④替换
      • ⑤撤销上一次操作
      • ⑥更改
      • ⑦跳至指定的行
    • 2.底行模式指令集
      • ①列出行号
      • ②跳到文件中的某一行
      • ③查找字符
      • ④保存文件
      • ⑤多文件操作
  • 四.如何配置vim
    • 配置文件的位置

前言:
本章主要内容有认识与学习Linux环境下常用的编辑器——vim的三种模式与常见指令,学会如何在Linux下完成C代码的编写等等

一.概念

1. 什么是 vim

Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类Unix系统用户最喜欢的编辑器。

2. Vim 的模式

vim作为多模式编辑器,有多种不同的模式,在这里我们主要介绍 3 种模式,分别是命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)

①命令模式

用户刚刚启动 vi/vim,便进入了命令模式。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入底行模式下,或者进入到插入模式下

② 插入模式

在命令模式下按下i就进入了输入模式。只有在插入模式下,才可以做内容输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

③底线命令模式

文件保存或退出,也可以进行文件替换,查找字符串,列出行号等操作。 在命令模式下,shift+:即可进入该模式。若要查看你的所有模式:打开vim,在底行模式直接输入help vim-modes

二.vim的基本操作

1.如何启动vim?

vim + 文件名

启动 vim 后,默认在命令模式,需要切换插入模式才能输入内容

2. [命令模式」切换至 「插入模式」

在命令模式下输入:

i:当前光标位置不变,进入插入模式;

a:光标从当前位置自动向后移动一位,进入插入模式;

o:从当前光标所在行向下另起一行,进入插入模式。

当左下角出现 INSERT 的字样时,证明处于插入模式。

3.「插入模式」 切换至 「命令模式」

「ESC」即可。

4.「命令模式」切换至 「底行模式」

shift + ; (就是英文字符

5. 如何退出 vim?

在底行模式下

输入 w :保存当前文件;

输入 wq:保存并退出;

输入 q! :不保存,强制退出。

三.vim指令集

1.命令模式指令集

①移动光标

小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格

「 $ 」:移动到光标所在行的行尾

「^」:移动到光标所在行的行首

「w」:光标跳到下个单词的开头

「e」:光标跳到下个单词的字尾

「b」:光标回到上个单词的开头

「nl」:光标移到该行的第n个位置,如:5l,56l;

[gg]:进入到文本开始

「G」:移动到文章的最后

[shift+g]:进入文本末端

「ctrl」+「b」:屏幕往“后”移动一页

「ctrl」+「f」:屏幕往“前”移动一页

「ctrl」+「u」:屏幕往“后”移动半页

「ctrl」+「d」:屏幕往“前”移动半页

②删除文字

「x」:每按一次,删除光标所在位置的一个字符

「nx」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符

「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符

「nX」:例如,「20X」表示删除光标所在位置的“前面”20个字符

「dd」:删除光标所在行

「ndd」:从光标所在行开始删除n行

③复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中

「nyw」:复制n个字到缓冲区

「yy」:复制光标所在行到缓冲区。

「nyy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字

「p」:将缓冲区内的字符贴到光标所在位置

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

④替换

「r」:替换光标所在处的字符

「R」:持续替换光标所到之处的字符,直到按下「ESC」键为止

⑤撤销上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复

「ctrl + r」: 对撤销进行恢复

⑥更改

「cw」:更改光标所在处的字到字尾处

「cnw」:例如,「c3w」表示更改3个字

⑦跳至指定的行

「ctrl」+「g」:列出光标所在行的行号

「nG」:例如,「15G」,表示移动光标至文章的第15行行首

2.底行模式指令集

①列出行号

「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号

②跳到文件中的某一行

「n」:n表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行

③查找字符

「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

④保存文件

「w」: 在冒号输入字母「w」就可以将文件保存起来离开vim

「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。

「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

⑤多文件操作

「vs filename」分屏打开并编辑另一个文件filename;

「ctrl ww」切换光标到另一个文件。

四.如何配置vim

原生的vim操作手感以及视图在使用时略显不适,我们可以通过vim配置文件对vim进行美化。美化的作用如同将记事本配置为Visual Studio 2022,可以为我们书写代码提供很好的体验。

配置文件的位置

在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件。

  1. 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
  2. 打开自己目录下的.vimrc文件,执行vim .vimrc

常用配置选项:

  1. 设置语法高亮: syntax on
  2. 显示行号: set nu
  3. 设置缩进的空格数为4: set shiftwidth=4

此处不过多介绍,可自行搜索,但是手动配置既耗费时间精力又容易遇到各种各样的问题,所以我们可以选择网络上好看而又实用的自动化配置。


本文到此结束,码文不易,还请多多支持哦!!

相关文章:

Linux下的编辑器——vim的简单上手指南

文章目录 一.概念1. 什么是 vim2. Vim 的模式①命令模式② 插入模式③底线命令模式 二.vim的基本操作1.如何启动vim?2. [命令模式」切换至 「插入模式」3.「插入模式」 切换至 「命令模式」4.「命令模式」切换至 「底行模式」5. 如何退出 vim? 三.vim指令…...

C++多线程学习(二、多线程的几种创造方式【有返回值的之后讲】)

目录 创建多线程 1.普通函数充当线程处理函数创造线程 2.Lambda表达式充当线程处理函数 3.带参函数创建线程 3.1普通参数 3.2传入引用 3.3智能指针充当函数参数 4.通过类中的成员函数创建 4.1仿函数方式创建:类名的方式调用 4.2普通类中的成员函数 创建多…...

前端开发框架生命周期详解:Vue、React和Angular

引言 作为前端开发者,掌握前端开发框架的生命周期是非常重要的。在现代Web应用开发中,Vue.js、React和Angular是三个最流行的前端开发框架。本篇博客将详细解读这三个框架的生命周期,包括每个阶段的含义、用途以及如何最大限度地利用它们。通…...

【Java从入门到大牛】程序流程控制

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Java从入门到大牛 🌠 首发时间:2023年7月7日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43e…...

UML学习统一建模语言

unified modeling language 统一建模语言 面向对象软件分析与设计建模的事实标准 类命名:帕斯卡特命名 类之间的关系 关联关系:班级和学生,一个类的对象作为另一个类的成员变量; 通过非构造和setter注入的方式建立联系&#xf…...

【C++学习笔记】RAII思想——智能指针

智能指针 1 内存泄漏问题2 RAII(Resource Acquisition Is Initialization)2.1 使用RAII思想设计的SmartPtr类2.2 智能指针的原理2.3 小总结智能指针原理 3 智能指针的拷贝问题3.1 std::auto_ptr3.2 std::unique_ptr3.3 std::shared_ptr3.3.1 拷贝构造函数…...

ubantu配置python环境

安装python 参考博客 安装pycharm 博客 创建Pycharm快捷方式 博客 ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1, currently the ‘ssl’ module is compiled with File “/home/r00t/IdeaProjects/data/venv/lib/python3.9/site-packages/urllib3/init.py”…...

单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)

目录 1 主要内容 目标函数 电动汽车负荷建模 算例系统图 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第五章《单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法》…...

dockerfile常用指令

Dockerfile常用指令 视频学习资料来源这里,点击本行文字即可跳转,讲的比较详细,不过比较老,跟最新的肯定是有一些差异的 Dockerfile官网文档的话点击这里 中文文档可以看看这个,不过没有详细的代码demo 或者是看这个 或…...

Matlab/simulink与dsp28335联合开发教程

一.入门篇(开发环境搭建) 1.1 Code Composer Studio 软件安装1.2 MATLAB 软件安装1.3 Control_SUIT3.4 软件安装1.4 C2000 Simulink 开发工具箱安装1.5 Visual_Studio_Professional 二. 基础篇(片内外设使用) 2.1 G…...

新项目搞完啦!!!

大家好,我是鱼皮。 经过了 7 场直播,总时长近 20 小时,我在 自己的编程导航 的第 5 个 全程直播开发 的项目 —— 智能 BI 项目,完结啦! 我在这里对该项目做一个简单的总结,希望让更多需要它的同学看到&am…...

分享一个可交互的小场景(二)

先看效果&#xff1a; 可互动的小场景 再看代码&#xff1a; JS部分 <script>var rotateDiv document.getElementById(rot);var rotateIcons document.getElementById(rot-icons);var clickRotateDiv document.getElementById(click-rot);var angle 0;clickRotateDi…...

2.5 DNS 应用 -- 1. DNS 概述

2.5 DNS 应用 -- 1. DNS 概述 DNS&#xff1a;Domain Name SystemDNS分布式层次式数据库DNS根域名服务器TLD和权威域名解析服务器本地域名解析服务器 DNS 查询迭代查询递归查询 DNS记录缓存和更新 DNS&#xff1a;Domain Name System Internet上主机/路由器的识别问题 IP地址域…...

基于STM32麦克风阵列音频信号处理系统设计

v hezkz17进数字音频系统研究开发交流答疑 附录: ADAU1452音频处理系统...

《重构》:Extract Class and Inline Class

hey&#xff0c;gays lets go on to refator those sh!t . i fork a rep, this the link GitHub - TIMPICKLE/refator-code: 重构 - 改善既有代码的设计 all right, lets see the genel description. 提取类 对立&#xff1a;内联类 目的&#xff1a;将大类分成小类 场景&a…...

腾讯云对象存储联合DataBend云数仓打通数据湖和数据仓库

随着数字化进程不断深入&#xff0c;数据呈大规模、多样性的爆发式增长。为满足更多样、更复杂的业务数据处理分析的诉求&#xff0c;湖仓一体应运而生。在Gartner发布的《Hype Cycle for Data Management 2021》中&#xff0c;湖仓一体&#xff08;Lake house&#xff09;首次…...

ExceptionLess windows部署。

前言 windows部署 1、一个api项目&#xff0c;里面包含了所有api。 2、一个elasticsearch项目&#xff0c;用来存储相关数据。 3、一个UI项目&#xff0c;也就是查看异常、设置新异常邮件通知等操作的后台。 异常在客户端提交的代码原理&#xff1a;一个异常被提交&#xff0c;…...

使用python实现1DCNN-GRU回归预测

要实现1DCNN-GRU进行回归预测&#xff0c;您可以使用以下Python代码作为参考&#xff1a; 首先&#xff0c;导入所需的库&#xff1a; import numpy as np import tensorflow as tf from tensorflow.keras.layers import Conv1D, MaxPooling1D, GlobalAveragePooling1D, GRU,…...

移动端数据可视化设计

在做APP设计的时候&#xff0c;难免会遇到一些需要展示数据的场景。使用传统的表格和文档展示数据不仅难看&#xff0c;也影响用户理解数据的含义。而数据可视化设计能将数据以更加直观的方式展现出来&#xff0c;使数据更加客观、更有说服力。 在移动应用中&#xff0c;数据可…...

Linux文件系统概述

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 文件系统概述 前言正文文件与磁盘磁盘介绍与机械硬盘机械硬盘基础结构机械硬盘数据存储与管理 文件操作的细节创建文件访问文件删除文件恢复文件其他情况 最后 前言 …...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...