【Linux】vim详细介绍(四)


文章目录

      • 什么是 vim
      • vim的主要功能:
      • vim的三种模式
      • .viminfo和.vimrc文件

什么是 vim

点击跳转至官网了解更多
Vim是一款功能强大的文本编辑器,适用于各种编程和文本处理任务,最初由Bram Moolenaar开发于1991年。它是Vi编辑器的增强版,Vi是Unix系统上的一款文本编辑器。Vim的名称代表“Vi IMproved”(Vi的改进版)。

Vim有着丰富的功能和强大的定制性,是程序员和系统管理员等专业用户的首选编辑器之一。

vim的主要功能:

  1. 模式:Vim具有多种模式,包括一般模式、编辑模式、可视模式、底行模式等。普通模式下可以执行各种编辑命令,插入模式用于输入文本,可视模式用于选择文本,底行模式用于执行命令。
  2. 快捷键:Vim通过使用快捷键来执行各种编辑操作,这些快捷键可以大大提高编辑效率。
  3. 强大的搜索和替换功能Vim支持使用正则表达式进行搜索和替换,还支持全局替换、逐个替换等功能。
  4. 语法高亮:Vim可以根据文件的语法类型进行高亮显示,使代码更易于阅读和编辑。
  5. 自动补全:Vim具有自动补全功能,可以根据已输入的内容提示可能的选项,提高编码效率。
  6. 分屏和标签页:Vim支持将编辑区域分割成多个窗口,并且可以使用标签页来管理多个文件。
  7. 插件系统:Vim具有丰富的插件系统,用户可以根据自己的需要安装各种插件来扩展编辑器的功能。

vim的三种模式

在这里插入图片描述

  • 命令模式(command mode)

    以 vim 打开一个文件就直接进入一般模式了(这是默认的模式,也简称为一般模式)。 在这个模式中, 你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、贴上”来处理你的文件数据。

  • 插入模式 (insert mode)

    在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下“i, I, o, O, a, A, r, R”等任何一个字母之后才会进入编辑模式。 注意了! 通常在 Linux 中,按下这些按键时,在画面的左下方会出现“ INSERT 或 REPLACE ”的字样,此时才可以进行编辑。 而如果要回到一般模式时, 则必须要按下“Esc”这个按键即可退出插入模式。

  • 底行模式 (last line mode)

    在一般模式当中,输入“ : ? / 三个中的任何一个按钮,就可以将光标移动到最下面那一列。 在这个模式当中, 可以提供你“搜寻数据”的动作,而读取、存储、搜索、替换、离开 vim 、显示行号等等的动作则是在此模式中达成的!

  • vim打开文件后为命令模式(command mode)

    1. 打开一个文件vim filename

    2. 打开多个文件vim file1 file2 …

      使用 :e file 命令打开其他文件

      使用:sp filename 启动新窗口打开文件

  • 从命令模式(command mode)进入插入模式(Insert mode)

    1. 按i在当前位置编辑
    2. 按a在当前位置的下一个字符编辑
    3. 按o插入新行,从行首开始编辑
  • 插入模式(insert mode)下按ESC键退回命令模式(command mode)

  • 命令模式(command mode)下按 : 或 / 或 ?等即可进入底行模式(last line mode)

    1. 输入 :set nu 显示行号
    2. 输入 :1,$s/word/WORD/g 将全部的word替换为WORD
    3. 输入 /word 向下搜索word,之后按n继续搜索
    4. 输入 ?word 向上搜索word,之后按n继续搜索
    5. 更多命令介绍在底行模式的可用按钮说明中
  • 底行模式(last line mode)下按ESC键或Enter键返回到命令模式(command mode)

  • 底行模式(last line mode)下退出

    1. 输入:q退出
    2. 输入 :wq保存后退出
    3. 输入:q!强制退出
    4. 输入 :wq!强制保存退出
  • 命令模式可用的按钮说明,光标移动、复制、粘贴等

    操作说明
    移动光标的方法
    h 或 ←光标向左移动一个字符
    j 或 ↓光标向下移动一个字符
    k 或 ↑光标向上移动一个字符
    l 或 →光标向右移动一个字符
    nG移动到这个文件的第 n 列。 (可配合 :set nu)
    例,100G为移动到第100行
    n 或 n ↓光标向下移动 n 列(常用)
    例,100 ↓为移动到101行,不同于100G
    x, X在一列字当中,x 为向后删除一个字符,X 为向前删除一个字符
    nxn 为数字,连续向后删除 n 个字符。 举例来说,我要连续删除 10 个字符, “10x”。
    dd删除光标所在的那一整列(常用)
    nddn 为数字。 删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)
    yy复制光标所在的那一列(常用)
    nyyn 为数字。 复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)
    p, Pp 为将已复制的数据在光标下一列贴上,P 则为贴在光标上一列。举例来说,我目前光标在第 20 列,且已经复制了 10 列数据。则按下 p 后,那 10 列数据会贴在原本的 20 列之后,亦即由 21 列开始贴。但如果是按下 P 呢?那么原本的第 20 列会被推到变成 30 列。 (常用)
  • 底行模式的可用按钮说明

    操作说明
    :w将编辑的数据写入硬盘文件中(常用)
    :w!若文件属性为“只读”时,强制写入该文件。不过,到底能不能写入, 还是跟你对该文件的文件权限有关啊!
    :q离开 vi (常用)
    :q!若曾修改过文件,又不想储存,使用 ! 为强制离开不储存盘案。
    :wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
    :w [filename]将编辑的数据储存成另一个文件(类似另存新文件)
    :r [filename]在编辑的数据中,读入另一个文件的数据。 亦即将 “filename” 这个文件内容加到光标所在列后面
    :n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个文件。
    :! command暂时离开 vi 到命令行界面下执行 command 的显示结果。例如 “:! ls /home“即可在 vi 当中察看 /home 下面以 ls 输出的文件信息!
    /word向光标之下寻找一个名称为 word 的字串。
    (按下后继续按n可连续搜索)
    ?word向光标之上寻找一个字串名称为 word 的字串。
    (按下后继续按n可连续搜索)
    :n1,n2s/word1/word2/g在第 n1 与 n2 列之间寻找 word1 这个字串,并将该字串取代为 word2 !
    例 :1,$s/word1/word2/g,将第一行和最后一行中所有的word1替换为word2
    :1,$s/word1/word2/gc从第一列到最后一列寻找 word1 字串,并将该字串取代为 word2 ! 且在取代前显示提示字符给使用者确认 (confirm) 是否需要取代!
    (替换时可以选中行首^和行尾$)
    :sp filename开启一个新窗口,如果有加 filename, 表示在新窗口打开一个新档案,否则表示两个窗口为同一个档案内容(同步显示)。如果需要更换窗口,可以同时按下ctrl w ↑ 或者 ctrl w ↓进行更换。想要结束选中的窗口,可以同时按下ctrl w q。
    :set nu临时设置显示行号,设置之后,会在每一列的字首显示该列的行号
    (这是一个vim环境设置的命令)
  • vim环境设置命令

    • 常用命令1
    命令功能详细说明
    :set nu打开行号显示在每一行的左侧显示该行的行号,方便导航和定位。
    :set nonu关闭行号显示停止显示每行的行号。
    :set hlsearch打开高亮搜索在搜索时,匹配的文本会被高亮显示,以突出显示搜索结果。
    :set nohlsearch关闭高亮搜索停止匹配文本高亮显示。
    :set autoindent打开自动缩进在输入新行时,新行会自动与上一行保持相同的缩进,使代码更易于阅读和维护。
    :set noautoindent关闭自动缩进输入新行时,不会自动应用与上一行相同的缩进,使用者需要手动缩进文本。
    :syntax on打开语法高亮Vim 会根据文件类型自动高亮显示关键字、注释等,提高代码可读性。
    :syntax off关闭语法高亮停止对文件的语法高亮显示,适用于不希望使用语法高亮的情况,例如在查看纯文本文件时。
    :set bg=light设置背景颜色为亮色设置 Vim 编辑器的背景颜色为亮色主题,适合在明亮的环境下使用,如白天工作环境。
    :set bg=dark设置背景颜色为暗色设置 Vim 编辑器的背景颜色为暗色主题,适合在暗色环境下使用,如夜间工作环境。
    • 常用命令2
    命令功能详细说明
    :set显示所有当前设置的选项显示所有当前设置的选项,但不包括它们的值。
    :set all显示所有当前设置的选项及其值显示所有当前设置的选项及其值,帮助用户了解当前 Vim 的所有设置选项。
    :set showmode打开显示模式在底部显示当前处于插入模式还是命令模式,帮助用户了解当前 Vim 处于哪种模式下。
    set showcmd显示命令在底部状态栏显示当前的命令
    :set ruler打开标尺在底部显示当前光标所在位置的行号和列号,帮助用户准确定位。
    :set backup打开备份在编辑文件时,Vim 会在保存之前创建一个备份文件,以防止意外丢失数据。
    :set tabstop=n设置制表符宽度为 n设置制表符的宽度为 n 个空格,例如 set tabstop=4 设置制表符宽度为 4 个空格
    :set ignorecase忽略大小写在搜索时忽略大小写匹配
    :set smartcase智能大小写只有搜索词中包含大写字母时,才区分大小写
    :set backup备份文件在保存文件时创建备份文件,备份文件的命名规则为 filename~
    :set list显示不可见字符显示不可见字符,如空格和制表符
    :set showmatch自动高亮匹配的括号在插入括号时,自动高亮显示匹配的括号

.viminfo和.vimrc文件

  1. .vimrc 文件
    • 作用.vimrc 文件是 Vim 的配置文件,用于定义用户的偏好设置和自定义命令。在这个文件中,你可以设置编辑器的外观、行为、键绑定、插件等等。所有在 .vimrc 文件中设置的选项都会在启动 Vim 时被加载。
    • 位置.vimrc 文件通常位于用户的主目录下(在 Unix/Linux 系统中为 ~/.vimrc
    • 编辑:你可以使用任何文本编辑器来编辑 .vimrc 文件,添加或修改配置选项以满足你的需求。
  2. .viminfo 文件
    • 作用.viminfo 文件用于存储 Vim 的会话信息,包括历史命令、搜索历史、撤销历史、文件位置等。当你退出 Vim 时,会话信息会被保存到 .viminfo 文件中;当你重新启动 Vim 时,Vim 会从 .viminfo 文件中读取信息以恢复你上次编辑的状态。
    • 位置.viminfo 文件通常也位于用户的主目录下(在 Unix/Linux 系统中为 ~/.viminfo
    • 编辑:一般情况下,你不需要手动编辑 .viminfo 文件。Vim 会自动管理这个文件,你只需要了解它的存在和作用即可。

这两个文件对于定制和管理 Vim 编辑器都非常重要。通过编辑 .vimrc 文件,你可以根据个人喜好配置 Vim 的外观和行为;而 .viminfo 文件则帮助你在 Vim 的不同会话之间保持状态一致性。

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

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

相关文章

项目当中 签到功能 +多级缓存+介绍一下点赞功能

签到是怎么做的? 刚开始想用数据库做来着,后来发现用数据库数据量太大,就找解决方案,想到了用bitMap 位图。 bitMap 位图是什么 ? 我们采用的是radis 里的bitMap结构 他本质是字符串 最大512mb 是使用01 来存储…

GitHub Copilot+ESP开发实战-串口

上篇文章讲了GitHub Copilot在应用中可能遇到的问题,接下来小启就简单介绍下GitHub Copilot在ESP32开发中C语言实现串口功能,感兴趣的可以看看。 一、向Copilot提问: 1. ESP32用C语言实现串口初始化; 2.配置uart为1&#xff0c…

【Thread 线程】线程的方法与状态

SueWakeup 个人中心:SueWakeup 系列专栏:学习Java 个性签名:保留赤子之心也许是种幸运吧 本文封面由 凯楠📷 友情赞助播出! 目录 一个线程的生命周期 线程终止的原因 线程的方法 Thread 类的静态方法 1. 设置线程…

59、服务攻防——中间件安全CVE复现IISApacheTomcatNginx

文章目录 中间件——IIS漏洞中间件——Nginx漏洞中间件——Apache中间件——Tomcat 中间件:IIS、Apache、Nginx、Tomcat、Docker、Weblogic、JBoss、WebSphere、Jenkinsphp框架:Laravel、Thinkphppythonl框架:Flaskjs框架:jQueryj…

为什么要减少Http的请求以及如何减少Http请求

为什么要减少Http的请求 减少 HTTP 请求的数量是优化网页性能的一个重要策略,原因有以下几点: 1.延迟:每个 HTTP 请求都会有一定的网络延迟。即使数据量很小,请求和响应的往返时间也可能相当长,特别是在网络条件不好…

王道c语言-链表分为两半,逆置后一半,与前一半轮流合并

王道c语言-链表分为两半,逆置后一半,与前一半轮流合并 设线性表 L ( a 1 , a 2 , a 3 , ⋯ , a n − 2 , a n − 1 , a n ) L(a_1,a2,a3,\cdots,a_{n-2},a_{n-1},a_{n}) L(a1​,a2,a3,⋯,an−2​,an−1​,an​) 采用带头结点的单链表保存,…

【Unity】从0到1的横版2d制作笔记-DAY1

写在前面: 感谢旻子提供的Unity2d课程捏,红豆泥阿里嘎多 创建项目 测试Visual Studio的使用 右键选择【create】,右键创建C# Script,待文件创建完毕后双击查看能否正确跳转。 正确跳转的结果是能看见代码中注释标注有:…

mysql - 查询成本 - 优化器

查询成本 我们之前老说MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的,其实在MySQL中一条查询语句的执行成本是由下边这两个方面组成的&…

低代码开发与数据可视化

随着数字化转型的深入发展,软件开发在各行各业中的重要性日益凸显。近年来,低代码开发与数据可视化技术的兴起,为软件开发带来了革命性的变革。本文将深入探讨低代码开发与数据可视化的概念、优势以及应用场景,旨在帮助读者更好地…

分布式搜索引擎elasticsearch专栏二

上一篇的传送门: 分布式搜索引擎elasticsearch专栏一-CSDN博客 这一篇博文主要讲解elasticsearch的数据搜索功能。下面会分别使用DSL和RestClient实现搜索。 1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsea…

[PwnThyBytes 2019]Baby_SQL

[PwnThyBytes 2019]Baby_SQL 查看源码发现 下载源码,首先观察index.php 首先进入index.php,会执行session_start();启动session这里通过foreach将所有的环境变量的值都遍历了一遍,并且都使用了addslashes()进行转义,然后就定义了…

cuda从入门到精通(六)共享内存和循环分块实现CUDA矩阵乘

本文系转载,出处:https://mp.weixin.qq.com/s/1w1WFPoUEvVECsurqmvJDw 在CUDA编程中,共享内存和循环分块(loop tiling)是两种常见的优化策略,它们可以帮助我们提高矩阵乘法的性能。 共享内存(Sh…

GO语言:函数、方法、面向对象

本文分享函数的定义、特性、defer陷阱、异常处理、单元测试、基准测试等以及方法和接口相关内容 1 函数 函数的定义 func 函数名(参数列表) (返回值列表) { // 函数体(实现函数功能的代码) } 匿名函数的定义就是没有函数名,可以当做一个函…

使用华为云HECS服务器+nodejs开启web服务

简介: 在华为云HECS服务器上使用nodejs开启一个web服务。 目录 1.开通华为云服务器 2.远程登录 2.1 使用华为官方的网页工具登录 ​编辑 2.2 使用MobaXterm登录 3 安装node 3.1 下载 2. 配置环境变量 4. 安装express模块 5.开启外网访问 1.开通华为云服务器 这…

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试)

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试) ​​ ​​ 数据源系统:MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方…

ASPICE规范之系统追溯矩阵

系统追溯矩阵的需求来自 ISO26262 举例在描述系统追溯矩阵时:客户需求->系统需求;系统需求->客户需求;系统需求->软件需求;系统需求->硬件需求

【LabVIEW FPGA入门】使用FPGA实现串行同步接口(SSI)

SSI(串行同步接口)是连接绝对位置传感器和控制器的广泛应用的串行接口。SSI利用控制器发出一个时钟脉冲序列,初始化传感器的门限输出。 传感器不断更新位置数据,并传送到移位寄存器中。在每一个时钟脉冲序列之间&#xff…

条件随机场(CRF)笔记

Filed, Random Field, Conditional Random Field 场(field)是一个关于位置的函数。这个概念来自物理学,一个典例是引力场:一个有质量的物体 A 会对其它有质量的物体产生引力,可用一个函数来描述在各位置受到来自 A 的…

在Ubuntu20.04(原为cuda12.0, gcc9.几版本和g++9.几版本)下先安装cuda9.0后再配置gcc-5环境

因为自己对Linux相关操作不是很熟悉,所以因为之前的代码报错之后决定要安cuda9.0,于是先安装了cuda9.0。里面用到的一些链接,链接文件夹时直接去copy它的路径,就不那么容易错了。 今天运行程序之后发现gcc环境不太匹配cuda9.0&am…

Python 第三方库 | python-dotenv

1. 简介 在一些项目中,处于安全性的要求,一般不将密码,key等放入到配置文件中。然而这些代码又是上传在 git等平台上。为了方便管理。一般采用系统变量的方式来实现。从而实现配置和代码分开。 2. 安装 pip install python-dotenv 3. 使用…