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

vim的相关命令 + 三种模式(10)

文章目录

  • vim 的介绍(6-0.27.50)
  • 见一见 vim
  • 基本的认识
  • 命令模式下的命令(非常重要)
  • 底行模式的命令
  • 补充更加实用的命令操作
  • 给vim添加皮肤

vim 的介绍(6-0.27.50)

  • 在Linux中各工具是独立的,写代码有写代码的工具(vim),调代码有调代码的工具(gdb),编译则是gcc/g++,所谓的工具就是命令
  • 不像Windows上安装的软件VS2022,它是一个集成开发环境(IDE),集开发,编译,调试,开发,多语言等功能于一体
  • vim是一个专注的编辑器,是Linux自带的最为经典的编辑器
  • vim它是一个多模式的编辑器,只要你需要在Linux下编辑文件就需要借助vimvim的相关用法(如何运用vim的相关指令,其它的编辑软件相关用法也是八九不离十)

见一见 vim

1. 如何在Linux上打印出hello world,先创建一个后缀为.c的普通文件,使用vim打开该文件会发现按什么都没有用,是因为目前处于命令模式,可以按键盘上的a,i,o进入插入模式

[xiao@hcss-ecs-28ce ~]$ ll code.c
-rw-rw-r-- 1 xiao xiao 0 Jun 11 16:12 code.c
[xiao@hcss-ecs-28ce ~]$ vim code.c

在这里插入图片描述

2. 写完代码后目前仍处于插入模式,需按ESc键退回到命令模式,再按shift + ;进入底层模式输入:wq,将该文件保存并退出

在这里插入图片描述

3. 现在通过gcc软件将code.c文件编译成可执行程序。之前咱提到过,对Linux系统来说,一切皆为文件(不区分后缀),但是软件是区分后缀的

[xiao@hcss-ecs-28ce ~]$ ll code.c
-rw-rw-r-- 1 xiao xiao 74 Jun 11 16:25 code.c
[xiao@hcss-ecs-28ce ~]$ cat code.c
#include<stdio.h>
int main()
{printf("hello world");return 0;
}[xiao@hcss-ecs-28ce ~]$ gcc code.c
[xiao@hcss-ecs-28ce ~]$ ll
total 28
-rwxrwxr-x 1 xiao xiao 8360 Jun 11 16:27 a.out(这就是编译的可执行程序)
drwxrwxr-x 2 xiao xiao 4096 Apr 12 15:56 BSTree
-rw-rw-r-- 1 xiao xiao   74 Jun 11 16:25 code.c
d--------- 2 xiao xiao 4096 Jun 10 00:41 dir
-rw-rw-r-- 1 xiao xiao  827 Apr  9 01:30 install.sh[xiao@hcss-ecs-28ce ~]$ ./a.out
hello world 

基本的认识

  • 一些简单的认知

    • 其实咱们在正常编写代码的时候,有时是进行输入操作(比如往文档你输入一些写的代码),这就是正常的编辑行为
    • 但平时在Windows上作键盘输入的时候,还有一些操作并没有体现在文档内部(比如ctrl + c,ctrl + v,ctrl + x等快捷方式),其实这些行为也算做编辑行为,但这些行为并不是向文件内部插入内容为目的(比如输入a,输入b),就只是为了复制,粘贴(输入命令)。所以在Windows咱们的操作已经被分成了两类,要么是在做正常的输入,要么是在输入命令控制
    • 只不过Linux中的vim正式将这两类模式区分开来,一个是插入模式,一个是命令模式(当然vim不只这两种模式)
    • 当你处于命令模式下,键盘中输入的所有内容全部当成命令,命令模式支持的命令也就几百个,而可能你在键盘中按的方式有无数多种,这也是为啥你在命令模式按啥几乎没反应的原因,因为没输入命令模式支持的命令
  • vim应该有八种模式,但我们真正要在意的其实只有三种模式:命令模式,插入模式,底行模式,而插入模式就是输入正常输入文本,所以真正需要掌握的只有另外两个模式(熟练运用这两种模式的命令对于写代码就绰绰有余了)
    在这里插入图片描述

命令模式下的命令(非常重要)

  • vim中进行正常编辑输入,一般是用不到鼠标的,所以就面临着一个很重要的问题:光标定位(输入内容得靠光标,才能指哪打哪,所以光标放在合适的位置很重要的)

    • 先声明一点,n + ...意思是先按键盘上的数字键,再按其它键(共同配合)
    • gg:光标定位到文本内容的最开始处(第一行的第一个字符)。n + gg:将光标定位到第n行的第一个字符
    • G:其实就是按键盘上的shift + g,将光标定位到文本内容的最末尾处(最后一行的最后一个字符)。n + G:这里光标也是定位到第n行的第一个字符
    • $:将光标定位到行尾,^:将光标定位到行首。这两个都是shift + 数字键进行输入,把这两个命令称作锚点
    • 如何通过光标进行左,右,下,上的移动:h→左,l→右,j→下,k→上
    • w/b:让光标以单词为单位进行前(w)后(b)移动。n + w/b:向前或向后跳过n个单词
    • 其实键盘上的方向键也是可以进行光标上的左右上下移动的,那为啥还支持h,j,k,l移动呢?这里不推荐用上下左右键,首先它比较远,用起来很不方便
    • 其次后面做批量化操作,有些批量化组合键不支持上下左右键。而且早期的键盘是没有上下左右键,只支持h,j,k,l进行光标的移动,这也是为了向前兼容
  • 命令模式的其他命令

    • yy:复制当前行。n + yy:从该行开始,向下复制n行(注意这里仅仅只是复制了内容,还没有进行粘贴,粘贴又是另外一个命令)
    • p:粘贴到当前行的下一行。n + p:将复制的内容从光标所在行开始,向下粘贴n次
    • dd:剪切或删除该行,如果剪切之后不粘贴那不就是删除了吗。n + dd:从该行开始,向下剪切或删除n行
    • x:删除光标所在的字符,X:删除光标前面的那个字符。n + x/X:向后或向前删除n个字符(包括光标所在的字符,X删除不包括光标所在的字符)
    • ~:将光标所在的字符进行大小写转换,转换完成后自动移动到下一个字符
    • r:将该光标所在的字符进行替换(输入你想替换的内容)。n + r:从光标处开始,将后n个字符替换成n个你输入的相同字符
    • R:就是键盘上的shift + r进入替换模式,只要在该模式下就能随便替换光标所在行的内容(只能往前,往前就是光标往右移动,不能往后),按Esc键回到命令模式
    • u:撤销操作。ctrl + r:对u进行撤销,只要不退vim都可以进行撤销
    • shift + z:保存并退出vim
    • 命令模式进入插入模式:可以按a(光标位于当前光标的下一个),i(当前光标所在处),o(从当前光标的这行,往下新启一行)

底行模式的命令

  • 只能从命令模式进入到底行模式,这是唯一途径。按:也就是键盘上的shift + ;,从命令模式进入到底行模式
  • 进入底行模式后,输入wq:退出并保存,其中w是保存,q是退出(两个都可以单独使用)。wq!:强制保存并退出(别!wq这种写法)
  • 退出并保存为啥会存在强制呢?可能以后需要配置文件,该配置文件是root的,而且有些配置文件十分的重要,那系统可能不会让你改,这时候就需要用到该命令,后面改sudo的配置文件就会用到
  • set nu:设置行号。set nonu:取消行号
  • 输入 / 要查找的信息:能在文档中定位到该信息的开始处。按下n,可以找到下一处相同的信息处
  • !命令(!gcc code.c 或者 !ls):可以在不退出vim的条件下,执行行命令,这样可以加快对代码的编辑,调试等操作
    在这里插入图片描述
  • vs 其它文件(比如 code.h):可以实现分屏操作。永远记住,在你整个终端当中,只显示一个光标,光标在哪个界面当中,就代表你正在编辑哪个文件
  • ctrl + ww:在分屏情况下进行界面光标的移动。可以分屏多个文件,如果vs不存在的文件,保存并退出后这个文件就会自动生成(在命令模式下
    在这里插入图片描述

补充更加实用的命令操作

  • 第一个实用的操作如何批量化的注释,如何批量化的去注释(视图模式下的批量化操作)

    1. 首先按ctrl + v从命令模式进入视图模式,界面底下会出现VISUAL BLOCK,从视图模式退出到命令模式也是按Esc
    2. 其次按h,j,k,l进行选择,此时光标是块状的。然后按键盘上的Ishift + i),再输入//,按键盘上的Esc即可
    3. 批量化去注释:先ctrl + v,再h,j,k,l进行选择,直接d
    4. 视图模式下的块状选择不仅仅用在批量化注释和批量化去注释,只是以这两个操作为载体,拓展运用到批量化编辑
  • 第二个实用的操作:在底行模式下进行批量化的替换,将文本中所有的同一种信息替换成你输入的内容。举个例子:%s/printf/print/g,用后者print去替换前者printf,g:global(全部的意思)

  • 第三个实用的操作vim code.c + 15,用vim打开code.c文件并让光标定位到第15行的第一个字符处(也可能是第15行附件)

  • 第四个实用的操作! 历史命令的第一个字符,快速执行历史命令
    在这里插入图片描述

给vim添加皮肤

  • 上面所打开的vim界面是配置了后的结果,最开始的vim啥也没有,没有语法高亮,缩进,报错,代码补全等相关便捷操作。注意:不要用root超级用户配置,要切换到普通用户下配置

  • 其次当你这个普通用户配置完成后,张三这个普通用户和root用户都用不了,其它普通用户想要用,就得自己去配置,你配置你的,不要影响别人

  • 配置具体步骤

    • 在这个.vimrc文件中写需要的配置项
      在这里插入图片描述
    • 在这个.vim目录下去下载对应的插件
      在这里插入图片描述
    • 当然你也可以去系统级别的配置,建议不要去配置,自己配置自己的即可
      在这里插入图片描述
    • OK,现在知道在哪里配置了,那该如何配置呢?要配置什么东西呢?直接问AI:帮我形成一个vim的配置清单,并说明
  • 我没有自己去搞这个配置了,我是去下载了我老师配置的,直接输入命令,一键到位。文件链接:https://gitee.com/HGtz2222/VimForCpp,目前只支持 Centos7 x86_64

  • 安装方法:在 shell 中执行指令(想在哪个用户下让vim配置生效,就在哪个用户下执行这个指令,强烈不推荐直接在 root 下执行),需要按照提示输入 root 密码,您的 root 密码不会被上传, 请放心输入.

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
  • 可能需要去换缩进,上面配置文件的缩进是2,在普通用户的加目录下:/home/xiao ,输入命令:vim .vimrc,进入底行模式,开始搜索:/2,回车将2改成4,wq!强制保存并退出

相关文章:

  • 【学习笔记】HTTP
  • AI【应用 01】Trae Agent Gitee自动化辅助神器(使用 MCP tools 创建自定义 Trae Agent 的探索分享)
  • Web 架构之服务网格(Service Mesh)实战解析
  • OpenGL ES绘制3D图形以及设置视口
  • 【第一章:人工智能基础】03.算法分析与设计-(1)算法复杂度分析
  • 记一次Android的逆向
  • 【多智能体】基于嵌套进化算法的多代理工作流
  • Android多媒体——同步Video显示时间(二十二)
  • 【android bluetooth 框架分析 04】【bt-framework 层详解 4】【AdapterState介绍】
  • git撤回commit
  • 流批一体向量化引擎Flex
  • 前端面试六之axios
  • 黑马教程强化day2-2
  • markdown文本转换时序图
  • 深入理解 TCP 套接字:Socket 编程入门教程
  • 数组方法_push()/pop()/数组方法_shift()/unshift()
  • 滚动—横向滚动时,如何直接滚动到对应的内容板块
  • `document.domain` API 的废弃与现代 Web 开发的转型
  • 从 8 秒到 1 秒:前端性能优化的 12 个关键操作
  • Maven 构建性能优化深度剖析:原理、策略与实践
  • 营销导向的网站建设的主要流程/网络运营具体做什么
  • 广州网站建设团队/百度收录的网页数量
  • 网站建设公司营业执照/海外营销公司
  • layui做的网站/自己的网站怎么在百度上面推广
  • 曲靖做网站价格/优化营商环境发言稿
  • 文登区住房和城乡建设局网站/广州seo学徒