当前位置: 首页 > news >正文

【Linux】vim工具篇

目录

  • 一、vim的多模式
    • 1.1 命令模式
      • 1.1.1 光标移动
      • 1.1.2 复制及撤销
      • 1.1.3 剪切及删除
      • 1.1.4 替换
      • 1.1.5 批量化注释/去注释
    • 1.2 底行模式
  • 二、vim的配置

在这里插入图片描述
个人主页<—请点击
Linux专栏<—请点击

一、vim的多模式

vim是一款功能强大的文本编辑器,它编辑代码主要围绕命令展开,vim下常见的模式有命令模式、插入模式和底行模式

在这里插入图片描述
如上图,vim就是所安装的一款软件,没有什么神秘的地方。

现在我想写一段代码,我们就可以使用vim了。
在这里插入图片描述
使用vim打开之后,默认是在命令模式下,你会发现你按电脑的按键屏幕没有反应,有时候你触碰到某个按键会有反应。如果你要写代码就要切换到插入模式,按i键就可以切换,插入模式按Esc键就能切换到命令模式

此时关注左下角的图标,会发现命令模式切换到插入模式是这样的:
在这里插入图片描述

切换到插入模式就可以写代码了,你会发现vim使用起来像记事本一样,没有自动空行以及代码提醒功能,这些功能是可以配置的,稍后会讲解。

我现在写了一份代码,可我该怎么退出呀?
在这里插入图片描述
想要退出就需要切换到底行模式,此时插入模式是无法直接切换成底行模式的,需要回退到命令模式,再Shift + ;键也就是:切换到底行模式,底行模式按Esc切换到命令模式。

在底行模式下输入wq保存并退出按回车就退出了。
在这里插入图片描述

1.1 命令模式

为了详细讲解,我们需要给代码加上行号,即切换到底行模式输入set nu,去除行号输入set nonu

1.1.1 光标移动

在命令模式下对光标做快速移动:Shift+g:移动到最后一行,gg:移动到第一行,n+Shift+g:快速移动到第n行

现在我要快速移动到文本的第666行,即666+Shift+g
在这里插入图片描述

Shift+6=^:快速移动到当前行开始,Shift+4=$:快速移动到当前行结尾
在这里插入图片描述

光标的控制h:左、j:下、k:上、l:右,当然使用键盘上的方向键也是可以的,但为什么会有这四个键呢?因为早些时候键盘上没有方向键。
在这里插入图片描述
n+h/j/k/l:进行光标的快速移动

w:按照单词为单位向右移动,b:按照单词为单位向左移动。n+w/b:按照n个单词为单位快速右/左移动

1.1.2 复制及撤销

yy:复制光标所在的行,p:将复制内容粘贴到当前行的下一行
在这里插入图片描述
n+yy:拷贝从当前光标所在行往下的n行文字,n+p:将复制的内容重复粘贴n

u:撤销操作Ctrl+r:对u的撤销进行撤销。假设你对上次的撤销操作后悔了,你可以撤销上次的撤销操作。
在这里插入图片描述
注意:只要没有退出vim,随时可以进行撤销操作,一旦退出,u/Ctrl+r就不起作用了

1.1.3 剪切及删除

dd:删除当前行,n+dd:删除从当前行开始向下的n如果后续没有进行p操作,那就是删除,如果后面进行p操作,那就叫剪切。

对文件进行100+ddp
在这里插入图片描述

x:删除光标所在字符,连续x会向右删除。Shift+x=X:向左删除。n+x/n+Shift+x:连续删n
在这里插入图片描述

1.1.4 替换

~:快速进行大小写转换
在这里插入图片描述

r:替换光标所在位置的一个字符。例如对光标所在位置进行r+2
在这里插入图片描述
n+r:替换光标所在位置及之后的n-1个位置的字符。例如6+r+1
在这里插入图片描述

Shift + r进入替换模式,批量化的内容替换Esc再切换成命令模式
在这里插入图片描述
会直接对之前的内容进行替换

1.1.5 批量化注释/去注释

想要选择区域,我们需要进入到视图模式,即Ctrl+v进入视图模式,Esc切换成命令模式。

  • 批量化注释

Ctrl+v进入视图模式,hjkl进行区域选择,Shift+i=I进入插入模式输入//,按Esc切换成命令模式完成注释
在这里插入图片描述

  • 批量化去注释

Ctrl+v进入视图模式,hjkl进行区域选择,按d删除注释
在这里插入图片描述

1.2 底行模式

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

底行模式输入set nu增添行号,去除行号输入set nonu

/XXX:匹配搜索,按n匹配到下一个最近的XXX
在这里插入图片描述

!cmd:不退出vim,可以直接执行cmd命令。例如在vim中对正在写的文件进行编译运行。
在这里插入图片描述

%s/src/dst/g:将文本中的src替换成dst。例如将打印信息换掉。
在这里插入图片描述

vim本身就有创建新文件的作用,了解这个之后,我们继续了解。我们平常写代码有时候会分成多文件管理,如头文件的声明,头文件的定义及源文件,在vim下我们也可以这样管理。

在底行模式下,输入vs即可进行分屏操作,Ctrl+ww即可实现光标在多个分屏之间的移动
在这里插入图片描述
在这里插入图片描述

在编译时总会有错误的时候,这时系统会直接报出错误的地方,此时我们使用vim打开源文件时光标可能并不在错误附近,一下一下挪太麻烦了,我们可以在打开时光标直接定位到错误的位置:vim 文件名 +行号
在这里插入图片描述

扩充:从命令模式进入插入模式,按a或按i或按o。从命令模式退出vim,按Shift+zz,等同于wq
在这里插入图片描述

二、vim的配置

当前的vim没有自动缩进功能,什么功能都没有,我们使用vim时,vim默认会在用户的家目录下找一个隐藏的配置文件.vimrcvim的那些自动缩进等功能是通过这个文件配置的,而这个文件是默认是没有的。

如何验证vim会默认打开.vimrc这个文件呢? 我准备了一个写入以下代码的文件。
在这里插入图片描述

我们创建.vimrc,并在其中写入一行set nu
在这里插入图片描述
接下来,我们再次使用vim打开code.c
在这里插入图片描述
它就默认加上行号了!所以,vim做配置,本质是将配置项写入到/home/XXX/.vimrc配置文件中。

所以进行vim的配置就转化成了我们需要写入哪些配置项

即使是将功能齐全的配置项全部添加到.vimrc中,vim依旧会很难用,想更好用此时你就需要安装vim插件,你会发现配置vim比较麻烦。

有没有一键安装vim的呢? 诶,有的。 这个命令不要在root用户下运行,在普通用户下运行即可,curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh。接下来你就有了一个功能强大的vim
在这里插入图片描述

注意:配置好vim后只会在当前用户账号下有效

配置好后,有什么极个别命令不符合你的要求可以配合大模型搜索相应的配置项,并在.vimrc中自主搜索修改即可。

总结:
以上就是本期博客分享的全部内容啦!如果觉得文章还不错的话可以三连支持一下,你的支持就是我前进最大的动力!
技术的探索永无止境! 道阻且长,行则将至!后续我会给大家带来更多优质博客内容,欢迎关注我的CSDN账号,我们一同成长!
(~ ̄▽ ̄)~


文章转载自:

http://U0o2zW6y.nrfqd.cn
http://gQnTf55C.nrfqd.cn
http://7GXBYhGj.nrfqd.cn
http://yghb8KWY.nrfqd.cn
http://MNiGvCe9.nrfqd.cn
http://BnZdtUIx.nrfqd.cn
http://td9XGYov.nrfqd.cn
http://KhQqSVX2.nrfqd.cn
http://y1N1tEOn.nrfqd.cn
http://46lHiijY.nrfqd.cn
http://M5GkMMaG.nrfqd.cn
http://YB29FOxP.nrfqd.cn
http://xG9IGvJs.nrfqd.cn
http://SZ6B81P8.nrfqd.cn
http://Ck1xMqvm.nrfqd.cn
http://U3UW6jJ6.nrfqd.cn
http://KZ3QCqql.nrfqd.cn
http://d4Cgd7cc.nrfqd.cn
http://1wZA9HVo.nrfqd.cn
http://cuviswNN.nrfqd.cn
http://KC6kPiQV.nrfqd.cn
http://Xut6ukXF.nrfqd.cn
http://ylcXY874.nrfqd.cn
http://Yut9v8Wj.nrfqd.cn
http://el6nXoqZ.nrfqd.cn
http://N7Jhg460.nrfqd.cn
http://Xqy2gVst.nrfqd.cn
http://O4zgifwk.nrfqd.cn
http://Yr74Ouj1.nrfqd.cn
http://4GTBF4M1.nrfqd.cn
http://www.dtcms.com/a/372917.html

相关文章:

  • 迁移学习:人工智能的智慧传承与革新之道
  • SQL面试题及详细答案150道(116-135) --- 高级查询与函数篇
  • LRU 缓存
  • Redis的Feed流实现方案
  • 5G专网、物联网专业技术知识
  • LaTeX TeX Live 安装与 CTAN 国内镜像配置(Windows / macOS / Linux 全流程)
  • 脑电数据预处理十六:自动化阈值检测原理与实践
  • 9月8日
  • Java全栈开发工程师的实战面试经历:从基础到微服务
  • 冰火岛 Tech 传:Apple Foundation Models 心法解密(上集)
  • 腾讯云 CLB (Cloud Load Balancer) 为例,详细讲解如何配置 Nginx 集群
  • 25.线程概念和控制(二)
  • VMware-三种网络模式原理
  • 【Java实战㉝】Spring Boot实战:从入门到自动配置的进阶之路
  • 【WRF-VPRM 预处理器第一期】完整安装(服务器)
  • 【Unity笔记】Unity 编辑器扩展:打造一个可切换 Config.assets 的顶部菜单插件
  • Visual Studio Code设置个性化背景教程
  • AI内容标识新规实施后,大厂AI用户协议有何变化?(二)百度系
  • 【大模型应用开发 5.LlamaIndex知识管理与信息检索】
  • 打开SOLIDWORKS非常缓慢的测试排查方法
  • 《Redis Cluster 去中心化实战指南:从集群搭建、故障转移到扩缩容全流程》
  • 大厂的服务器自动扩缩容
  • 02OpenCV基本操作
  • 在Word和WPS文字中将手机中间4位替换为星号****
  • Chrome的“无处不在”与推动Web平台演进的使命
  • 开源PSS解析器1
  • 软件OS研发行业人机料法环应用总结:基于鱼骨图的分析框架
  • PyTorch 中nn.Embedding
  • Linux之环境变量(内容由浅入深,层层递进)
  • Linux control group笔记