论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
运维.售后
›
运维.售后
›
深度解析Linux中的Vim的使用
深度解析Linux中的Vim的使用
风雨同行
金牌会员
|
2025-1-1 07:16:00
|
显示全部楼层
|
阅读模式
楼主
主题
817
|
帖子
817
|
积分
2451
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什么都不带的话,是这样的
vim就是vi的增强版本
我们可以输入SHIRT + : +q 退出来
我们假如要使用vim的话我们是需要进行文件的创建操作的
我们使用touch命令创建一个code.c文件
然后我们使用命令vim code.c进入到vim操作里面
我们发现我们进去之后按很多键都没反应,由于我们的vim默认打开模式就是命令模式
假如我们要开始写代码的话我们要输入一个i
输入完i之后我们的左下角就会出现这个INSERT
就是提醒我们可以开始进行插入的操作了
那么这个时间我们就可以开始进行内容的誊写了,和正常的记事本差不多
我们这里输入一个打印字符的代码
#include <stdio.h>
int main()
{
printf("hello kaizi\n");
return 0;
}
~
复制代码
那么我们怎么进行退出的操作呢?
我们直接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]#
复制代码
那么我们可以使用命令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]#
复制代码
Vim的基本操作
vim一样寻常支持的模式就是这三种
当我们首次打开vim的话我们所处的模式就是命令模式了
在默认的这个命令模式下,Linux会将我们输入的全部字符当成命令
然后我们输入i就能进入到了插入模式,这个就是正常的编写模式
我们处于这个命令模式的时间输入i字符是可以被识别到的,然后进行模式切换,将命令模式切换到插入模式了
我们输入ESC就能回到命令模式了
我们插入模式是能进行内容的编写操作,但是编辑服从太低了
之所以我们的vim存在命令模式是为了进步编辑服从
假如我们不知道现在是什么模式,那么我们无脑ESC,末了肯定是在命令模式的
现在我想进入到底行模式,那么我们输入SHIFT+: 然后光标就到了底行了
就进入到了我们的底行模式进行命令的输入操作了
假如我们想显示行号的话,那么我们就输入set nu
然后我们的代码左边就会出现行号了
假如我们要去掉行号的话,那么我们输入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一下就能进行粘贴的操作了
然后又就可以将刚刚复制的内容复制到后面了
那么我们想进行复制就输入命令yy
假如想进行粘贴的操作的话我们使用p就能进行粘贴我们刚刚复制的内容
yy:复制当前行
p粘贴到当前行的下一行
实在我们可以在P前面加上n进行多行的粘贴操作
n+p多行粘贴操作
u:撤销操作
假如我们撤销了一个东西,但是我们先现在想将我们的这个撤销给撤销了
那么我们该怎么办呢?
CTRL +R就能对我们的u进行撤销的操作
假如对刚刚的CTRL +R后悔的话,那么我们在u一次就好了
u和CTRL +R可以互相进行撤销的操作
只要我们不退出vim的话,我们不停都可以进行撤销的操作的
假如我们想进行大范围的复制的操作的话,我们可以使用n+yy进行多行大范围的复制操作的
这里我们使用12yy将我们的这个打印操作的代码进行完整的复制
然后G直接跳到文本后
一个p就可以进行粘贴操作了
我们直接100p将刚刚的代码重复粘贴100次
所以我们的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的字符
说明我们进入到了替换模式
我们从命令模式输入R就能酿成替换模式了
那么我们在替换模式无脑输入ESC就能回到命令模式了
进入插入模式的话的三种方法
i:我们的光标稳定,直接进入到插入模式
a:我们的光标会往后面进行挪动一位的操作
o:进入到插入模式同时会新起一行的
退出VIM和底行相关的命令
我们从命令模式输入冒号就能进入到这个底行模式了
然后输入wq就能进行保存而且退出的操作了
w是保存的意思
q是退出
但是还有一种方法能直接在命令模式进行退出的操作了
我们直接shift + z + z就能进行保存并退出的操作了
我们在底行模式中
我们可以在w大概是q后面加上!
假如是w!的话那么就是逼迫保存
假如是q!的话就是逼迫退出操作
所以在命令底行带上!就是逼迫进行这个命令操作
这个感叹号的话作用就是我们可能在以后改配置文件的时间
我们使用root都不一定能改成功
所以我们需要在保存后面加上!说明我们要逼迫进行保存的操作
假如我们想调出行号的话我们可以使用set nu将左侧的行号进行显示操作
假如我们想关闭左侧的行号的话那么我们可以使用命令set nonu进行行号的关闭操作
当然我们的底行模式还能输入命令进行自动定位我们想找的那一行那里
我们在底行模式输入/我们想要找的词
我们这里在底行模式输入/printf就能找到我们想要的那一行,将那一行用特定的颜色标志出来大概直接跳到那一行去
直接定位到了有printf的行那里去了
我们使用n就跳转到下一个满意条件的词语了
我们在底行模式的话输入!ls就能帮我们实验我们目次下的文件
跳出按任意键继承
然后我们再输入!gcc code1.c进行文件的编译操作
然后我们再输入我们的! ./a.out就能实验我们的代码了
我们还能在底行模式中输入! man 3 printf进行相关指令的搜刮
所以我们的!conmmend可以在不退出vim的情况下实验命令行的命令操作
我们在当前的文件夹中额外创建了一个code.h文件
然后我们打开code1.c的vim模式
然后进入底行模式输入vs code.h然后就出现下面的样子
然后我们就可以进行分屏的操作了
可以进行文件级别的对比操作了
在这个界面,我么可以发现我们的光标在左边的界面,说明我们目前是在进行左边那个页面的编辑操作的
那么我们这里就是在编辑code.h这个文件
那么我们保存的就是这个code.h文件,退出的也是这个文件
然后我们就回到了code1.c这个文件了
现在我们想将右边的函数复制到左边
那么我们就需要进行两个界面中的光标的移动操作了
那么怎样进行两个页面的光标移动操作呢?
我们可以使用CTRL W W将光标移动到下个终端里面进行操作
然后输入yy将我们的函数那一行进行复制的操作
然后CTRL W W回到我们的code.h的界面进行操作
然后我们p一下,将我们复制的那一行粘贴到这个文件里面
那么此时这个函数的声明就有了
只要能进行了光标移动的话,那么我们的复制粘贴之类的操作的话就能在两个终端中进行操作了
当然了这个不但仅能处置惩罚两个文件,可以同时处置惩罚多个文件的
批量化注释
我们正常的进行注释就是在前面加上//
但是很麻烦的
我们的目的是需要进行批量化注释操作的
那么我们开始进行操作
我们CTRL + V
然后回发现我们的左下角的状态变了,出现了VISUAL BLOCK的样式
然后我们发现我们只能进行hjkl这四个方向键进行选择操作
然后我们操控方向键将我们要准备注释的几个式子进行选中操作
然后我们输入I ,这里是大写的i
然后我们输入//
然后我们再进行ESC的操作
那么我们可以发现之前选中的都被注释掉了
这个就是批量化进行注释的操作
那么我们的CTRL+v进入的模式是视图模式
假如我们想将全局代码都进行注释的话,那么我们先gg到内容的开始
然后CTRL +v进入到视图模式
然后shift +g将光标切到我们的文本内容的末了面
然后把输入shift + i进行插入模式
然后我们再输入//进行注释
然后ESC退出,就可以发现我们选中的代码都被注释上了
批量化去注释
我们先CTRL +v进入到视图模式
然后选中我们需要删除的注释
d就行了
下面我们在视图界面选中了两列的注释,然后我们直接输入d就能将注释删除了
那么我们的注释就被删除了
假如我们想批量化进行删除中间我们选中的字的话
我们现在想将后面的快乐两个字进行删除操作的话
我们先将光标移动到我们的快的那里、
然后CTRL + v进入到视图模式
然后进行要删除的那一列的选择操作
然后直接d就能将这两列进行删除的操作
假如是批量进行插入的话,原理和我们的批量注释的原理差不多的
就是将我们的//酿成我们想要进行插入的字符就行了
对文本进行批量化的替换操作
现在我们想将这个printf换成print,那么我们可以怎么进行操作呢?
我们可以进入到底行模式进行操作
我们输入下面的命令,用print替换printf而且是全部的printf
所以我们在后面价格g ,g的意思就是global
:%s/printf/print/g
假如我们不加这个g的话,那么末了替换的就只有首列的printf,假如后面有printf的话那么就不会被替换成功的
:%s/printf/print/g
用后者替换前者,而且是全部范围的
关于vim代码编译报错行数的处置惩罚操作
我们可以故意在这个第15行将这个分号去掉
然后我们的光标处在这个第九行的位置
那么我们保存退出
我们进行这个文件的编译的时间
它显示我们这边的错误是15行的printf前面少了一个分号
那么我们继承vim这个文件,我们发现这个光标照旧处于我们的这个第9行,那么我们怎么进行处置惩罚呢?
我们输入命令vim code.c +15然后进到我们的vim界面就能直接让光标跳到我们的第15行了,然后我们就能进行错误的修改操作了
然后我们就能进行更新的操作了
那么这个操作我们能直接进行快速定位了,快速将错误进行办理的操作
所以我们在使用vim打开文件的时间我们能使用vim+file.c +指定行将光标进行快速锁定的操作
!快速进行汗青命令的使用
假如我们想要我们末了生成的文件指定为一个文件,不是默认的a.out
我们可以使用指令gcc file.c -o code
那么我们就可以生成一个可实验的文件code
[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]#
复制代码
但是我们现在又将代码进行更改操作了
那么我们又要输入一遍gcc code.c -o code 看起来很麻烦
我们可以实验输入!g快速输入汗青命令
!g就是快速实验汗青命令gcc code.c -o code
!l就是快速实验我们的ll
快速进行汗青命令的实验操作
对vim进行更改配置的操作
我们现在当前的文件夹创建一个.vimrc的文件
然后我们在这个.vimrc的文件里面就可以开始进行配置项目的誊写了
我们使用vim进行一个配置操作的写入
我们可以发现当前的目次里面存在一个隐蔽文件.vimrc的文件
我们再打开我们之前创建的test.c文件我们可以发现我们的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已往就行了
加入我们的用户就行了
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
风雨同行
金牌会员
这个人很懒什么都没写!
楼主热帖
深入Python网络编程:从基础到实践 ...
MySQL锁(乐观锁、悲观锁、多粒度锁) ...
中职网络安全技能大赛SSH弱口令渗透测 ...
阿里云体验有奖:如何将 PolarDB-X 与 ...
HTML+CSS+JS——动漫风二次元论坛(2页) ...
损失函数-pytorch
让 Flutter 在鸿蒙系统上跑起来 ...
互联网技术大佬独立博客推荐 ...
转载自ChatGPT:Python关键字 asynico ...
【numpy基础】--广播计算
标签云
挺好的
服务器
快速回复
返回顶部
返回列表