【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,一经查实,立即删除!

相关文章

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…

【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()进行转义,然后就定义了…

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…

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

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

FX-数组的使用

1一维数组 1.1一维数组的创建和初始化 1.1.1数组的创建 //代码1 int arr1[10]; char arr2[10]; float arr3[1]; double arr4[20]; //代码2 //用宏定义的方式 #define X 3 int arr5[X]; //代码3 //错误使用 int count 10; int arr6[count];//数组时候可以正常创建&#xff1…

【十三】【算法分析与设计】二分查找(1)

704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4…

win10笔记本在显示设置中不慎将主显示器禁用掉导致开机黑屏的解决方案

因为笔记本电脑的显示扩展接口有问题,所以在电脑开机之后,会误识别出几个不存在的扩展屏幕,所以我就想从显示设置中将这几个误识别出来的扩展屏幕禁用掉(不然鼠标总是移动到主屏幕边界之外的地方),在显示设…

2024年腾讯云GPU服务器价格表_1小时费用_一个月价格和一年优惠

腾讯云GPU服务器怎么收费?GPU服务器1小时多少钱?一个月收费价格表和一年费用标准,腾讯云百科txybk.com分享腾讯云GPU服务器GPU计算型GN10Xp、GPU服务器GN7、GPU渲染型 GN7vw等GPU实例费用价格,以及NVIDIA Tesla T4 GPU卡和V100详细…

【SZU计算机网络实验】实现流式视频传输

前言 一百年没有更新博客了,都怪开学一堆杂活(x 那就顺手把实验报告转到这边吧owo 本实验为SZU原创实验,实验开发团队的老师和助教们都很有耐心。。大赞,环境没配好去群里问是秒回的 相关资料: 实验文档&#xff…

k8s详细教程

Kubernetes详细教程 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点…

JavaScript高级(十八)---进程和线程,宏任务和微任务

进程和线程 进程(process):计算机已经运行的程序,是操作系统管理程序的一种方式,我们可以认为,启动一个应用程序,就会默认启动一个进程(也可能是多个进程)。 线程&…