从0开始linux(5)——vim

欢迎来到博主的专栏:从0开始linux
博主ID:代码小豪

文章目录

    • vim的多种模式
      • 底行模式命令
      • 命令模式
      • 视块模式(visual block)
    • vim的配置

vim是linux系统的文本编辑器。就像windows的记事本一样。

使用vim指令可以使用vim打开一个文本文件。
vim [文件名]

比如,我们可以使用lysb666(普通用户)在/home/lysb666下创建一个code.c文件

touch code.c
vim code.c

此时,我们将code.c文件以vim打开。
在这里插入图片描述

vim的多种模式

vim本身有多种模式,但是常用的模式主要有三种,掌握这三种模式就可以基础使用vim编辑器了。如果有用上其他模式的场景,博主再进行补充。

当我们刚打开code.c时,并不能对该文件进行文本编写。这是由于vim有三种模式。

  • 在默认情况下,vim处于命令模式,此时我们只能使用命令对vim进行操作
  • 在命令模式下,输入i可以进入插入模式。在插入模式中,我们可以对文件进行文本编辑。
  • 在命令模式下,输入:(shirt+;),可以进入底行模式,在底行模式当中可以输入指令让vim编辑器进行打开其他文件,保存并退出,等操作。
  • 当我们处于插入模式或底行模式时,按下esc可以回退到命令模式。

在这里插入图片描述
现在我们在命令模式下输入i进入插入模式,并且写上一个简单的代码。
在这里插入图片描述
在插入模式下,可以使用vim进行文本编辑,因此插入模式的功能很简单,现在我们按下esc回退到命令模式,然后shirt+;进入底行模式。

底行模式命令

进入底行模式后,光标会来到最底行,我们就可以在底行输入命令让vim进行对应操作。
在这里插入图片描述
比如:
[w]:保存文件
[q]:退出vim
[wq]:w和q的组合命令,保存并退出vim
[set number]:让文本显示行号,输入简写[set nu]也是同样的操作。
在这里插入图片描述

[no number]:让文本不显示行号,输入[no nu]也行
[n]输入一个数字n,让光标跳转到第n行。比如输入5,就会跳转到第5行
在这里插入图片描述
[/ string]输入/,并在后面写上一个字符串,会跳转到第一个重复的字符串,并且将其余相同的字符串高亮显示,为了演示这个操作,博主将printf(“hello world”)复制粘贴了十行,如果在底行中输入/hello,那么文本当中将hello字符串显示高亮,按下[n]键光标会跳转到下一个hello上。
在这里插入图片描述
[? string]输入?,并且写上一个字符串,会跳转搭配第一个重复的字符串,相同的字符也会高亮,但是按下[n]键,光标会跳转到上一个相同的字符串上。

多窗口模式
有时候需要同时对两个文件进行操作(比如将一个文件的部分内容,复制到另外一个文件当中)。如果我们要频繁的关闭,打开其他文件,还是非常不舒服的,如果能像我们使用windows打开浏览器的时候一样,可以多个窗口,那样不就方便许多了吗?
[vs]vs+文件名可以在多窗口的情况下对两个文件进行操作,比如博主这里创建一个空的文件名为text.txt。

在底行模式中输入vs text.txt,可以多窗口的打开text。txt和code.c文件。
在这里插入图片描述
由于窗口有多个。而光标只有一个,有时候我们需要让光标跳转到其他文件当中进行操作
[ctrl+w+w]:光标跳转到下一个文件

此时,我们可以尝试将code.c的内容复制粘贴到text.txt文件当中。
在这里插入图片描述
命令操作

命令模式

在插入模式当中,除了esc键,其余按键都会被当做数据输入,而在底行模式当中,除了esc键,其余按键都会当成指令。因此,只有命令模式才能用按键作为命令进行操作。

光标移动按键
[h]:向左移动一个字符,相当于(←)键
[j]:向下移动一个字符,相当于(↓)键
[k]:向上移动一个字符,相当于(↑)键
[L]:向右移动一个字符,相当于(→)键

一个一个字符移动还是很麻烦的,我们可以在这些按键之前加上数字,比如输入20j,即光标向下移动20个字符
[shift+h]:光标移动到第一行的第一个字符
[shift+g]:光标移动到最后一行的第一个字符
[n+gg]:光标移动到第n行,比如3gg就移动到第三行,而gg则相当于1gg,即移动到第一行
[shift+4]:光标移动到行尾
[shift+6]:光标移动到行首

修改操作
如果修改文本只会在插入模式当中一个一个字符操作,那么肯定会很痛苦的,我们可以在命令模式下进行一些批量的修改操作
[x]:删除当前光标的字符(相当于delete键)n+x则可以批量的删除字符,比如10x,相当于delete10次
[shift+x]删除光标以前的字符(相当于bacjspace键)也可以n+shift+x,同理。
[dd]:剪切光标指向的一行,n+dd则将光标以下的n行进行剪切,比如20dd则是剪切光标以下20行的数据
[yy]:复制光标指向的一整行,可以n+yy批量复制,同上。
[p]将剪切或复制的内容粘贴到当前光标指向的下一行,可以n+p,即将复制的内容连续粘贴20次。
[shift+p]:将剪切或复制的内容粘贴到当前光标指向的上一行,可以n+shift+p,同上
[u]撤销上一次的操作。类似于word当中的ctrl+z。
[ctrl+r]回到上一次的操作。

视块模式(visual block)

在命令模式下,对于文本的操作都是以行为单位的操作,如果想要像windows一样对块进行操作,就要用上vim的视块模式。
在这里插入图片描述
按下[v]进入视图模式,按下[ecs]回到命令模式。

在视图模式下,输入不同的命令会有不同的功能:
[v]:将光标经过的字符进行旋转:类似于上面的操作
[shift+v]:将光标经过的行进行选择,如下:
在这里插入图片描述
这些变色处理的字符就是选中的文字。
[ctrl+v]:块选择,如下:
在这里插入图片描述

[y]将选中的字符进行复制
[d]:剪切选中字符
[p]:粘贴刚刚复制或剪切的字符

批量修改文本
如果我们想要注释掉一整段代码,如果一行一行输入是不是有点太慢了。我们在视块模式下,[ctrl+v]进入块选择模式,选中我们要加上注释的位置,然后[shift+i]进入插入模式,写上//,然后按两次esc,批量注释就搞定了。
在这里插入图片描述

注意左下角的状态变化

vim的配置

如果我们熟悉了用vs2022这种集成开发环境,那么使用vim这种比较原始的工具肯定不太适应的,不过好在在网上可以找到vim的插件。

比如自动缩进,自动补齐,以及文本高亮之类的功能,能让我们在使用vim编程的时候更有效率。比如博主的vim配置就是这样的:
在这里插入图片描述

关于vim的配置方案,大家在网上根据自己的需求寻找就行。

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

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

相关文章

JavaWeb美食推荐管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…

JavaScript 学习

一、输出 为方便调试可以输出内容&#xff0c;但是用户是看不到的。要在开发者模式中看。 console . log ( "Hello" )&#xff1b; 二、外部文件引用 可以直接在html中写JS <head> <meta charset"utf-8"> <script> console.log("he…

ZYNQ:开发环境搭建

资料下载 http://47.111.11.73/docs/boards/fpga/zdyz_qimxing(V2).html Vivado软件是什么&#xff1f; Vivado软件是Xilinx&#xff08;赛灵思&#xff09;公司推出的一款集成设计环境&#xff08;IDE&#xff09;&#xff0c;主要用于FPGA&#xff08;现场可编程门阵列&am…

零代码构建自己强大的Agent智能体,偷偷甩掉90%的人

转自公众号&#xff1a;渡码 Agent&#xff08;智能体&#xff09;的概念大家应该并不陌生了&#xff0c;今天分享通过可视化的方式构建各种各样强大的智能体。 关于Agent的定义&#xff0c;我并不想引用官方正式的说法。而是按照我的理解通俗地解释一下。 大模型好比是面粉…

第166天:应急响应-拒绝服务钓鱼指南DDOS压力测试邮件反制分析应用日志

案例一&#xff1a;内网应急-日志分析-爆破&横向&数据库 数据库 这里不同数据库日志不一样&#xff0c;我用mysql分析 首先MySQL数据库需要支持远程连接 GRANT ALL PRIVILEGES ON . TO root% IDENTIFIED BY 123.com WITH GRANT OPTION; 其次开启日志 -- 查看general…

Flutter为Android添加签名并打包

前言 我们需要将App进行数字签名才能发布到商店里。在这里就具体描述一下如果给App添加签名 为App签名 创建一个用户上传的秘钥库 如果你已经有一个秘钥库了&#xff0c;可以直接跳到下一步&#xff0c;如果没有则按照下面的指令创建一个 keytool 可能不在我们的系统路径中…

MySQL多版本并发控制MVCC实现原理

MVCC MVCC 是多版本并发控制方法&#xff0c;用来解决读和写之间的冲突&#xff0c;比如脏读、不可重复读问题&#xff0c;MVCC主要针对读操作做限制&#xff0c;保证每次读取到的数据都是本次读取之前的已经提交事务所修改的。 概述 当一个事务要对数据库中的数据进行selec…

【初阶数据结构】详解二叉树 - 树和二叉树(三)(递归的魅力时刻)

文章目录 前言1. 二叉树链式结构的意义2. 手搓一棵二叉树3. 二叉树的遍历&#xff08;重要&#xff09;3.1 遍历的规则3.2 先序遍历3.3 中序遍历3.4 后序遍历3.5 遍历的代码实现3.5.1 先序遍历代码实现3.5.2 中序遍历代码实现3.5.3 后序遍历代码实现 4. 统计二叉树结点的个数5.…

微服务注册中⼼2

5.Nacos配置管理 Nacos除了可以做注册中⼼&#xff0c;同样可以做配置管理来使⽤ 5.1 统⼀配置管理 当微服务部署的实例越来越多&#xff0c;达到数⼗、数百时&#xff0c;逐个修改微服务配置就会让⼈抓狂&#xff0c;⽽且很容易出错。我们需要⼀种统⼀配置管理⽅案&#xf…

Java.反射

目录 1.获取class 的三种方式 2.利用反射获取构造方法 3.利用反射获取成员变量 4.利用反射获取成员方法 1.获取class 的三种方式 全类名怎么找? 全类名报名&#xff0b;类名 package MyReflect;public class Student {private String id;private String name;private int…

MySQL基础篇(黑马程序员2022-01-18)

1 MySQL数据库概述 1.1 MySQL数据库的下载,安装,启动停止 1.2 数据模型 (1)关系型数据库(RDBMS) 概念&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; A. 使用表存储数据&#xff0c;格式统一&#xff0c;便于维护。…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25 1. PromSec: Prompt Optimization for Secure Generation of Functional Source Code with Large Language Models (LLMs) M Nazzal, I Khalil, A Khreishah, NH Phan - arXiv preprint arXiv:2409.12699, 2…

Python--操作列表

1.for循环 1.1 for循环的基本语法 for variable in iterable: # 执行循环体 # 这里可以是任何有效的Python代码块这里的variable是一个变量名&#xff0c;用于在每次循环迭代时临时存储iterable中的下一个元素。 iterable是一个可迭代对象&#xff0c;比如列表&#xff08;…

URI和URL的区别

1: 将 URI 转换为 URL import java.net.URI; import java.net.URL;public class UriToUrlExample {public static void main(String[] args) {// 创建一个 URI 对象URI uri = new URI("http://example.com/path/to/resource");// 将 URI 转换为 URLtry {URL url = u…

C语言中易混淆概念的关键字

最快的关键字---- register register&#xff1a; 这个关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中而不是通过内 存寻址访问以提高效率。注意是尽可能&#xff0c;不是绝对。你想想&#xff0c;一个 CPU 的寄存器也就那么 几个或几十个&#xff0c;你要是定义了很多很…

变电站设备检测系统源码分享

变电站设备检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

大模型如何赋能智慧城市新发展?

国家数据局近期发布的《数字中国发展报告&#xff08;2023&#xff09;》显示&#xff0c;我国数据要素市场化改革步伐进一步加快&#xff0c;数字经济规模持续壮大&#xff0c;数字技术应用场景不断拓展。这一成就的背后是数字技术广泛应用&#xff0c;数字技术不仅影响着老百…

移动硬盘突然打不开:深度剖析、恢复策略与预防措施

突发困境&#xff1a;移动硬盘的沉默拒绝 在日常的数字生活中&#xff0c;移动硬盘作为数据存储与传输的重要工具&#xff0c;扮演着不可或缺的角色。然而&#xff0c;当您急需访问存储在移动硬盘中的重要文件时&#xff0c;却遭遇了“突然打不开”的尴尬境地&#xff0c;这无…

软件无线电3-微相E316和HackRF实现FM调制解调

前面介绍了基于Matlab、矢量信号器和HackRF One实现射频下的FM调制解调&#xff0c;今天分享的内容是用微相E316替代矢量信号器完成发射工作。注意本文仅用于科研和学习&#xff0c;私自搭建电台属于违法行为。 1.概述 微相E316和HackRF One实现FM调制解调测试框图如1所示&am…

Excel 设置自动换行

背景 版本&#xff1a;office 专业版 11.0 表格内输入长信息&#xff0c;发现默认状态时未自动换行的&#xff0c;找了很久设置按钮&#xff0c;遂总结成经验帖。 操作 1&#xff09;选中需设置的单元格/区域/行/列。 2&#xff09;点击【开始】下【对齐方式】中的【自动换…