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

一、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.mfbz.cn/a/350533.html

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

相关文章

力扣1143. 最长公共子序列

动态规划 思路: 假设 dp[i][j] 是 text1[0:i] 和 text2[0:j] 最长公共子序列的长度;则 dp[0][j] 0,(空字符串和任何字符串的最长公共子序列的长度都是 0);同理 dp[i][j] 0;状态转移方程&…

List使用addAll()方法报错

当使用Arrays.asList方式创建出来的list&#xff0c;在使用addAll方法的时候报错如下&#xff1a; Exception in thread "main" java.lang.UnsupportedOperationException 这个问题记录下&#xff0c;以防以后忘记。 下面是代码 List<String> objects new A…

股票交易维度和概念

股票&#xff1a;股份公司为筹集资金而发行给各个股东作为持股凭证并借以取得股息和红利的一种有价证券 好处&#xff1a;分红、送股配股、交易收益、本金少、易变现、避免货币贬值 金融标的投资风险与收益 股票分类 蓝筹股 经营业绩长期稳定增长的大公司&#xff0c;一般是…

【C++】入门基础

前言&#xff1a;C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;因此从今天开始们将进入&#xff23;的学习。 &#x1f496; 博主CSDN主页:…

Java如何对OSS存储引擎的Bucket进行创建【OSS学习】

在前面学会了如何开通OSS&#xff0c;对OSS的一些基本操作&#xff0c;接下来记录一下如何通过Java代码通过SDK对OSS存储引擎里面的Bucket存储空间进行创建。 目录 1、先看看OSS&#xff1a; 2、代码编写&#xff1a; 3、运行效果&#xff1a; 1、先看看OSS&#xff1a; 此…

老师打学生违法吗该怎么处理

老师打学生&#xff1a;一个需要深入探讨的敏感话题。老师&#xff0c;肩负着教书育人的重任&#xff0c;面对学生的时候&#xff0c;法律、职业道德和个人修养常常需要我们做出权衡。那么&#xff0c;当老师打了学生这一行为发生时&#xff0c;我们该如何看待和处理呢&#xf…

蓝桥杯备战——6.串口通讯

1.分析原理图 由上图我们可以看到串口1通过CH340接到了USB口上&#xff0c;通过串口1我们就能跟电脑进行数据交互。 另外需要注意的是STC15F是有两组高速串口的&#xff0c;而且可以切换端口。 2.配置串口 由于比赛时间紧&#xff0c;我们最好不要去现场查寄存器手册&#x…

HCIP-BGP实验

实验拓扑 实验需求 1.r1上有两个换汇分别为192.168.1.0/24和192.168.2.0/24只允许学到汇总和1.0 2.r7上有两个还回172.16.1.0/24和172.16.2.0/24要求全部宣告&#xff0c;但是只有2.0可以通过 3.全网可达 实验思路 配置IP地址 BGP配置 实验步骤 配置IP地址 BGP配置 在…

驱动开发-系统移植

一、Linux系统移植概念 需要移植三部分东西&#xff0c;Uboot ,内核 &#xff0c;根文件系统 &#xff08;rootfs&#xff09; &#xff0c;这三个构成了一个完整的Linux系统。 把这三部分学明白&#xff0c;系统移植就懂点了。 二、Uboot uboot就是引导程序下载的一段代…

力扣hot100 轮转数组 一题多解 翻转数组

Problem: 189. 轮转数组 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public void rotate(int[] nums, int k){int n nums.length;k k % n;reverse(…

[C++开发 02_3/5 _ C++中函数(95)]

知识点3&#xff1a;函数提高 3.1函数默认参数 3.2函数占位参数 3.3函数重载 3.1.1函数重载概述 3.1.2函数重载注意事项 引用作为重载条件 函数重载碰到默认参数

一个新的springboot-vue项目如何启动起来

一个新的springboot-vue项目如何启动起来 1.导入mysql 打开yml文件修改数据库密码 名称 用户名 2.打开pom.xml配置maven依赖 尽量换成自己使用过的版本号&#xff0c;或者打开中央仓库搜索相关内容版本号&#xff1a;https://central.sonatype.com/ 注解为黄色 说明工程…

Chrome单独配置代理的方法

Windows Windows上单独对Chrome设置代理&#xff0c;需要在启动时传递参数&#xff0c;具体步骤如下。 在Chrome浏览器的快捷方式上右击&#xff0c;进入属性。在 快捷方式 标签下找到 目标 项目&#xff0c;在最后添加 –proxy-server“socks5://xxx.xxx.xx.xx:xxxx” 如果要…

python爬虫采集下载中国知网《出版来源导航》论文文献下载_PDF文档_数据采集知网爬虫论文Python3

时隔一年&#xff0c;很久没更新博客了。今天给大家带来一个python3采集中国知网 &#xff1a;出版来源导航 这个是网址是中国知网的&#xff0c;以下代码仅限于此URL&#xff08;出版来源导航&#xff09;采集&#xff0c;知网的其他网页路径采集不一定行&#xff0c;大家可以…

部署Filebeat+Kafka+ELK 集群

目录 Kafka 概述 为什么需要消息队列&#xff08;MQ&#xff09; 使用消息队列的好处 消息队列的两种模式 Kafka 定义 Kafka 简介 Kafka 的特性 Kafka 系统架构 在zookeeper集群的基础上部署 kafka 集群 部署zookeeper集群 部署kafka集群 下载安装包 安装 Kafka Ka…

【自动化测试】读写64位操作系统的注册表

自动化测试经常需要修改注册表 很多系统的设置&#xff08;比如&#xff1a;IE的设置&#xff09;都是存在注册表中。 桌面应用程序的设置也是存在注册表中。 所以做自动化测试的时候&#xff0c;经常需要去修改注册表 Windows注册表简介 注册表编辑器在 C:\Windows\regedit…

Pandas应用-股票分析实战

股票时间序列 时间序列&#xff1a; 金融领域最重要的数据类型之一 股价、汇率为常见的时间序列数据 趋势分析&#xff1a; 主要分析时间序列在某一方向上持续运动 在量化交易领域&#xff0c;我们通过统计手段对投资品的收益率进行时间序列建模&#xff0c;以此来预测未来的收…

ECharts 中 Legend自定义可以使用svg标签

效果图&#xff1a; legend图例加载svg标签 在ECharts中&#xff0c;图例(legend)组件的formatter属性允许你自定义图例文本的格式。但是&#xff0c;formatter属性不支持直接加载SVG标签或Html。它接受一个字符串或者一个函数作为输入&#xff0c;并不能解析或渲染SVG。 如果…

白居易上班摸鱼闲不住,花非花,雾非雾

所有的成功都不是偶然的&#xff0c;一定有不为人知的付出。白居易&#xff0c;字乐天&#xff0c;号香山居士、醉吟先生。白居易小时候读书读到口舌生疮&#xff0c;练字练到手生茧子。 白居易的诗&#xff0c;通俗易懂&#xff0c;不识字的老妇人都听得懂。白居易写了大约30…

python小项目:口令保管箱

代码&#xff1a; #! python3 # python 编程-----口令保管箱passwords{emails: F7minlBDDuvMJuxESSKHFhTxFtjVB6,blog:VmALvQyKAxiVH5G8v01if1MLZF3sdt,luggage:12345,} import sys,pyperclip if len(sys.argv)<2:print(usage:python python3文件[accout]-copy accout pass…
最新文章