06 vim工具

目录

  1. 概念
  2. 模式
  3. 基本操作
  4. 配置

1. 概念

vim是一个历史悠久的,多模式的编辑器,是vi的升级版。和ide不同,编辑器仅能编写文本,不能运行代码,现阶段的代码编译的各个过程会分开按步骤执行

在这里插入图片描述

2. 模式

vim有很多种模式,想要编写代码需要掌握三种模式,分别是命令模式(command mode)、插入模式(insert mode)、底行模式(last line mode),模式区别如下:

  • 正常/普通/命令模式:

控制屏幕光标移动,字符或行的删除,移动赋值某段进入insertmode下,或者到last line mode

  • 插入模式(insert mode)

只有在insert mode下,才可以文字输入,按esc键回到命令模式,这个是使用最频繁的

  • 末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作,命令模式下,shift+:进入该模式,打开vim,底行输入: help vim-modes

一共有12种模式:six BASIC modes和six ADDITIONAL modes

在这里插入图片描述

3. 基本操作

输入vim [文件名]就可以进入vim编辑页面,刚进入会处于正常模式,需要切换到插入模式,左下角显示的是模式
在这里插入图片描述
【正常模式】切换【插入模式】
插入模式可以正常输入文字

输入a 或 i 或 o

在这里插入图片描述

【插入模式】切换【正常模式】
按esc键回到正常模式

【正常模式】切换【底行模式】

shifit+:
在这里插入图片描述

退出vim和保存文件,在末行模式输入:wq 保存并退出

正常模式命令

  • 插入模式
    按 i 进入插入模式,是从光标当前位置开始输入
    按 a 进入插入模式,是从目标光标所在位置下一个位置开始输入
    按 o 进入插入模式,是插入新的一行,从行首开始输入

  • 从插入模式改为命令模式
    按esc键

  • 移动光标
    可以用上下左右键移动,正规的是h j k l 分别是左下上右
    按 [G]: 移动到文章的最后
    常用 按 [$]: 移动到光标所在行的行尾
    常用 按 [^]: 移动到光标所在行的行首
    按 [w]: 光标到下个单词的开头
    按 [e]: 光标到下个单词的结尾
    按 [b]: 光标回到上个单词的开头
    按 [#l]: 光标移动到第#个位置
    按 g:移动到文章的最后
    常用 按 [gg] : 光标到文本开始
    常用 按 [shift+g] : 光标到文本末尾
    常用 n+shift+g: 光标定位文件的任意行
    按「ctrl」+「b」:屏幕往“后”移动一页
    按「ctrl」+「f」:屏幕往“前”移动一页
    按「ctrl」+「u」:屏幕往“后”移动半页
    按「ctrl」+「d」:屏幕往“前”移动半页

  • 删除文字
    「x」:每按一次,删除光标所在位置的一个字符
    「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
    「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
    「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
    「dd」:删除光标所在行
    「#dd」:从光标所在行开始删除#行

  • 复制
    常用 [dd]: 光标所在行,剪切(删除) ,也可以ndd,删除几行
    「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
    「#yw」:复制#个字到缓冲区
    常用「yy」:复制光标所在行到缓冲区。可以配合nyy,输入数字复制几行
    「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
    常用「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。可以配合np,输入数字复制几次

  • 替换
    常用 「r」:替换光标所在处的字符。支持nr
    「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
    shift + ~: 大小写替换

  • 撤销
    常用「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回
    复。
    常用「ctrl + r」: 撤销的恢复

  • 更改
    「cw」:更改光标所在处的字到字尾处
    「c#w」:例如,「c3w」表示更改3个字

  • 跳转到指定行
    「ctrl」+「g」列出光标所在行的行号。
    「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
    常用 x: 删除光标所在字符,也可以nx,之后几个

shift+r: 进入替换模式,退出按esc,替换模式替换光标所在的字符

末行模式命令

  • 列出行号
    [set nu],取消行号 [set nonu]
  • 跳转到文件某一行
    [#]: 表示数字,按回车键就会跳转
  • 查找字符
    [/关键字]: 先按/键,再输入想寻找的字符,如果这一次不是,可以这一会按n会往后查找
    [?关键字]: 先按?号,再输入想寻找的字符,如果第一次不是想找的,按n会一直往后找
  • 保存文件
    [w]: 保存,可以加!
    [q]: 退出,加!号的意思是强制退出
    [wq]: 保存并退出,可以加!号

底行模式可以创建文件,保存后如果文件不存在会自动创建
底行模式再次打开一个文件,可以分屏操作,也可以创建不存在的文件

vs 文件名
在这里插入图片描述

输入 !cmd
不退出vim执行命令 (执行命令行,编译,运行,查看man)等

4. 配置

配置文件的位置

在目录/etc下面,有个名为vimrc的文件,这个是系统公共的vim配置文件,对所有用户都有小
而在每个用户的根目录下,都可以自己建立一个.vimrc的文件,不存在创建

常用配置选项

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

使用插件

要配置好看的vim,原生的配置可能功能不全,可以选择 安装插件。

安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来
的plugin下的内容拷贝到~/.vim/plugin
在~/.vimrc 中添加: let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let
Tlist_Use_Right_Window=1
安装文件浏览器和窗口管理器插件: WinManager
下载winmanager.zip,2.X版本以上的
解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到
~/.vim/plugin
在~/.vimrc 中添加 let g:winManagerWindowLayout=‘FileExplorer|TagList nmap wm :WMToggle
然后重启vim,打开~/XXX.c或~/XXX.cpp, 在normal状态下输入"wm", 你将看到上图的效果。
更具体移步:点我, 其他手册,请执行 vimtutor 命令。

也可以直接输入命令,按回车自动安装别人上传的配置
点此转到

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

该脚本是git用户Hgtz222创建
需要输入root密码

卸载输入下面命令

bash ~/.VimForCpp/uninstall.sh

打开生成的.vimrc,修改缩进为4,将50-52行的2改为4
在这里插入图片描述

vim配置参考文档
vim从入门到精通

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

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

相关文章

方格分割644--2017蓝桥杯

1.用dfs解决,首先这题的方格图形就很像一个走迷宫的类型,迷宫想到dfs,最中心点视为起点,起点有两个小人在这个方格里面对称行动,直到走出迷宫(一个人走出来了另一个人就也走出来了,而走过的点会…

Vmware Esxi 部署Mac OS虚拟机

Vmware Esxi在创建虚拟机的时候是有Mac OS选项的,但是实际创建时,选择ISO开机后一直反复引导,是有问题的,原因是需要先解锁,需要在ESXI主机上修改配置并重启。 首先找到管理-服务-TSM-ssh,点击启动&#x…

★【二叉搜索树(中序遍历特性)】【 ★递归+双指针】Leetcode 98. 验证二叉搜索树

★【二叉搜索树(中序遍历特性)】【 ★递归双指针】Leetcode 98. 验证二叉搜索树 二叉搜索树 98. 验证二叉搜索树解法1 笨 中序递归遍历为一个数组 然后判断数组是不是升序排列就可以★解法2 不使用数组 递归法 ---------------🎈&#x1f38…

php PhpSpreadsheet 读取日期变数字问题解决

问题描述: 使用PhpSpreadsheet 读取表格数据,日期格式读取后变成数字,如下图: 解决方案: $cell $sheet->getCell(H . $row)->getValue(); $toTimestamp \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimes…

腾轩科技传媒探讨网络整合营销推广的策略和效果

在当今高度信息化的商业环境中,整合营销推广(IMC)已经成为了品牌营销策略的核心。它旨在通过多种渠道和平台,将一致、连贯的品牌信息传达给目标受众,从而增强品牌知名度和忠诚度。腾轩科技传媒将深入探讨整合营销推广的…

【airtest】自动化入门教程(一)AirtestIDE

目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目(web) 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目&#xf…

模拟算法题练习(一)

模拟算法介绍: 模拟算法通过模拟实际情况来解决问题,一般容易理解但是实现起来比较复杂,有很多需要注意的细节,或者是一些所谓很“麻模“的东西。 模拟题一般不涉及太难的算法,一般就是由较多的简单但是不好处理的部…

【算法】最小生成树—Prim算法与Kruskal算法

Prim算法和Kruskal算法都是解决最小生成树问题的经典算法。最小生成树是原图的最小连通子图,它包含原图的全部结点,且保持图连通的所有边代价和最小。一个连通图可能有多个最小生成树。 一、Prim算法 含义 Prim算法,也被称为普里姆算法&…

基于移动端的食堂助餐在线点餐配送系统 uniapp微信小程序

本文从管理员、老人、配送员、食堂商家的功能要求出发,养老助餐管理系统小程序中的功能模块主要是实现老人、配送员、食堂商家、食堂大厅、预约选座、餐号信息、美食信息、美食订单、订单信息、订单配送、订单评价、老人食堂、下单信息、饮食分析。经过认真细致的研…

C语言可以干些什么?C语言主要涉及哪些IT领域?

C语言可以干些什么?C语言主要涉及哪些IT领域? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家…

Docker技术概论(1):Docker与虚拟化技术比较

Docker技术概论(1) Docker与虚拟化技术比较 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

ABAP 发送带EXCEL邮件

前言 没啥特殊需求,就是有个库龄报表用户想整邮件发送 实现 用的最简单的XLS文件作为excel附件发送出去 观察XLS文件的纯文本格式,每列之间用TAB制表符分隔,每行之间用回车符分隔 思路也比较明确,在SAP中实现这种格式&#xf…

.Net利用Microsoft.Extensions.DependencyInjection配置依赖注入

一、概述 为了让接口程序更加模块化和可测试,采用依赖注入的方式调用接口方法。 二、安装Microsoft.Extensions.DependencyInjection 在NuGet里面搜索Microsoft.Extensions.DependencyInjection,并进行安装。 三、代码编写 3.1 创建Service 实现类 /*****************…

Doccano 修复 spacy.gold 的bug

引言 最初只是想把Doccano标注的数据集转换成BIO(类似conll2003数据集)的标注格式; 摘要 可先阅读一下教程:【已解决】关于如何将Doccano标注的文本转换成NER模型可以直接处理的CoNLL 2003格式 装包:pip install doccano-transformer 报错信息 运行…

【前端素材】推荐优质后台管理系统DAdmin平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面,通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面,使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

记录 关于navicat连接数据库报错1045的问题

重装数据库之后就连接不上了 报错1045 而网上的解决方案大都是更改数据库密码,但是我在第一步就被卡住无法更改密码,输入指令也报错,检查的环境变量也没错,经过长时间的试错终于找到解决了办法 解决办法 删除data文件夹 如果无法…

Python:练习:输出int值a占b的百分之几。例如:输入1和4,输出:25%。

案例: 输出int值a占b的百分之几。例如:输入1和4,输出:25%。 思考: 所有的一步步思考,最后综合起来。 首先,确定 输出,那么就用input,而且是int值,所以肯定…

C++设计模式_创建型模式_工厂方法模式

目录 C设计模式_创建型模式_工厂方法模式 一、简单工厂模式 1.1 简单工厂模式引入 1.2 简单工厂模式 1.3 简单工厂模式利弊分析 1.4 简单工厂模式的UML图 二、工厂方法模式 2.1 工厂模式和简单工厂模式比较 2.2 工厂模式代码实现 2.3 工厂模式UML 三、抽象工厂模式 3.1 战斗场景…

MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸

编辑:ll MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸 型号:MDS300-16 品牌:ASEMI 封装:M25 最大重复峰值反向电压:1600V 最大正向平均整流电流(Vdss):300A 功率(Pd):大功率 芯片…

Flink——芒果TV的实时数仓建设实践

目录 一、芒果TV实时数仓建设历程 1.1 阶段一:Storm/Flink JavaSpark SQL 1.2 阶段二:Flink SQLSpark SQL 1.3 阶段三:Flink SQLStarRocks 二、自研Flink实时计算调度平台介绍 2.1 现有痛点 2.2 平台架构设计 三、Flink SQL实时数仓分…