Linux编辑器:vim的简单介绍及使用

 目录

1.什么是vim 

2.vim的基本概念

3.vim 的基本操作

4. 各模式下的命令集

4.1 正常模式命令集 

4.2 末行模式命令集

5.补充

5.1 vim支持多文件编辑

5.2 vim 的配置

1.vim 配置原理

2. 常用简单配置选项:

3. 使用插件


1.什么是vim 

Vim 是从 vi 发展出来的一个文本编辑器,即对文本进行增删改查。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。连 vim 的官方网站

(welcome home : vim online) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。在这篇文章中,统一按照vim来进行讲解,下图为vim的键盘图,后面命令讲解中可以对照看一下。

2.vim的基本概念

vim的三种模式(其实有好多模式,先掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1.正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

2.插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

3.末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes,会一共有12种模式:six BASIC modes和six ADDITIONAL modes。

各个模式之间的转换方式:

最初进入vim是命令模式。如果不知道自己在什么模式下,无脑Esc退回命令模式即可。

视图模式和替换模式我们下面会提到。

3.vim 的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

命令行输入:vim test.c
不过有一点要特别注意,就是你进入vim之后,是处于[命令模式],你要切换到[插入模式]才能够输入文字。

[正常模式] 切换至 [插入模式]

输入 a (到光标的后一个位置)
输入 i (到当前光标位置)
输入 o  (到光标的下一行,会另开一行)

[插入模式] 切换至 [正常模式]

目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

[正常模式] 切换至 [末行模式]

「shift + ;」, 其实就是输入「:」
退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
: w (保存当前文件)

4. 各模式下的命令集

因为插入模式就是直接输入代码,这里不做讲解,知道 Esc 退出插入模式到正常模式即可。下面命令中经常使用的我会用红色进行标记。

4.1 正常模式命令集 

插入模式

  • 「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

从插入模式切换为命令模式

  • 「ESC」键。

移动光标

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
  • 「G」:移动到文章的最后
  • 「 $ 」:移动到光标所在行的“行尾”
  • 「^」:移动到光标所在行的“行首”
  • 「w」:光标跳到下个字(单词)的开头,支持跨行
  • 「e」:光标跳到下个字(单词)的字尾,支持跨行
  • 「b」:光标回到上个字(单词)的开头,支持跨行
  • 「#l」:光标移到该行的第#个位置,如:5l,56l
  • [gg]:进入到文本开头
  • [shift+g]:进入文本末端 
  • 「ctrl」+「b」:屏幕往“后”移动一页
  • 按「ctrl」+「f」:屏幕往“前”移动一页
  • 按「ctrl」+「u」:屏幕往“后”移动半页
  • 按「ctrl」+「d」:屏幕往“前”移动半页

删除(删除后都可以按p进行粘贴(即剪切),或者按u撤销)

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

复制

  • 「yw」:将光标所在之处到字尾的字符(即一个单词)复制到缓冲区中。
  • 「#yw」:复制#个字(单词)到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • 「#p」:连续复制#次

替换

  • 「r + 'c'」:用 'c' 替换光标所在处的字符。
  • 「R」:替换光标所到之处的字符,即进入替换模式直到按下「ESC」键为止。

撤销上一次操作

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

更改

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

跳至指定的行

  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首

查找

  • 「#」:即shift + 3 ,查找光标所在单词的同名单词,按「n」会往后寻找到您要的关键字。

注释  

  • 「ctrl + v ( V ) -> j / k(两个按键上下选中区域) -> shift + i ( I ) -> // -> Esc 这里有点长,V就是进入视图模式,j / k 向上或向下选中区域 ,输入 I 进入插入模式输入 // ,再Esc退出,就会发现刚才选中的区域已经被注释。
  • ctrl + v (V) -> hijk 选中区域 -> d 」这是取消注释,V 进入视图模式,因为注释有两列,进入视图时光标要先在注释上,然会选中两列注释,d删除即可。这种方法也可以删除其他内容。
  • 上面两种方式是对 C++ // 注释设置的方法,用C语言注释风格 /* */ 直接输入也是可以的。

4.2 末行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

列出行号

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

跳到文件中的某一行

  • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。也可在没有进入vim时,在命令行输入
    vim 文件名 +行号

    这样在进入vim后光标直接会在你输入的行。

查找字符

  • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字(有相同的多个关键字)不是您想要的,可以一直按「n」(next)会往后寻找到您要的关键字为止。
  • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

问题:/ 和 ?查找有和区别?

/ 是从上往下找;?是从下往上找

保存文件

  • 「w」: 在冒号输入字母「w」就可以将文件保存起来,如果编译器识别你修改的认为重要的信息,会组织你保存,可以加一个「!」强制强制保存。

离开vim

  • 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
  • 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。这里也可加「!」强制保存离开。

5.补充

5.1 vim支持多文件编辑

在底行模式下输入 vs 文件名 即可,可以输入多个,如果文件名不存在,会打开一个新文件,这个文件必须在底行输入w才会真正的创建,否者仅仅退出q后这个文件还是不会创建。也可在没有进入vim 时直接  vim 新文件名,记得退出vim时保存即可创建新文件。

  • 「ctrl + ww」光标进行文件跳转,光标在哪个文件,底行模式控制哪个文件。

5.2 vim 的配置

1.vim 配置原理

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,普通用户在自己的家目录下,/home/用户名,通常已经存在一个.vimrc文件,可以 ll -a 命令查看隐藏文件,如果不存在,则创建之。
  • 切换用户成为自己 ,进入自己的主工作目录,打开自己目录下的.vimrc文件,执行 vim .vimrc 。

原理: vim 在启动时,会自动扫描当前用户的家目录下的 .vimrc ,让 .vimrc 内部选项生效,所以我们向 .vimrc 里面添加更多的配置选项即可。

2. 常用简单配置选项:

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

3. 使用插件

要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,在网上查找喜欢的插件即可,我使用的是VimForCpp,大家可以按照上面的安装方法进行安装。

本篇结束!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Labview实现wav音乐播放

准备音频文件:将要播放的声音文件准备好,是.wav格式。 图形化如下: 内部逻辑如下:

医学影像PACS系统:一种用于存储、管理和传输医学影像数据的系统

医疗软件中的影像归档与传输系统软件(Picture Archiving and Communication System,简称PACS)是一种用于存储、管理和传输医学影像数据的系统。 PACS是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像&#xff…

Java 设计模式——组合模式

目录 1.概述2.结构3.实现3.1.抽象构件3.2.容器构件3.3.叶子节点3.4.测试 4.分类5.使用场景6.优点 1.概述 (1)大家对于上面这个图片肯定非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可…

全院级不良事件管理系统源码,事件上报、流转审批、数据统计、原因分析、措施制定

不良事件报告管理系统源码 事件上报、流转审批、数据统计、原因分析、措施制定 医院不良事件管理系统,支持医疗管理、护理管理、药品管理、医技管理、器械管理、输血管理、院感管理、职业防护管理、信息管理、后勤管理、治安管理等事件,内容齐全&#xf…

Java: 实现电影信息管理系统 (javaBean)

文章目录 电影信息系统1. 将JavaBean数据类封装好2.业务逻辑类3.测试类(main函数类) 电影信息系统 需求: 展示系统中的全部电影(每部电影展示、名称、平分)。允许用户根据电影编号(id)查询出某…

霸榜“双11”,高端文创新品发布即售罄,剑南春大促节点再传佳绩

执笔 | 洪大大 编辑 | 萧 萧 作为一年一度的重要促销大节,“双11”线上购物已成为各大品牌奋战的重要战场。而在今年,剑南春也是再一次拔得头筹。 在刚刚出炉的“双11”战报中,天猫剑南春官方旗舰店以超高人气和销售量获得白酒行业交易指…

大促期间治理品牌窜货的诀窍

渠道问题中,最常见的是窜货,窜货还会伴随低价,会影响其他经销商的利益,同时窜货还可能带来假货,所以治理窜货是品牌的责任,对于出货量巨大的双十一大促,品牌更应重视对窜货问题的治理。 力维网络…

开播4分钟就被限流的直播回顾!

虽然在双11正式开播之前做过几轮测试,但我们还是踩了坑! 而离我们正式开播,才仅仅4分钟而已! 双11直播回顾 在双11当天的19:15分,我们开始播放7分半的开播视频,完播两轮之后正好是计划的开播时间。 但…

ssm+vue的课堂管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的课堂管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

京东数据软件系统:京东销量和销额数据在哪里看?

京东平台店铺众多,行业同行也数不胜数,若想要在平台中更好的运营店铺,品牌需要做好数据分析。下面结合鲸参谋电商数据分析平台这一数据分析工具,我们来看一看品牌在做数据分析时需要注重哪些数据维度。 *行业数据 京东商家通过鲸…

windows qos api使用示例

简介 本文给出C版以及Rust版调用windows API实现QOS的示例,并提出一些注意事项。QOS可以用来区分socket 优先级、实现带宽控制等诸多功能。 UDP版本 该示例的重要部分是客户端应用程序。客户端代码的工作方式如下: 1. 通过套接字连接到目标 IP 地址。…

如何提取信号的包络

包络提取 如何提取信号的包络。 创建双边带振幅调制信号。载波频率为 1 kHz。调制频率为 50 Hz。调制深度为 100%。采样率为 10 kHz。 t 0:1e-4:0.1; x (1cos(2*pi*50*t)).*cos(2*pi*1000*t);plot(t,x) xlim([0 0.04]) 使用 hilbert 函数提取包络。包络是由 hilbert 计算的…

upload-labs关卡6(基于黑名单的大小写绕过)通关思路

文章目录 前言一、回顾靶场第五关二、靶场第六关需要了解的知识点1、window系统大小写不敏感2、linux系统大小写敏感 三、靶场第六关通关思路1.看源代码2.通过bp进行大小写绕过 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场…

大数据-之LibrA数据库系统告警处理(ALM-12041 关键文件权限异常)

告警解释 系统每隔一个小时检查一次系统中关键目录或者文件权限、用户、用户组是否正常,如果不正常,则上报故障告警。 当检查到权限等均正常,则告警恢复。 告警属性 告警ID 告警级别 可自动清除 12041 严重 是 告警参数 参数名称 …

【ATTCK】MITRE Caldera-插件

CALDERA是一个由python语言编写的红蓝对抗工具(攻击模拟工具)。它是MITRE公司发起的一个研究项目,该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的,能够较真实地APT攻击行为模式。 通过CALDERA工具,安全…

初始MySQL(二)(表的增删查改)

目录 修改表 CRUD(增删改查) insert语句(表中增加数据) update语句(修改表中的数据) delete删除语句 select语句 修改表 添加列 ALTER TABLE tablename ADD (column datatype [DEFAULT expr] [, column datatype] ...); 修改列 ALTER TABLE tablename MODIFY (column …

【杂记】WinServer 2019解决net3.5无法安装问题

1. 问题描述 由于QA环境中的OSCE V16服务端是部署在虚拟机Windows Server 2019上,当进行数据库的迁移操作时,操作系统会提示缺少.NET Framework 3.5组件(SQL Server数据库系统的运行需要依靠.NET Framework 3.5,但是Windows Server2019默认情…

VINS-Mono-后端优化 (四:边缘化原理)

滑窗中固定只能有11帧,当来了新的帧的时候旧的帧就需要抹掉,但是不能直接把旧的帧的全部信息抹掉,因为旧的帧的经历过11次优化,其地图点中的优化信息是有用,边缘化的操作就是为了只把最旧帧的变量去掉,但是…

iManager云套件支持配置kingbase

作者 yangjunlin 前言 越来越多的涉密单位对于信创环境的要求逐渐升高,服务应用对国产数据库的依赖性也在提高,针对超图iManager for k8s产品中的开源数据库替换为kingbase等国产化数据库的客户需求和场景也就随之而来,因此本文将带着读者一步…

【springboot】Failed to start bean ‘webServerStartStop‘;

新同事新建了一个项目springboot项目,启动时候报错。 具体错误如下: Failed to start bean webServerStartStop; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server 未能启动bea…