[Linux基础开发工具---vim]关于vim的介绍、vim如何配置及vim的基本操作方法

news2024/12/4 17:03:21

一、vim及其三种模式的简单介绍

        Vim是一个类似于Vi的文本编辑器,不同的是vimvi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,如多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等。

这篇文章我们重点介绍vim的三种模式(vim不止有三种模式欧,这三种模式只是最常用的 ):

  • 命令模式(command mode)
  • 底行模式(last line mode)
  • 插入模式(insert mode)

想要查看当前vim的所有模式可以在底行模式下输入

help vim-modes

这个文档涵盖vim的所有模式,和相应模式的介绍,图片仅展示了几种模式,文档可上下自由翻看

1.1 命令模式(command mode)

        当我们每次打开默认的模式就是命令模式,该模式下不能正常输入,通常用来制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

模式的辨别可以通过左下角来区分

1.2 插入模式(insert mode)

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

 再插入模式下左下角会有INSERT的字样,在这个模式下我们就可以进行代码编写了

1.3底行模式(last line mode)

      底行模式一般用来控制文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 

在命令模式下输入[ shift + ; ] 也就是[ : ]冒号即可进入底行模式

在底行模式下按 [ESC] 会返回命令模式

底行模式左下角是COMMAND的字样

二: vim如何配置

        若vim没有进行配置,使用其编写代码就像是在记事本中写代码一样,没有补齐代码、语法高亮等功能,开发效率非常低下,接下来介绍如何将vim打造成得心趁手得利器

2.1 vimrc文件

         在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,可以通过在这个文件中配置选项使vim功能得到改善
        配置目录/etc/下的vimrc文件可以影响到所有用户,若用户想配置自己的vim,可以在自己的家目录下创建一个名为 .vimrc的私有文件
实操展示:

1.首先vim .vimrc 打开创建的.vimrc文件,按 [ i ] 进入插入模式,输入:

 set nu           显示行号                                              
2.    [ESC]进入命令模式,输入 [ : ]冒号进入底行模式,在输入 :wq保存退出文件
3.重新进入vim

2.2 vim一键配置

自己通过增加想要的选项可以配置出自己喜欢的vim环境,但是这个过程比较繁琐,因此博主找到了一个功能齐全的vimrc文件,大家直接在命令行输入下方指令,按提示输入root密码即可:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
如果配置完发现自己不喜欢,可以输入下面指令卸载:
bash ~/.VimForCpp/uninstall.sh

三、vim基本操作方法

3.1 模式切换

1. 命令模式切换插入模式

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

3.插入模式、底行模式切换命令模式

[ ESC ] 

                           

3.2 命令模式命令

1.移动光标

可以通过 ↑ ↓ ← →  控制光标移动,也可以通过字母:

  • [ h ] :光标向左移动
  • [ j ] :光标向下移动
  • [ k ] :光标向上移动
  • [ l ] :光标向右移动
  •   [ G ]  : 移动到文章的最后
  • [gg ] : 进入到文本开始
  • 按  [ #l ]  :光标移动到该行的第#个位置
2.删除文字 
  • 「x」:每按一次,删除光标所在位置的一个字符
  • 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  • 「dd」:删除光标所在行
  • 「#dd」:从光标所在行开始删除#行
3.复制 
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  •   [ p ]  : 粘贴
 4.替换
  • 「r」:替换光标所在处的字符
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
5.撤销上一次操作 
  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以    执行多次回复。
  • 「ctrl + r」: 撤销的恢复
6.跳至指定行 
  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

3.3 底行模式命令

1.跳到文件中的某一行

「#」 :「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15 , 再回车,就会跳到文章的第15行。
 2.查找字符
  • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按[ n ]会往后寻找到您要的关键字为止。
  • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
 3.离开vim
  • 「w」: 在冒号输入字母「w」就可以将文件保存起来
  •   [ q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
  • 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
 4.执行shell命令

!command : 输入一个!后面紧跟想在shell执行的命令,可以不退出vim执行

5.多文件编辑 

vs filename : 在已经使用vim时,可以通过输入vs+要编辑的文件名可以同时编辑多个文件,按ww可在多文件中自由切换

 3.4 批量化注释和去注释

批量化注释:

1.citrl+v进入块视图模式,按[ h ] [ j ] [ k ] [ l ],选择要注释的区域

2.shitf+i进入编辑模式,输入//

3.按esc

批量化去注释:

1.citrl+v进入块视图模式,按[ h ] [ j ] [ k ] [ l ],选择要去注释的区域(仅包含//)

2.按d删除

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

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

相关文章

如何使用 WebRTC 与 Kurento 建立视频会议 App

本文作者 WebRTC Ventures 工程师。在 RTC 2018 实时互联网大会上,WebRTC Ventures 的资深软件工程师,将围绕 WebRTC 开发带来经验分享。欢迎访问RTC 开发者社区,与更多WebRTC开发者交流经验。 了解 WebRTC 如何工作的一种简单方式是通过学习…

SpringBoot的默认组件扫描

本篇博客主要探究:为什么SpringBoot项目中我们没有配置组件扫描的包,为什么它会默认扫描启动类所在的包? 一、访问与启动类所在同一包下的接口 我们先来看一个简单的接口: 我们可以观察到,HelloController这个类处在…

如何做接口测试?看完这个图让你清楚了解接口测试

01 通用的项目架构 02 什么是接口 接口:服务端程序对外提供的一种统一的访问方式,通常采用HTTP协议,通过不同的url,不同的请求类型(GET、POST),不同的参数,来执行不同的业务逻辑…

大数据学习之Redis、从零基础到入门(二)

二、Redis安装配置 1. VMWare本地虚拟机 VMWare准备的为64位 查看自己的VMWare是32位还是64位 getconf LONG_BIT 2. Redis的安装 2.1 系统选择 选择Linux系统 2.2 Linux版安装 2.2.1 Linux环境安装Redis必须先具备gcc编译环境 ①什么是gcc gcc是linux下的一个编译程序&…

应急响应-Windows-进程排查

进程(process)是计算机中的程序关于某数据集合上的一次运动活动,是系统进行资源分配和调度的基本单位,是操作系统结果的基础。在早期面向进程结构中,进程是线程的容器。无论是在Windows系统还是Linux系统中&#xff0c…

Vue 3.0中Treeshaking特性(详细解析)

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination 简单来讲,就是在保持代码运行结果不变的前提下,去除…

vue项目中如何使用SVG图标

IconFont使用的不足:图标添加、修改、删除以后在线链接需要更新离线资源需要重新下载项目代码需要同步更新。 在项目不断更新和迭代的过程中,图标的增减变化还没有稳定的情况下,开发人员的工作效率会明显下降。 那么有没有一个图标应用方式…

利用大数据靶向肿瘤细胞的基因突变

在亚利桑那健康科学大学,研究人员正在应用大量数据,试图更多地了解这种突变、其变异以及任何可能有助于他们治疗患者的相关因素。 癌症的潜在原因很多,从食物和环境到创伤和感染。在遗传学方面,研究人员发现,有一种基因…

Unity中实现合理塔防寻路机制

前言 在一款TD游戏中,最重要的单位就两大类:防御塔(Tower)和敌人单位(Enemy)。在处理敌人单位的AI行为时,最基本也是最重要的就是自动寻路。在各式TD游戏中,防御塔的攻击方式以及敌人单位的Buff机制往往是能做出差异化的地方;而在寻路问题上,几乎是没有差异的,面对…

Springboot注解@Aspect(一)之@Aspect 作用和Aop关系详解

目录 Aspect的使用 配置 作用 通知相关的注解 例子 结果: Aspect作用和Spring Aop关系 示例 标签表达式 Aspect的使用 配置 要启用 Spring AOP 和 Aspect 注解,需要在 Spring 配置中启用 AspectJ 自动代理,但是在 Spring Boot 中&a…

shell脚本-函数及数组

一.函数 1.函数的作用 语句块定义成函数约等于别名,定义函数,再引用函数 封装的可重复利用的具有特定功能的代码 2.函数的基本格式 法一: [function] 函数名 {命令序列[return x] #使用return或者exit可以显式的结束函数 }法二&…

对比一下Confluence,其实HelpLook搭建知识库也不错

随着越来越多的企业转向远程工作和分散团队,寻找一种适合团队协作和知识共享的工具变得更为重要。HelpLook和Confluence是两个我认为比较相似的知识库软件,它们都提供了丰富的功能和卓越的用户体验。接下来就对HelpLook和Confluence进行详细的介绍和对比…

【Spring 篇】MyBatis DAO层实现:数据之舞的精灵

欢迎来到MyBatis DAO层的神奇世界,这里将为你揭示DAO层的奥秘,让你成为数据之舞的精灵。无论你是初学者还是想要深入了解DAO层的开发者,这篇博客将引导你踏入MyBatis DAO层的王国,一探其中的精彩。 舞台1:DAO层的角色…

【大数据面试题】HBase面试题附答案

目录 1.介绍下HBase 2.HBase优缺点 3.介绍下的HBase的架构 4.HBase的读写缓存 5.在删除HBase中的一个数据的时候,它是立马就把数据删除掉了吗? 6.HBase中的二级索引 7.HBase的RegionServer宕机以后怎么恢复的? 8.HBase的一个region由哪些东西组成? 9.…

安科瑞电化学储能电能管理系统解决方案——安科瑞赵嘉敏

1 概述 在我国新型电力系统中,新能源装机容量逐年提高,但是新能源比如光伏发电、风力发电是不稳定的能源,所以要维持电网稳定,促进新能源发电的消纳,储能将成为至关重要的一环,是分布式光伏、风电等新能源消…

LeetCode 40.组合总和 II

组合总和 II 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 方法一、回溯 由于题目要求解集…

第十九周周报

文章目录 摘要文献阅读DeepHuman: 3D Human Reconstruction from a Single Image(ICCV 2019)贡献摘要网络结构总结 PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization贡献摘要网络结构总结 Animated 3D human avatars from a single imag…

多项式乘法逆(p4238 NTT)

题目路径&#xff1a; https://www.luogu.com.cn/problem/P4238 思路&#xff1a; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<cstring> #include<cmath> #include<ctime> #include&l…

有什么办法可以让模糊的老照片变清晰?这几个方法收藏好!

照片盒子里的老照片&#xff0c;宛如一扇陈旧的时光之门&#xff0c;等着我们去开启。那些尘封的记忆&#xff0c;似乎已经被时间遗忘&#xff0c;但当我们轻轻拂去尘埃&#xff0c;那些熟悉的画面便再次浮现在眼前。然而&#xff0c;岁月无情&#xff0c;这些宝贵的瞬间在时间…

node.js漏洞总结

js开发的web应用和php/Java最大的区别就是js可以通过查看源代码的方式查看到编写的代码&#xff0c;但是php/Java的不能看到&#xff0c;也就是说js开发的web网页相当于可以进行白盒测试。 流行的js框架有&#xff1a; 1. AngularJS 2. React JS 3. Vue 4. jQuery 5. Backbone…