Linux基本工具——vim

news2024/9/22 5:35:20

Linux编辑器vim

  • 什么是vim
  • vim的三种常用模式
  • vim的基本操作
    • 命令模式
    • 插入模式
    • 底行模式
  • 搭配vim环境
  • sudo怎么才能让普通用户使用

什么是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要改成你信任的用户名。
最后强制保存退出就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS7 编译安装最新的Linux Kernel 6.0 rc3

哪个男孩不想手动编译一份自己的内核呢?安装编译环境 CentOS7安装必要的包 yum groupinstall "Development Tools" -y && yum install openssl-devel -y && yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-…

Java核心技术卷Ⅰ-第四章对象和类

重点 1.使用预定义类 2.方法参数 3.对象构造 4.包 5.类设计技巧 1.使用预定义类 一个源文件只能有一个公共类,可以有任意数目的非公共类可以使用通配符调用Java编译器:javac Test*.java使用var声明局部变量就不用担心0、0L和0.0之间的区别,因…

找出链表中间结点的三种解法

初阶链表刷题注意!!!学习的是解题的思维! 找出链表的中间结点(链接在末尾) 解题思路 数组解法 由于链表不能通过下标访问对应的结点,所以我们将所有的结点存储在数组中,这样就可以通…

测试开发怎么学?

随着互联网行业的高速发展,快速高质量的产品版本迭代成为企业始终立于不败之地的迫切需求,而在短期迭代的快节奏中.传统测试工作面对更大压力,无法持续提供高效率高质量的人力支撑,所以越来越多的企业需要技术更为全面的测试开发工程师。 测试开发本质上属于测试,区…

【数据结构】二叉树链式结构的实现

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:数据结构 文章目录一、二叉树的链式存储二、二叉树链式结构的实现结构设计手动构建二叉树前序遍历中序遍历…

游戏思考26:游戏服务器压力测试文档(最近在忙这个,这个会更新频繁,12/03未完待续)

文章目录一、压力测试关注点二、计算最耗时的加载操作1)从数据库读取数据,对加载的类型进一步划分各种类型,计算最耗时操作2)查看CPU随着在线人数的变化所占百分比3)查看内存变化4)备注一、压力测试关注点 …

【C语言字符串】一道题检验你的字符串学习情况

作者:匿名者Unit 目录 一.字符串引言1.字符串基础二.洛谷P5734详解1.字符串相关库函数(1) strcpy函数 (2) strcat函数 (3)strstr函数 2.题目讲解一.字符串引言 1.字符串基础 字符串通常以\0作为…

008. 子集

1.题目链接: 78. 子集 2.解题思路: 2.1.题目要求: 给一个元素各不相同的数组 nums,返回各种可能的子集(子集不能重复) 比如: 输入:nums [1,2,3] 输出:[[],[1],[2],[…

做了8年前端,感谢那些优秀的后端,陪伴我工作,教会我成长

☆ 前段时间由于一时的头脑发热,写了一篇《做了8年前端,细说那些曾经让你浴霸不能的后端》的博客,虽然每个细节也都属实吧,但始终是一些负能量的东西,建议大家不要去看了,今年互联网情况已经这样了&#xf…

安卓APP源码和设计报告——体育馆预约系统

项目名称:体育馆体育场预约系统专业:班级:学号:姓名: 目 录 一、项目功能介绍3 二、项目运行环境3 1、开发环境3 2、运行环境3 3、是否需要联网3 三、项目配置文件及工程结构4 1、工程配置文件4 2、工程结构目…

磨金石教育摄影技能干货分享|上海随手拍——叶落满街,秋意未尽

步入十二月以来,气温也随之骤降,这时候才明显感到初冬已至。冬天的寒风就是最好的脱叶剂,走在街道上,抬眼望去两旁的树木多数已经稀疏。只有残留的绿意还在迎着微微的寒风摇动。 我最喜欢的是秋天,因为秋天的草木最有色…

基于keras与tensorflow手工实现ResNet50网络

前言 在文章 基于tensorflow的ResNet50V2网络识别动物,我们使用了keras已经提供的神经网络,完成了图像分类的。这个时候,小明同学就问了,那么我怎么自己去写一个神经网络来进行训练呢? 本文就基于tensorflow&#xff…

Redis原理篇——五种基本数据类型

一、Redis底层数据结构 1. SDS 获取字符串长度耗时: 由于Redis底层是C语言编写的,C语言中没有字符串这个概念,本质上都是字符数组,获取字符串长度就是遍历数组获取长度(遍历到 \0结束标识结束 )时间复杂度…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校毕业生信息采集系统05hj2

大四计算机专业的同学们即将面临大学4年的最后一次考验--毕业设计。通过完成毕业设计来对过去4年的大学学习生活做一个总结,也是检验我们学习成果的一种方式,毕业设计作品也是我们将来面试找工作的一个敲门砖。 选题前先看看自己掌握哪些技术点、擅长哪…

数据库常用的数据类型和约束条件

文章目录一. 数据库常用的数据类型1. 数字类型1.1 整数类型:INT(m)和BIGINT(m)1.2 浮点类型:DOUBLE(m,n)2. 字符类型2.1 定长字符:CHAR(n)2.2 变长字符:VARCHAR(n)2.3 变长字符:TEXT(n)3. 日期类型3.1 语法格式:3.2 注意事项二. 约束条件1.主键约束(PRIMARY KEY)1.1 注意事项1.…

[附源码]Python计算机毕业设计Django美发店会员管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Web压测工具http_load原理分析

01、前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ 这个软件一直在保持着更新(不像webbench,已经是十年的老古董了。 webbench的源…

【Matplotlib绘制图像大全】(二十九):Matplotlib绘制热力图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

【经验分享】突然我的SM.MS的图床没法访问了(内附解决方法)

【经验分享】突然我的SM.MS的图床没法访问了(内附解决方法) 一大早写文章,发现Markdown里的图片全部都不能成功加载了,这个的确挺头疼的! 文章目录1 说一说现象2 简单排查一下3 查找解决方案4 实施解决方案5 总结6 更多…

高楼扔鸡蛋问题

1.对应letecode链接 高楼扔鸡蛋问题 2.题目描述 解题思路 题目是这样&#xff1a;你面前有一栋从 1 到 N 共 N 层的楼&#xff0c;然后给你 K 个鸡蛋&#xff08;K 至少为 1&#xff09;。现在确定这栋楼存在楼层 0 < F < N&#xff0c;在这层楼将鸡蛋扔下去&#xff…