• Linux基本工具——vim


    什么是vim

    vim是linux下一款功能强大,多模式的编辑器
    现阶段有13种模式。
    在这里插入图片描述
    这就是进入vim的方式。

    vim的三种常用模式

    在这里插入图片描述
    命令模式
    我们第一次打开vim 的时候进入的就是命令模式,也就是输入键盘上各种东西,其实就是指令。
    在这里插入图片描述
    那么怎么退出vim呢?
    输入shift + :+ wq(w是报错,q是退出)
    在这里插入图片描述
    这个叫做末行模式(底行模式)。
    那么插入模式怎么进呢?
    只需要在命令模式下按 i 就可以了:
    在这里插入图片描述
    这次就和普通记事本一样了。
    但是我们发现插入模式下无法用上面的方式退出,这个时候其实要先按esc退出插入模式,到命令模式。
    那么如果你到了底行模式不想退出怎么办呢?也同样按esc就能回到命令模式。
    在这里插入图片描述
    如果你想查看所有的模式(前提是命令模式):

    :help vim-modes

    vim的基本操作

    命令模式

    命令模式的意义是为了提高效率,比如我们在windows机器上想要复制一百行的内容需要鼠标一直圈,但是在linux机器上只需要一行命令即可,并且还不容易出错。
    光标定位
    在这里插入图片描述
    刚打开vim时,光标是在第一行第一个的位置,想要移动光标鼠标是不可以的。
    那么我想移动光标怎么办?
    在这里插入图片描述
    这时候用键盘上最右边下面的上下左右箭头就可以移动光标了。
    26个字母中h,j,k,l也是可以的,分别对应左,下,上,右,这是历史遗留的问题,因为早期的键盘并没有右下面的上下左右的箭头,现在有些键盘为了节省空间也并没有这些箭头。
    可是如果我想去跳转到这行的某个位置或者是某列的某个位置需要按很多次岂不是很麻烦?
    这时候可以用数字加上面键盘的操作键就可以了。
    如果想跳到某个单词的位置:
    w 向后按照单词移动
    b 向前按照单词移动
    这里是按照字母组合算的。
    注意:数字必须是字母上面的数字,不能是现在的大键盘带数字区域的地方。
    例:6l
    在这里插入图片描述
    光标就向右移动了6个字符的长度。
    如果某一行太长我想快速的移动到顶端或者是末尾呢?
    shift + 4 = $ 快速到达本行的末尾
    shift + 6 = ^ 快速到达本行的开头
    shift + g = G 快速到达最后一行的第一个字符处(空格除外)
    gg 快速到达第一个行的第一个字符处(空格除外)
    同理,G 和 gg 如果只是想到达某行的第一个位置可以在前面加n。
    例:4 + shift + g
    在这里插入图片描述
    如果想要撤销操作按u。
    如果后悔撤销操作按ctrl + r
    文本复制相关内容
    以下操作前提都是光标所在行。
    yy复制一整行内容 n + yy 复制n行内容,包括光标行下面的n-1行
    p 粘贴 n + p 多行粘贴,位置是光标行下一行开始
    dd删除 n + p 多行删除
    ndd + p 多行剪切 + 粘贴
    例:yy + p
    在这里插入图片描述

    在这里插入图片描述
    例:dd
    在这里插入图片描述
    在这里插入图片描述
    例如:dd + p
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    文本编辑
    如果想将一行字母都换成大写怎么办呢?
    shift + ` = ~ 将一行字母小写换成大写,大写换成小写。
    例:
    在这里插入图片描述
    在这里插入图片描述
    如果我们在写的过程中需要了某一行错误或者是某个字符错误,你懒得删除想直接写上去怎么办呢?
    这里还有一个模式叫做替换模式
    shift + r = R 切换到替换模式
    例:
    在这里插入图片描述
    在这里插入图片描述
    这里我并没有进行删除再输入,而是直接输入,如果你觉得输入有误可以按退格键。
    同理,按esc退回到命令模式。
    如果觉得切换成替换模式很麻烦,可以在命令模式下替换:
    r 替换单个字符 n +r 替换批量字符
    例:4 + r + a
    在这里插入图片描述
    在这里插入图片描述
    行内删除操作在命令模式下是用x 与 X
    区别就是x删除光标位置字符之后的字符,X是删除之前的,此操作也支持n + x 与n + X,也支持删除的用p进行粘贴。
    例:
    在这里插入图片描述
    x
    在这里插入图片描述
    X
    在这里插入图片描述
    那么如果你想对某段单词进进行修改呢?
    c + n + w 表示更改n个单词到尾处。
    当你执行这个操作时,删除了n个单词之后会进入到插入模式让你去自己更改:
    例:c + w
    在这里插入图片描述

    在这里插入图片描述

    插入模式

    插入模式就是输入你要写的东西,但是从命令模式——>插入模式有好几种的进入方式:
    命令模式下的光标:
    在这里插入图片描述
    i 你的光标在哪里,进入插入模式的光标位置与命令模式光标位置相同。
    在这里插入图片描述

    a 进入插入模式的光标会在命令模式下光标的下一个位置。
    在这里插入图片描述

    o 进入插入模式的光标位置会在命令模式下光标位置的本行进行换行操作到达下一行的开头。
    在这里插入图片描述

    底行模式

    这里就是你想保存和退出vim的地方。
    如果你想显示vim的行号可以在底行输入

    set nu/nonu

    在这里插入图片描述
    在这里插入图片描述

    vim还有分屏的操作

    vs 你想要分屏的文件

    在这里插入图片描述

    我是在test.c文件用vim底行下进行分屏的,分屏的文件是baiye.c。
    这里可以多个分屏,但是光标指挥在一个屏幕上显示,就像windows上面你只能控制一块屏幕。
    如果想切换光标的屏幕:

    ctrl + ww

    在这里插入图片描述

    这里你也可将test.c的东西拷贝粘贴到baiye.c中。
    那么如果你想在vim的底行模式下执行linux的命令怎么办呢?这里在前面加上一个 ! 就可以了。
    在这里插入图片描述

    在这里插入图片描述
    底行中还有一个替换操作:
    比如我要将printf换成cont

    %s/printf/cout/g

    在这里插入图片描述
    在这里插入图片描述
    如果你发现你无法退出或者是写入,那就再后面加 !
    w! 强制保存 q! 强制退出 wq! 强制保存并退出。

    搭配vim环境

    我们在用vim的时候很不爽,因为没有自动补齐等等一些东西,所以需要让他和VS编译器差不多用起来才舒服。
    这里要注意,每个用户都是由单独配置vim的文件的,叫做 .vimrc ,这个文件是在每个用户的家目录下的,就算是root用户配置了vim也是单独的,影响不到普通用户。
    在这里插入图片描述
    家目录没有怎么办?那就创建一个:
    然后用vim进入.vimrc中:
    在这里插入图片描述
    这里面最初是什么都没有的,这也能说明为什么最初的vim用起来就跟windows的记事本一样了。
    如果你想配置你的vim就在这里添加指令然后保存退出就可以了(指令在百度找):

    set nu " 显示行号
    set tabstop=4 " 设置软制表符宽度为4
    set softtabstop=4 " 设置软制表符宽度为4
    set shiftwidth=4 " 设置缩进的空格数为4

    先用上面的做演示,在vim下 " 是注释的意思。
    保存退出之后先用source .vimrc测试一下:
    在这里插入图片描述
    没问题,用vim打开一个文件试试:
    这里我使用tap看看位移多少个空格
    在这里插入图片描述
    在这里插入图片描述
    配置vim的本质就是修改自己的vimrc。

    sudo怎么才能让普通用户使用

    首先把自己变成root用户,然后用vim打开/etc/sudoers这个目录:
    在这里插入图片描述
    在这里插入图片描述
    然后找到第100行这个位置,把这个复制粘贴到下一行,不过root要改成你信任的用户名。
    最后强制保存退出就可以了。

  • 相关阅读:
    STL教程5-STL基本概念及String和vector使用
    rpm安装mysql8后碰到的问题
    JavaWeb开发中为什么Controller里面的方法是@RequestMapping?
    使用 ggseg 对大脑分区统计结果进行可视化,如对皮层厚度差异T值进行可视化
    数据结构之算法
    【微服务】微服务常见概念
    windows终端调用clangd出现Missing Content-Length header的问题
    [附源码]java毕业设计实践教学管理系统
    说说mybatis中的#{} 和 ${}
    2023年【焊工(初级)】报名考试及焊工(初级)考试总结
  • 原文地址:https://blog.csdn.net/qq_63580639/article/details/128154883