Linux:vim工具

news2024/11/13 7:51:17

文章目录

  • 一.vim简单介绍
    • 1.1vim使用
    • 1.2vim常见的模式
  • 二.vim中的指令
    • 2.1set nu/set nonu(调出/取消行号)
    • 先导:下面这些命令都是在命令模式下运行
    • 2.2yy/p(复制/粘贴)
    • 2.3dd(剪切)
    • 2.4u/ctrl r(撤销/把撤销撤销)
    • 2.5shift g/g g(光标定位末尾/光标定位第一行)
    • 2.6shift 4/shift 6(光标定位当前行结尾/光标定位当前行末尾)
    • 2.7w/b(光标以单词为单位左右移动)
    • 2.8shift `(大小写切换)
    • 2.9r 字符1(改变当前光标所在的字符为字符1)
    • 2.10shift r(批量修改)
    • 2.11x/shift x(删除光标后一个字符/删除光标前一个字符)
    • 2.12hjkl(光标左下上右移动)
    • 2.13进入插入模式的其它方法(a,o)
  • 三.vim底行模式下的一些命令
    • 3.1set nu/set nonu
    • 3.2/ key(在文本中搜索key这个字符串)
    • 3.3w/q(保存/退出)
    • 3.4! 命令(不用退出vim,来执行命令)
    • 3.5%/字符串1/字符串2/g(将文档里所有字符串1替换成字符串2)
    • 3.6vs file(新建一个空文本)
    • 3.7ctrl w w(切换光标到不同文件)
  • 四.vim的配置
    • 4.1手动配置
    • 4.2自动化配置

一.vim简单介绍

vim是一款多模式的编辑器。既然是多模式就说明vim在用的时候有很多种模式,零零散散大约10几种。但是我们常用的就3~5种模式。其它的那些模式一般情况也用不到。

那既然是编辑器,和我们在windows系统上用的vs2022,decv++这些有什么不同呢?拿vs2022举例,你写代码可以在上面写,调试也可以在这里调,同样执行代码也可以在vs2022上运行。vs2022就相当于把你所需要的所有东西都给你准备好了,这些软件就是所谓的IDE(集成开发环境),简单说,就是把所有功能糅合在一起。但vim不一样,它就是一个单纯的编辑器。要调试,执行就要用其它工具来执行。

1.1vim使用

vim test.c

在这里插入图片描述
这里直接输入命令就可以了,如果你的当前目录里没有test.c这个文件,它会帮你自动创建好的。

如果你没有vim这个工具,可以输入指令来下载:

yum install -y vim


我这里用的是云服务器,一般服务器里都会有vim这个工具,不用自己去下载。你可以直接vim test.c运行一下试试,如果能直接进去就不用在下载了。

这是进去之后的界面:
在这里插入图片描述
在此之前,我已经写过了一点内容。

进去之后该如何退出呢?

//首先摁shift + :这两个键
shift :

在这里插入图片描述
光标会自动定位在最下面,接下来输入wq然后回车就可以了,向下面这样:
在这里插入图片描述

w:保存
q:退出 (因为上面我已经写过内容了,直接退出不了,必须保存之后才能退出)
在这里插入图片描述
wq:连起来就是保存+退出

1.2vim常见的模式

  1. 命令模式:默认打开vim时的模式
  2. 插入模式
  3. 底层模式
  4. 替换模式
  5. 视图模式

在这里插入图片描述

你们在刚开始进入vim的时候,会发现一件神奇的事情:你输入不了任何内容。这是因为刚进去的时候是默认为命令模式,此时如果要写入一些内容,需要进入到插入模式去进行,方法也很简单:

直接输入一个‘i’这个字符即可。

在输入i之后左下角会出现这样的标识:
在这里插入图片描述

此时vim就可以相当于一个普通记事本,你在里面输入内容就可以了。

但是此时想要退出,摁shift和:这两个键时发现不管用了,因为要输入这些指令需要去到底层模式。要去底层模式需要先回到命令模式(摁esc这个键),然后在摁shift和:这两个键去底层模式。到了底层模式在输入wq就可以正常退出了。
在这里插入图片描述

注意事项:

  1. 如果你此时忘记了自己在什么模式,可以摁esc,因为你不管在什么模式下,一直摁esc,最后肯定能回到命令模式,然后在命令模式下去调用其它模式。
  2. 退出的时候一般先保存在退出,也就是wq命令。

二.vim中的指令

2.1set nu/set nonu(调出/取消行号)

首先,这个指令是在低行模式下运行。

set nu 调出行号
set nonu 取消行号

set nu:
在这里插入图片描述

在这里插入图片描述

现在行号就掉出来了。

set nonu:
在这里插入图片描述
在这里插入图片描述
这样行号就取消掉了。

先导:下面这些命令都是在命令模式下运行

下面这些命令都是在命令模式下运行的,不要搞错了

2.2yy/p(复制/粘贴)

yy/p命令都是在命令模式下运行的。

yy:复制光标所在的行
nyy:复制包括当前光标所在行以下n行
p:粘贴到当前光标下面一行
npp:粘贴n次

先看复制命令:
在这里插入图片描述

你在摁下yy的时候会发现什么反应都没有,此时你不要慌张,因为此时你已经把光标所在的这一行已经复制好了。

接下来我们看p这个命令:
在这里插入图片描述

p命令会把复制的内容粘贴到当前光标的下一行,光标也会随之跳到下一行。

当然只复制/粘贴一行内容,体现不出来命令的特点。在运行粘贴命令p时,在前面加一个数字n,这个数字是任意的,比如20p,10p.这就说明会粘贴n次,可以理解为讲p这个指令运行n次:
在这里插入图片描述

这里我输入的是20p,也就会粘贴20行。

npp是粘贴n次,nyy就是复制n行,复制的内容是:包括当前光标所在的行数,向下总共n行
在这里插入图片描述

上面我输入的是3yy,复制的内容就是红框里面的三行,看看打印结果:
在这里插入图片描述

上面的确把那三行打印出来了。

2.3dd(剪切)

dd:把光标所在的这一行剪切
ndd:把包括光标所在的这一行下面总共n行全部剪切

剪切完之后在摁p就可以粘贴了。

同样如果你想剪切多行前面加个n就可以了。

在这里插入图片描述

看上图,可以发现如果你只剪切,不粘贴的话,这个dd命令其实可以当成删除的命令

2.4u/ctrl r(撤销/把撤销撤销)

u:把上一步步骤撤销掉。
ctrl r这两个键是刚才撤销掉之后后悔了,摁这两个键可以把刚才的撤销给撤销掉

如果摁完ctrl r这两个键后又后悔了,此时在摁u可以把撤销的撤销给撤销掉,如果你还后悔了,就在摁ctrl u这两个键。

总结:

u和ctrl r是可以相互更改的。支持你在这里套娃。

在vim里面,如果你保存了在摁u,同样可以进行撤销的操作,但是如果你保存直接退出了,再回来时摁u就不能撤销掉刚才的操作了。

2.5shift g/g g(光标定位末尾/光标定位第一行)

shift g(也可以是G):将光标直接定位在文档末尾
g g:将光标定位在文档的第一行
n shift g:将光标定位到第n行

2.6shift 4/shift 6(光标定位当前行结尾/光标定位当前行末尾)

shift 4(就是$):将光标直接定位到当前行的结尾。
shift 6(就是^):将光标直接定位到当前行的开始。

2.7w/b(光标以单词为单位左右移动)

w:光标按单词为单位向后移动
b:光标按单词为单位向前移动
nw:光标向后移动n个单词
nb:光标向前移动n个单词

既然是以单词为单位,那这里单词的范畴是什么呢?向下面这个:

在这里插入图片描述

这里会把printf,hello,word,aaaaaaaaaaaa,aaaaabbb这些都当成一个单词,那问题是不是英文字符的怎么算呢?通过实验可以看到把那些不是字母的字符划分到一起当成一个单词,比如:(" ! 、 “)。

同样w,b命令在前面加n也同样适用。

2.8shift `(大小写切换)

shift `(也就是~键,在左上角esc下面):在命令行模式下,这个命令可以改变当前光标所在字符的大小写。如果按住shift然后一直按 ~ 就可以无脑一直向后切换大小写:

在这里插入图片描述

一直摁就上图这个效果。

2.9r 字符1(改变当前光标所在的字符为字符1)

r 字符1:如果你想在命令模式下改变当前字符,就可以先按r在输入一个字符1,光标所在的这个字符就变成了这个字符1
n r 字符1:从当前光标开始后n个字符全部替换成字符1

在这里插入图片描述

上面这图是r+h就可以把m替换成h了。

2.10shift r(批量修改)

shift r(其实就是进入了替换模式):此时到了替换模式后输入什么就会把光标的内容改成什么,如果改错了,摁Backspace这个键还可以退回,此时按上下左右键还可以移动光标

替换模式改起来十分的简单,包括上面的几个更改命令,其实你都可以进入到插入模式修改。但上面这些命令让我们改起来变的很简单,也很顺手。

在这里插入图片描述

2.11x/shift x(删除光标后一个字符/删除光标前一个字符)

x:删除当前光标后的一个字符
nx:删除当前光标后的n个字符
shift x(X):删除当前光标前的一个字符
n shift x(X):删除当前光标前的n个字符

2.12hjkl(光标左下上右移动)

光标当然可以用上下左右键进行移动,但也支持用hjkl四个键来移动:

推荐

h:左
j:下
k:上
l:右

2.13进入插入模式的其它方法(a,o)

i:直接进入
a:进入插入模式后光标后移一位
o:进入插入模式后新起一行

接下来演示三种不同方法进入插入模式时光标的变化:
i:(光标没有任何变化)
在这里插入图片描述

a:(光标自动向后走一步)
在这里插入图片描述

o:(新起一行,光标移动到这一行的开头位置)
在这里插入图片描述

三.vim底行模式下的一些命令

3.1set nu/set nonu

这俩命令上面讲过了,这里不在重复

3.2/ key(在文本中搜索key这个字符串)

/ key就是一个搜索的命令,key是什么,你们自己可以随便输入,搜索到的内容用高亮标记出来

在这里插入图片描述

看结果:
在这里插入图片描述

hello就会用特殊的颜色全部给你标记出来。

n:光标会自动跳到第一个搜索出来的位置,继续摁n这个键,光标会自动找下一个

3.3w/q(保存/退出)

w:写入
w!:强制写入
q:退出
q!:强制退出
wq:保存并退出
wq!:强制保存并退出

有些文件可能比较重要,这时候可以在命令后面加上!强制执行这个命令。

3.4! 命令(不用退出vim,来执行命令)

! 命令,有些时候想执行一些vim外面的命令,但是又不想退出vim,就可以在想要执行的命令前面加上!

在这里插入图片描述

在这里插入图片描述

执行完这个命令后,摁任意键就可以回到vim.

3.5%/字符串1/字符串2/g(将文档里所有字符串1替换成字符串2)

%/字符串1/字符串2/g(将文档里所有字符串1替换成字符串2)

在这里插入图片描述

3.6vs file(新建一个空文本)

vs file:新建一个空文本,文本名自己取,并且分屏显示

在这里插入图片描述

现在寻找光标的位置,光标在哪里你操控的就是哪一个文件。

3.7ctrl w w(切换光标到不同文件)

ctrl w w:切换光标到不同文件,3.6时我们可以新建一些文件,这三个键可以帮助我们快速切换光标到不同文件。

四.vim的配置

4.1手动配置

vim配置简单认为,在一个特殊文件里写入一些指令,以后在用vim打开这个一个普通文件时会直接执行这些指令。
vim在启动的时候,会自动在当前用户的目录下寻找配置文件。如果没有就是默认。
一个用户只有一个vim配置文件,而且这个用户的配置文件不会影响到其它用户

vim配置的命令都写在一个.vimrc这个文件内,没有可以自己创建一个:
在这里插入图片描述

在文件里写入信息之前先看看vim打开一个普通文件之后的样子:
在这里插入图片描述

很正常是把,然后我们尝试着在.vimrc这个文件里写点东西,比如添加行号的命令:
在这里插入图片描述

然后在打开刚在那个普通文件:
在这里插入图片描述

发现一打开这个文件,行号就会直接给你显示好了。这就是我们配置好的vim。当然还有很多的命令供我们配置。

如果你要配置那种很麻烦的vim,你可以下载一些插件,这些插件还要放在.vim这个目录里,比较麻烦,这里不是很推荐。

如果你这个配置里面有个指令不需要了可以用 “ 注释掉
在这里插入图片描述

配置vim还有很多的命令,如果你们感兴趣,可以自己去找。当然嫌麻烦也没关系,因为我在这里已经找好了一个配好的,你们按照我的步骤直接用就行。

4.2自动化配置

这个配置虽然很香,但是只支持centos 7.X。如果你的linux是其它的版本,还是自己慢慢配置吧~

  1. 将下面这个链接复制过来:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

在这里插入图片描述
粘贴好之后,直接回车就行了。

  1. 如果需要密码,输入你的密码就行。

  2. 这是下载成功的页面:
    在这里插入图片描述

  3. 最后你重启一下中断或者在输入一下:source ~/.bashrc这个指令就可以了:
    在这里插入图片描述

这个配置比较智能,代码写起来非常舒服,谁用谁知道~

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

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

相关文章

Docker高级篇_mysql主从复制、redis集群

目录Docker复杂安装详说安装mysql主从复制安装redis集群3主3从Redis集群(基于哈希槽分区)主从容错切换迁移主从扩容主从缩容Docker复杂安装详说 安装mysql主从复制 1.新建主服务容器3307 docker run -d -p 3307:3306 --privilegedtrue -v /zhoujmi/my…

Spring Framwork_01

Core Container(核心容器):管理对象的技术 1.Beans 2.Core 3.Context 4.SpEL Core:核心工具包,包括字节码操作cglib、asm,资源的抽象Resource,对象实例化化工具等等。 Beans:Bean 的定义、Bean 的创建以及对 Bean 的解…

【自学Java】Java循环结构

Java循环结构 Java while教程 在 Java 语言 中,关键字 whie 用于判断一个判断条件,如果返回值都是 true,那么它会一直执行。与 if 不同之处在于,if 只会执行一次,而 while 中,只要条件满足,会…

【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动

前言 最近为了深入研究 嵌入式Linux 的开发,把【迅为iMX6Q】开发板 找了出来,重新搭建了开发编译环境 【迅为iMX6Q】开发板 的 u-boot,放在了 android 源码中,可以从 【迅为iMX6Q】开发板 网盘资料里,下载 iTOP-iMX6_…

Windows下redis环境搭建(可查看源码及Debug调试进入源码)及简易使用

Windows下redis环境搭建(可查看源码及Debug调试进入源码)及简易使用 在我们使用redis进行学习的过程中,在Windows平台上进行学习是一个非常高效的选择,因此下面介绍如何在Windows环境下搭建一个redis环境(即可Debug调试…

数据结构之入门二叉树

文章目录前言1.二叉树的知识铺垫2.二叉树的具体实现1.递归实现前中后序遍历2.其它相关接口的实现1.求二叉树的节点个数2.求叶子节点个数3.二叉树查找值为x的节点3.求树高度4.求k层节点的个数5.层序遍历6.判断二叉树是否是完全二插树3.总结前言 之前用数组实现了一种特殊的完全…

解决word写论文改成两栏时mathtype的公式无法居中的问题

想要的格式 投论文的时候,有很多期刊的要求是两栏排版,比如中国电机工程学报 理论上,用mathtype输入的公式,会根据word的格式自动地调整自己的缩进量(更确切地说,是会自动调整制表位)。比如下…

新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)

目录 你好,蓝桥云课 👋 🌲欢迎来到蓝桥云课🌲 为什么要用 Linux 实验精神 蓝桥云课课程 加入课程 开始实验 实验环境 讨论发帖 实验报告 有效学习时间 我们的目标是星辰大海 🍐Linux 桌面环境使用指南&…

【C++ Primer】阅读笔记(4):string

目录 简介初始化string对象初始化方法直接初始化与拷贝初始化string对象上的操作操作方式读取string对象(cin>>s、cout<<s)getline(is,s)empty()size()string对象的比较(>、<、<=、>=)两个string对象相加(s1+s2)字面值与string对象相加遍历string对象参…

Jenkins复制和导出导入job

一、同一个Jenkins中复制job如果是同一个Jenkins复制job&#xff0c;只需要在创建Job时&#xff0c;选择Copy from一个已有的job即可。也就是在下方上面的红框中输入你新建job的名称&#xff0c;在下面的红框中输入你想要复制的job(已经建好的job)&#xff0c;然后点击确定。这…

【C初阶】实用调试技巧

实用调试技巧前言一、什么是bug&#xff1f;二、调试是什么&#xff1f;&#xff08;一&#xff09;调试&#xff08;二&#xff09;调试的基本步骤&#xff08;三&#xff09;Debug和Release的介绍。1.简单介绍三、Windows环境调试介绍&#xff08;一&#xff09;调试环境的准…

【SAP Abap】SAP ALV开发(REUSE_ALV_GRID_DISPLAY_LVC)全网最详细 DEMO

SAP ALV开发&#xff08;REUSE_ALV_GRID_DISPLAY_LVC&#xff09;全网最详细 DEMO1、ALV 简介2、演示程序1、ALV 简介 ALV 报表程序&#xff0c;是我们在 SAP 项目中最常开发的程序类型。 SAP 系统提供了三种 ALV 实现方式&#xff0c;分别是&#xff1a; FM ALV&#xff0c;…

win10下安装多个JDK配置方法

环境变量配置 此电脑 --- 属性 -- 高级系统设置 -- 环境变量 -- 系统变量 -- 新建 1、配置JAVA_HOME JAVA6_HOME jdk1.6的安装路径 JAVA8_HOME jdk1.8的安装路径 JAVA_HOME %JAVA8_HOME% 两个%表示引用变量的值&#xff0c;直接用JAVA_HOME&#xff0c;就能表示一连串长…

SAR影像变化检测方法之(SAR_CD_DDNet(无监督变化检测))论文阅读

一、论文信息 1、论文标题&#xff1a;Change Detection in Synthetic Aperture Radar Images Using a Dual-Domain Network 2、代码链接&#xff1a;https://github.com/summitgao/SAR_CD_DDNet 二、摘要 合成孔径雷达(SAR)图像的变化检测是一项关键而具有挑战性的任务。现…

Android---BottomAppBar

目录 BottomAppBar FloatingActionButton UI 完整代码 BottomAppBar Material Design 的一个重要特征是设计 BottomAppBar 。可适应用户不断变化的需求和行为。因此&#xff0c;BottomAppBar 是一个从标准物质指导的演变。它更注重功能&#xff0c;增加参与…

ansible 第三天

1.挂载本地光盘到/mnt 2.配置yum源仓库文件通过多种方式实现 仓库1 &#xff1a; Name: RH294_Base Description&#xff1a; RH294 base software Base urt: file:///mnt/BaseOS 不需要验证钦件包 GPG 签名 启用此软件仓库 仓库 2: Name: RH294_Stream Description &#xff1…

Android Studio 用WIFI无线调试adb (3种方法)

最近数据线一直被boss借走&#xff0c;一旦借走就无法调试了&#xff0c;所以就打算不用数据线调试了&#xff0c;使用WIFI进行调试。 一、命令 1、首先配置adb环境变量 首先找到andoridSDK的路径中的platform-tools文件夹 &#xff0c;将他的路径复制我的是 C:\Users\YiShi…

365天深度学习训练营-第P7周:YOLOv5-Backbone/YOLOv5-C3模块实现

目录 一、前言 二、我的环境 三、代码实现 1、C3模块 2、Backbone模块 一、前言 >- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/xLjALoOD8HPZcH563En8bQ) 中的学习记录博客** >- **&#x1f366; 参考文章&#xff1a;36…

【算法】day03:动态规划dp

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录1. 青蛙跳台阶2. 矩形覆盖3. 二进制中1的个数4. 链表中倒数第k个结点普通小孩也要热爱生活&#xff01; 1. 青蛙跳台阶 跳台阶 1&#xff09;思路&#xff1a;如果青蛙在第n个台阶上&#xff0c;那么它要么来自n-1…

python命名规范

1.命名有字母、数字和下划线三个组成 2.项目名、包名、模块名、python文件名 都应该用英文开头&#xff0c;不能纯数字&#xff0c;否则无法识别 3.脚本名不能跟系统模块或三方模块重复 4.函数、类、方法、参数名称不能跟系统现有名称重复 5.类名必须以大写字母开头、除了类…