Linux工具篇Vim

分享Linux的一些基础的工具,今天分享的就是Linux下的vim,vim其实是一个编辑器。我们可以理解为Windows下的一个记事本。

这个是vim的键盘图。

Linux编辑器-vim使用

vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim vi 的升级版本,它不仅兼容 vi 的所有指令,而且 还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window mac os、 windows。这章内容就是来分享我们vim的一些基本操作。

vim的基本概念

vim我们可以分为三种最基本的模式,当然也是有我们的第四种和第五种的模式,但是最常用的三种模式就是命令模式(vim一进去的模式),底行模式,插入模式这三种,来给大家一一演示这三种模式需要怎么样才能进入。

首先我们需要创建一个文件我们暂且叫做为test.c,可以用touch的命令。但是也可以直接进行创建,(vim test.c)这里建议是先是创建出一个test.c文件,然后再进行vim打开这个文件。

 

因为我的vim是配置过的·,但是也不是很影响我们来看,首先我们现在看到的就是我们的命令模式,如果要进入插入模式可以直接摁键盘上的 i   就进入插入模式,这个时候我们就可以在里面写一些基本的内容,和记事本的效果是一样的。

我们可以看到左下角是一个Insert表示的就是我们已经进入插入模式了,这个时候就可以写内容,当然我们的记事本是来写代码的,而不是像小编这样“无理取闹”的。

如果我们要退出插入模式进入命令模式就可以直接摁ESc这样就可以退出到命令模式,同样我们改怎么进入底行模式呢,我们可以摁键盘上的shift + ;,其实就是大写的冒号。

输入命令wq就可以退出vim这个编辑器了。

 快速来写一个代码

我们可以用vim在test.c中写上。

[tjl@hecs-67680 2_16]$ cat test.c 
#include<stdio.h>int main()
{printf("hello Linux\n");return 0;
}

然后进入命令模式。

命令模式的概念

输入指令来进行对文本的控制

首先进入vim 我们vim test.c

然后进行的操作是(首先是要确保我们进入的是命名模式)然后yy一下(意思就是复制该行)

在p一下,就在该行的下一行进行粘贴,我们可以在他们的前面加上数字来表示要复制几行或者粘贴几行,然后u是代表撤销上一动作。

n+yy:复制n行,单个yy就是复制当前行

n+p:粘贴在当前行的下一行可以粘贴几个这样的复制

u:撤销上一动作

n+dd:剪贴功能

shift+4:移动到改行的末尾位置

shift+6:移动到改行的开始位置

gg:定位当文本最开始的位置

shift+g:定位到文本结束的位置

n+shift+g:定位到准确的行数

之前讲过的是上下左右键我们是可以按照键盘上的上下左右是可以直接来进行操作的,但是其实以前是没有这个我们也可以使用hjkl来进行上下左右的控制(推荐)

左 :h

右:l

上:k

下:j

可以带n

我们这样也可以来使用上下左右的控制,这个比较原生。

我们也可以一个单词一个单词的移动在这行

先ESc进入命令模式

w就是一个单词一个单词往后移动

b就是一个单词一个单词往前移动

还有就是大小写的转换

shift+` 也就是~.

当我们写道一半的时候想去删去中间字符的内容的时候

我们可以使用x进行单字符删除,这是删除光标之后的字符,当然也是可以删除光标之前的字符,比如我们可以加上shift的时候就可以删除光标前面的字符了。

替换模式

shift + r :也就是大小的R,就可以一直替换 ,当然也可以直接r但是是单个字符,我可以在前面加上n

插入模式

进入插入模式有三种方式,可以是i直接进入插入,就是光标的位置,当然也是可以o进入插入模式,但是是另起一行,我们也可以是a进入插入模式,但是是在光标之后,也就是光标会往后移动一位。

退出插入模式进入命令模式就是esc

底行模式 

进入底行模式之后的操作可以是

wq:保存并退出

/内容:进行查询会产生光亮

!指令,可以直接进行

q!:强制的退出

补充:我们只能从命令模式进入其他的模式,不能从其他模式到另一模式

比如替换模式不能进入插入模式,底行模式不能进入插入模式。所以后面你不知道在那个模式中,你可以直接esc进入到命令模式就能解决问题了。

补充命令模式直接退出vim

shift+zz就可以了 

注释和去注释的方法:首先进入命令模式然后ctrl+v,如果我们要注释的化,可以先选中注释的区域用hjkl来操作,也可以在前面加上数字,然后shift+i,然后再光标闪动的地方进行注释,之后就是esc两下就可以注释了,去注释也是ctrl+v,然后选中区域,记住是用hjkl选中,之后的操作就是d一下就可以了。

配置 Vim

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

懒人配置方法。

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

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

相关文章

前端基础自学整理|DOM树

DOM&#xff0c;文档对象模型&#xff08;Document Object Model&#xff09;&#xff0c;简单的说&#xff0c;DOM是一种理念&#xff0c;一种思想&#xff0c;一个与系统平台和编程语言无关的接口&#xff0c;一种方法, 使 Web开发人员可以访问HTML元素&#xff01;不是具体方…

K8S故障处理指南:网络问题排查思路

1. 前言 对于私有化环境&#xff0c;客户的网络架构&#xff0c;使用的云平台存在着各种差异&#xff0c;K8S网络可能会出现各种问题&#xff0c;此文着重讲解遇到此种问题的排查方法和思路&#xff0c;不会涉及相关网络底层技术描述. 环境说明 由于我们的k8s网络组件默认使…

gitlab的使用

前一篇文章我们已经知道Git人人都是中心&#xff0c;那他们怎么交互数据呢&#xff1f; • 使用GitHub或者码云等公共代码仓库 • 使用GitLab私有仓库 目录 一、安装配置gitlab 安装 初始化 这里初始化完成以后需要记住一个初始密码 查看状态 二、使用浏览器访问&#xf…

18.贪心算法

排序贪心 区间贪心 删数贪心 统计二进制下有多少1 int Getbit_1(int n){int cnt0;while(n){nn&(n-1);cnt;}return cnt; }暴力加一维前缀和优化 #include <iostream> #include <climits> using namespace std; #define int long long const int N2e510; in…

Qt 场景(QGraphicsScene)自绘可自由变换与移动的图元(QGraphicsObject)

文章目录 效果图矩形四个角矩形 效果图 在scene上绘制一个图元QGraphicsObject的矩形&#xff0c;可以自由拖动且拖动四个角可以自由变换矩形需要如下处理。 矩形四个角 四个角的点需要独立处理继承于QGraphicsObject,当我们点击时拖动时发送信号给矩形&#xff0c;进行矩形变…

猫头虎分享已解决Bug || Web服务故障:WebServiceUnavailable, HTTPServerError

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

记录解决uniapp使用uview-plus在vue3+vite+ts项目中打包后样式不能显示问题

一、背景 从 vue2uview1 升级到 vue3vitetsuview-plus ,uview组件样式打包后不显示&#xff0c;升级前uview 组件是可以正常显示&#xff0c;升级后本地运行是可以正常显示&#xff0c;但是打包发布成H5后uview的组件无法正常显示&#xff0c;其他uniapp自己的组件可以正常显示…

PacketSender-用于发送/接收 TCP、UDP、SSL、HTTP 的网络实用程序

PacketSender-用于发送/接收 TCP、UDP、SSL、HTTP 的网络实用程序 PacketSender是一款开源的用于发送/接收 TCP、UDP、SSL、HTTP 的网络实用程序&#xff0c;作者为dannagle。 其官网地址为&#xff1a;https://packetsender.com/&#xff0c;Github源代码地址&#xff1a;htt…

Kubernetes kubeadm 证书到期,更新证书

1.环境说明 lient Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.6", GitCommit:"fbf646b339dc52336b55d8ec85c181981b86331a", GitTreeState:"clean", BuildDate:"2020-12-18T12:09:30Z", G…

糖尿病性视网膜病变(DR)的自动化检测和分期

糖尿病性视网膜病变&#xff08;DR&#xff09;的自动化检测和分期 提出背景DR的阶段及其特征 历年解法计算机视觉方法多分类方法 新的解法深度学习方法迁移学习大模型多模型集成全流程分析 总结特征1&#xff1a;图像分割特征2&#xff1a;疾病分级特征3&#xff1a;治疗建议生…

phaseDNN文章解读

文章DOI: https://doi.org/10.48550/arXiv.1905.01389 作者是 Southern Methodist University 的Wei Cai 教授 A Parallel Phase Shift Deep Neural Network for Adaptive Wideband Learning 一种并行移相深度神经网络来自适应学习宽带频率信号 20190514 核心思想&#xff1a;…

搞明白Eclipse的Java Build Path很重要

为什么说搞懂Eclipse的Java Build Path很重要呢&#xff1f;因为搞懂了它才知道eclipse如何放置源代码和输出文件的&#xff0c;也就是搞懂从哪里来到哪里去的问题。 Build Path是指定Java工程所包含的资源属性集合。 在一个成熟的Java工程中&#xff0c;不仅仅有自己编写的源…