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

文章目录

vim 的介绍(6-0.27.50)

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

见一见 vim

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

bash 复制代码
[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系统来说,一切皆为文件(不区分后缀),但是软件是区分后缀的

bash 复制代码
[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进行选择,此时光标是块状的。然后按键盘上的I(shift + 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!强制保存并退出

相关推荐
律宏阔2 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔2 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴2 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千2 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei372 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei372 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei372 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW2 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
GeW3 小时前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux
yunwei373 小时前
eBPF 开发者教程: 简单的 XDP 负载均衡器
linux·后端·性能优化