首页 教程 开发工具 深度解析Linux中的Vim的使用

深度解析Linux中的Vim的使用

Vim的基本概念

vim是一个专注的编辑器

多模式的编辑器

vim 多模式

主要是5种模式:

命令模式、底行模式、插入模式、补充(一批指令,围绕vim展开的)

我们可以使用which发现我们的vim是我们的Linux下存在的一个真实的命令

which vim

[root@hcss-ecs-28de lesson4]# which vim /usr/bin/vim [root@hcss-ecs-28de lesson4]#

我们输入命令vim什么都不带的话,是这样的深度解析Linux中的Vim的使用

vim就是vi的增强版本

我们可以输入SHIRT + : +q 退出来

我们如果要使用vim的话我们是需要进行文件的创建操作的

我们使用touch命令创建一个code.c文件

然后我们使用命令vim code.c进入到vim操作里面

深度解析Linux中的Vim的使用
我们发现我们进去之后按很多键都没反应,因为我们的vim默认打开模式就是命令模式

如果我们要开始写代码的话我们要输入一个i

输入完i之后我们的左下角就会出现这个INSERT

就是提醒我们可以开始进行插入的操作了

深度解析Linux中的Vim的使用
那么这个时候我们就可以开始进行内容的书写了,和正常的记事本差不多深度解析Linux中的Vim的使用
我们这里输入一个打印字符的代码

#include <stdio.h> int main() { printf("hello kaizi\n"); return 0; } ~

深度解析Linux中的Vim的使用

那么我们怎么进行退出的操作呢?

我们直接SHIRT+:+ wq就能进行退出的操作了

那么此时我们就写完了我们的代码了

那么我们可以使用cat进行内容的查看操作

cat code.c

[root@hcss-ecs-28de lesson4]# vim code.c [root@hcss-ecs-28de lesson4]# cat code.c #include <stdio.h> int main() { printf("hello kaizi\n"); return 0; } [root@hcss-ecs-28de lesson4]#

深度解析Linux中的Vim的使用
那么我们可以使用命令gcc code.c进行这个文件的编译的操作

编译完成了之后我们发现我们默认生成了一个a.out文件

[root@hcss-ecs-28de lesson4]# gcc code.c [root@hcss-ecs-28de lesson4]# ll total 24 -rwxr-xr-x 1 root root 17528 Dec 24 15:01 a.out -rw-r--r-- 1 root root 71 Dec 24 14:59 code.c [root@hcss-ecs-28de lesson4]#

然后我们输入我们的./a.out就能进行文件的编译操作了

[root@hcss-ecs-28de lesson4]# ./a.out hello kaizi [root@hcss-ecs-28de lesson4]#

深度解析Linux中的Vim的使用

Vim的基本操作

vim一般支持的模式就是这三种

深度解析Linux中的Vim的使用
当我们首次打开vim的话我们所处的模式就是命令模式了

在默认的这个命令模式下,Linux会将我们输入的所有字符当成命令

然后我们输入i就能进入到了插入模式,这个就是正常的编写模式

我们处于这个命令模式的时候输入i字符是可以被识别到的,然后进行模式切换,将命令模式切换到插入模式了

我们输入ESC就能回到命令模式了

我们插入模式是能进行内容的编写操作,但是编辑效率太低了

之所以我们的vim存在命令模式是为了提高编辑效率

如果我们不知道现在是什么模式,那么我们无脑ESC,最后肯定是在命令模式的

现在我想进入到底行模式,那么我们输入SHIFT+: 然后光标就到了底行了

就进入到了我们的底行模式进行命令的输入操作了

如果我们想显示行号的话,那么我们就输入set nu

深度解析Linux中的Vim的使用
深度解析Linux中的Vim的使用
然后我们的代码左边就会出现行号了

如果我们要去掉行号的话,那么我们输入set nonu将行号去掉就行了

还有我们要退出的话,那么我们是输入wq

w是保存的意思

q是退出的意思

那么合起来就是保存并退出的意思

我们的底行模式能和插入模式进行相互的转换操作么?

答案是不能的

如果我们插入模式进入到底行的话那么我们先得输入ESC进入到命令模式

然后从命令模式输入shift + :进入到底行模式

那么一样的原理,我们的底行模式得先退出到命令模式才能进入到插入模式

总结:

1.默认是命令模式

2.命令模式是vim的核心和精华

vim中的光标的上下移动定位

关于光标定位:

gg:光标定位到最开始的位置(在命令模式下进行输入的,不是在插入模式进行输入的)

shift+g=G:将光标的位置定位到文本的最结尾的位置

在我们上面的命令我们是可以在前面加上行号的,可以让光标定位到任意一行的

我们称下面为锚点

shift + $然后就能直接定位到行结尾了

shift+^ 光标快速定位到行首

上下左右进行移动的操作

总共是四个键

h、j、k、l

h代表左

j代表下

k代表上

l代表右

jump往下跳

king就是国王,高高在上

n+w/b:让光标以单词为单位,进行移动

w是以单词为单位向后进行移动,b就是以单词为单位 向前进行移动操作

如果我们还是觉得慢的话,那么我们是可以在前面加上数字的进行快速移动的

复制剪切操作以及两种撤销的操作

如果我们想进行复制的操作怎么进行操作呢?

我们输入命令yy就行了,然后光标的所在这行就都被复制上了

然后为了方便看结果的话,我们yy之后G到这个文本的结尾

然后p一下就能进行粘贴的操作了

然后又就可以将刚刚复制的内容复制到后面了

深度解析Linux中的Vim的使用
那么我们想进行复制就输入命令yy

如果想进行粘贴的操作的话我们使用p就能进行粘贴我们刚刚复制的内容

yy:复制当前行

p粘贴到当前行的下一行

其实我们可以在P前面加上n进行多行的粘贴操作

n+p多行粘贴操作

深度解析Linux中的Vim的使用

u:撤销操作

假如我们撤销了一个东西,但是我们先现在想将我们的这个撤销给撤销了

那么我们该怎么办呢?

CTRL +R就能对我们的u进行撤销的操作

如果对刚刚的CTRL +R后悔的话,那么我们在u一次就好了

uCTRL +R可以互相进行撤销的操作

只要我们不退出vim的话,我们一直都可以进行撤销的操作的

如果我们想进行大范围的复制的操作的话,我们可以使用n+yy进行多行大范围的复制操作的

这里我们使用12yy将我们的这个打印操作的代码进行完整的复制

然后G直接跳到文本后

一个p就可以进行粘贴操作了

深度解析Linux中的Vim的使用
我们直接100p将刚刚的代码重复粘贴100次深度解析Linux中的Vim的使用

所以我们的yy和p都是支持n的

n+yy就是将光标所在的n行进行复制操作

n+p就是直接将我们复制的内容粘贴n

到目前来,我们的vim所有的命令都支持前面带上数字的

按行剪切删除操作

我们输入命令dd就能进行当前行的剪切的操作了,然后我们可以使用p将见接剪切的行进行粘贴的操作

当然了我们的dd也是支持在前面加上n的

n+dd就是将当前行往下的n行进行剪切的操作

那么删除呢?

也是dd,我们不进行p的操作的话那么就是删除操作了

还有我们可以使用命令x进行删除,将光标内的单个字符进行删除的操作

如果想删除光标前面的字符的话我们使用X就能进行删除的操作了

将小写字母换成大写字母

shift+左上角的~可以选中光标内的字母从小写字母变成大写字母了

我们直接按着不动,全部给我们进行转换大写的操作

小范围文本替换

如果想将一行的数据进行替换操作的话

我们可以使用r进行替换的操作了

我们可以先输入r然后我们光标内的字符就被选中了

然后我们随便输入一个字符,被选中的字符就能被替换我们输入的字符了

当然了我们的这个r前面也是可以加上n的

那么n+r就是选中当前行的前n个字符,然后替换成我们想要替换的字符

替换的时候是同文本进行替换操作的哈

替换模式

当我们输入R的时候我们可以发现我们的左下角出现了REPLACE的字符

说明我们进入到了替换模式

深度解析Linux中的Vim的使用

我们从命令模式输入R就能变成替换模式了

那么我们在替换模式无脑输入ESC就能回到命令模式了

进入插入模式的话的三种方法

i:我们的光标不变,直接进入到插入模式

a:我们的光标会往后面进行挪动一位的操作

o:进入到插入模式同时会新起一行的

退出VIM和底行相关的命令

我们从命令模式输入冒号就能进入到这个底行模式了

然后输入wq就能进行保存并且退出的操作了

w是保存的意思

q是退出

但是还有一种方法能直接在命令模式进行退出的操作了

我们直接shift + z + z就能进行保存并退出的操作了

我们在底行模式中

我们可以在w或者是q后面加上!

如果是w!的话那么就是强制保存

如果是q!的话就是强制退出操作

所以在命令底行带上!就是强制进行这个命令操作

这个感叹号的话作用就是我们可能在以后改配置文件的时候

我们使用root都不一定能改成功

所以我们需要在保存后面加上!说明我们要强制进行保存的操作

如果我们想调出行号的话我们可以使用set nu将左侧的行号进行显示操作

如果我们想关闭左侧的行号的话那么我们可以使用命令set nonu进行行号的关闭操作

当然我们的底行模式还能输入命令进行自动定位我们想找的那一行那里

我们在底行模式输入/我们想要找的词

我们这里在底行模式输入/printf就能找到我们想要的那一行,将那一行用特定的颜色标记出来或者直接跳到那一行去

直接定位到了有printf的行那里去了

我们使用n就跳转到下一个满足条件的词语了

深度解析Linux中的Vim的使用

我们在底行模式的话输入!ls就能帮我们执行我们目录下的文件

跳出按任意键继续
深度解析Linux中的Vim的使用

然后我们再输入!gcc code1.c进行文件的编译操作深度解析Linux中的Vim的使用
然后我们再输入我们的! ./a.out就能执行我们的代码了深度解析Linux中的Vim的使用
我们还能在底行模式中输入! man 3 printf进行相关指令的搜索

深度解析Linux中的Vim的使用
所以我们的!conmmend可以在不退出vim的情况下执行命令行的命令操作

我们在当前的文件夹中额外创建了一个code.h文件

然后我们打开code1.c的vim模式

然后进入底行模式输入vs code.h然后就出现下面的样子

然后我们就可以进行分屏的操作了

可以进行文件级别的对比操作了

深度解析Linux中的Vim的使用
在这个界面,我么可以发现我们的光标在左边的界面,说明我们目前是在进行左边那个页面的编辑操作的

那么我们这里就是在编辑code.h这个文件

那么我们保存的就是这个code.h文件,退出的也是这个文件

然后我们就回到了code1.c这个文件了

现在我们想将右边的函数复制到左边

那么我们就需要进行两个界面中的光标的移动操作了

那么如何进行两个页面的光标移动操作呢?

我们可以使用CTRL W W将光标移动到下个终端里面进行操作

然后输入yy将我们的函数那一行进行复制的操作

然后CTRL W W回到我们的code.h的界面进行操作

然后我们p一下,将我们复制的那一行粘贴到这个文件里面

那么此时这个函数的声明就有了

深度解析Linux中的Vim的使用
只要能进行了光标移动的话,那么我们的复制粘贴之类的操作的话就能在两个终端中进行操作了

当然了这个不仅仅能处理两个文件,可以同时处理多个文件的

批量化注释

我们正常的进行注释就是在前面加上//

但是很麻烦的

我们的目的是需要进行批量化注释操作的

那么我们开始进行操作

我们CTRL + V

然后回发现我们的左下角的状态变了,出现了VISUAL BLOCK的样式

深度解析Linux中的Vim的使用
然后我们发现我们只能进行hjkl这四个方向键进行选择操作

然后我们操控方向键将我们要准备注释的几个式子进行选中操作

深度解析Linux中的Vim的使用
然后我们输入I ,这里是大写的i

然后我们输入//

然后我们再进行ESC的操作

那么我们可以发现之前选中的都被注释掉了

这个就是批量化进行注释的操作

深度解析Linux中的Vim的使用
那么我们的CTRL+v进入的模式是视图模式

如果我们想将全局代码都进行注释的话,那么我们先gg到内容的开始

然后CTRL +v进入到视图模式

然后shift +g将光标切到我们的文本内容的最后面

然后把输入shift + i进行插入模式

然后我们再输入//进行注释

然后ESC退出,就可以发现我们选中的代码都被注释上了

深度解析Linux中的Vim的使用

批量化去注释

我们先CTRL +v进入到视图模式

然后选中我们需要删除的注释

d就行了

下面我们在视图界面选中了两列的注释,然后我们直接输入d就能将注释删除了

深度解析Linux中的Vim的使用
那么我们的注释就被删除了深度解析Linux中的Vim的使用

如果我们想批量化进行删除中间我们选中的字的话

我们现在想将后面的快乐两个字进行删除操作的话

我们先将光标移动到我们的的那里、

然后CTRL + v进入到视图模式

然后进行要删除的那一列的选择操作

深度解析Linux中的Vim的使用
然后直接d就能将这两列进行删除的操作深度解析Linux中的Vim的使用
如果是批量进行插入的话,道理和我们的批量注释的道理差不多的

就是将我们的//变成我们想要进行插入的字符就行了

对文本进行批量化的替换操作

现在我们想将这个printf换成print,那么我们可以怎么进行操作呢?

深度解析Linux中的Vim的使用

我们可以进入到底行模式进行操作

我们输入下面的命令,用print替换printf并且是所有的printf

所以我们在后面价格g ,g的意思就是global

:%s/printf/print/g

深度解析Linux中的Vim的使用
如果我们不加这个g的话,那么最后替换的就只有首列的printf,如果后面有printf的话那么就不会被替换成功的

:%s/printf/print/g

用后者替换前者,并且是全部范围的

关于vim代码编译报错行数的处理操作

我们可以故意在这个第15行将这个分号去掉

然后我们的光标处在这个第九行的位置

深度解析Linux中的Vim的使用
那么我们保存退出

我们进行这个文件的编译的时候

它显示我们这边的错误是15行的printf前面少了一个分号

深度解析Linux中的Vim的使用
那么我们继续vim这个文件,我们发现这个光标还是处于我们的这个第9行,那么我们怎么进行处理呢?深度解析Linux中的Vim的使用
我们输入命令vim code.c +15然后进到我们的vim界面就能直接让光标跳到我们的第15行了,然后我们就能进行错误的修改操作了深度解析Linux中的Vim的使用
然后我们就能进行更新的操作了深度解析Linux中的Vim的使用

那么这个操作我们能直接进行快速定位了,快速将错误进行解决的操作

所以我们在使用vim打开文件的时候我们能使用vim+file.c +指定行将光标进行快速锁定的操作


!快速进行历史命令的使用

如果我们想要我们最后生成的文件指定为一个文件,不是默认的a.out

我们可以使用指令gcc file.c -o code

那么我们就可以生成一个可执行的文件code

深度解析Linux中的Vim的使用

[root@hcss-ecs-28de lesson4]# gcc code.c -o code [root@hcss-ecs-28de lesson4]# ll total 24 -rwxr-xr-x 1 root root 17608 Dec 25 22:26 code -rw-r--r-- 1 root root 708 Dec 25 22:15 code.c [root@hcss-ecs-28de lesson4]#

深度解析Linux中的Vim的使用
但是我们现在又将代码进行更改操作了

那么我们又要输入一遍gcc code.c -o code 看起来很麻烦

我们可以尝试输入!g快速输入历史命令

!g就是快速执行历史命令gcc code.c -o code

!l就是快速执行我们的ll

深度解析Linux中的Vim的使用
快速进行历史命令的执行操作

对vim进行更改配置的操作

我们现在当前的文件夹创建一个.vimrc的文件

深度解析Linux中的Vim的使用
然后我们在这个.vimrc的文件里面就可以开始进行配置项目的书写了

我们使用vim进行一个配置操作的写入

深度解析Linux中的Vim的使用
我们可以发现当前的目录里面存在一个隐藏文件.vimrc的文件深度解析Linux中的Vim的使用
我们再打开我们之前创建的test.c文件我们可以发现我们的vim带上了行号了深度解析Linux中的Vim的使用
就说明我们通过进行.vimrc这个文件的内容的修改是可以改变我们的编译文件的内容的

如果我们在同一个内网ip下的话,我们的其中一个用户Lisi进行了vim配置的修改,那么其他的用户能看见这个配置的修改操作么?

从权限这个是不行的,因为任何人都进不来我们的家目录的

所以vim的配置,我们都是自己配自己的,不影响别人

我们呢使用的是这个配置,我们直接输入链接就能进行对应配置的下载操作了,因为这个之前是做好了的,我们拿着用就行了

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

直接进行安装就行了

下面是教程

教程

如果显示你的用户没有权限的话,那么你就得进行用户权限的配置操作了

位置:/etc/sudoers

99行,我们直接使用命令99gg过去就行了

加入我们的用户就行了

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.22k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.27k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.17k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.11k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  499

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  317

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。