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

【lesson5】linux vim介绍及使用

文章目录

  • vim的基本介绍
  • vim的基本操作
  • vim常见的命令
    • 命令模式下的命令
      • yy+p
      • n+yy
      • n+p
      • u
      • ctrl+r
      • G
      • gg
      • n+G
      • $
      • ^
      • w
      • b
      • h,j,k,l
      • dd
      • n+dd
      • n+dd+p
      • ~
      • shift+r
      • r
      • n+r
      • x
      • n+x
    • 底行模式下的命令
      • set nu
      • set nonu
      • vs 源文件
      • w
      • q
      • !+command(命令)
  • vim配置
    • 解决无法使用sudo问题

vim的基本介绍

首先vim是linux下的一款编辑器软件,只能写代码,vim是一个多模式编辑器软件。它有三种模式:
1.命令模式
2.插入模式
3.底行模式

我介绍vim的时候,大家再测试的时候可能会发现自己的vim会与我有所不同,不用担心因为我的vim是配置过的,在最后一部分会给大家讲vim如何配置。

vim的基本操作

首先要编辑代码就要先创建文件,然后用vim打开。
在这里插入图片描述
这里进入以后,vim会默认在命令模式
在这里插入图片描述
模式的切换:
在这里插入图片描述
上图就是vim各个模式的切换方法,命令模式相当于中间模式,要想底行模式切换到插入模式就得先切换到命令模式,

底行模式下:
vim保存:w(保存所写的代码)w!(强制保存)
vim退出:q(退出vim编辑模式)q!(强制性退出)
w和q可以合并使用,但是一定要先保存再退出。
在这里插入图片描述
在这里插入图片描述

vim常见的命令

命令模式下的命令

yy+p

yy功能:复制绿色光标所在行
p功能:从光标的下一行开始,粘贴一次复制的内容,并移动光标到复制内容的第一行
起始:
在这里插入图片描述
然后yy和p

在这里插入图片描述

n+yy

功能:从光标所在行开始向下复制n行(n在输入的时候为具体的数字例如:5yy,之后的n也是如此将不会再详细说明)
起始:
在这里插入图片描述
然后2yy和p
在这里插入图片描述

n+p

功能:从光标的下一行开始,粘贴n次复制的内容,并移动光标到复制内容的第一行
起始:
在这里插入图片描述
然后2yy+5p
在这里插入图片描述

u

功能:撤销之前的操作
起始:
在这里插入图片描述
然后2yy+5p
在这里插入图片描述
然后u撤销
在这里插入图片描述

ctrl+r

功能:撤销u的操作
起始:
在这里插入图片描述
然后2yy+5p
在这里插入图片描述
然后u
在这里插入图片描述
然后Ctrl+r
在这里插入图片描述

G

功能:光标直接定位到文件结尾
起始:
在这里插入图片描述
然后G
在这里插入图片描述

gg

功能:光标直接定位到文件最开始
起始:
在这里插入图片描述
然后gg
在这里插入图片描述

n+G

功能:光标直接定位到第n行
起始:
在这里插入图片描述
然后10G
在这里插入图片描述

$

功能:光标直接定位到行的最结尾
起始
在这里插入图片描述
然后$
在这里插入图片描述

^

功能:光标直接定位到行的最开始
起始:
在这里插入图片描述
然后^
在这里插入图片描述

w

功能:光标按单词为单位,向后移动
起始:
在这里插入图片描述
然后w
在这里插入图片描述

b

功能:以单词为单位向前移动
起始:
在这里插入图片描述
然后b
在这里插入图片描述

h,j,k,l

h:光标向左移动
j:光标向下移动
k:光标向上移动
l:光标右移动(小写L)

dd

功能:删除光标所在行
起始:
在这里插入图片描述
然后dd
在这里插入图片描述

n+dd

功能:从光标所在行开始删除n行
起始:
在这里插入图片描述
然后9dd
在这里插入图片描述

n+dd+p

功能:剪切
起始:
在这里插入图片描述
9dd+p(在return后面p)
在这里插入图片描述

~

功能:光标所在处进行大小写切换
起始:
在这里插入图片描述
然后~
在这里插入图片描述

shift+r

功能:进入替换模式,从光标所在位置开始替换
起始:
在这里插入图片描述
然后shift+r进入替换模式
在这里插入图片描述
在这里插入图片描述
按ESC退出替换模式
在这里插入图片描述

r

功能:替换光标所在位置的一个字符
起始:

然后r+c
在这里插入图片描述

n+r

功能:从光标所在处开始替换n个字符
起始:
在这里插入图片描述
然后5r+c
在这里插入图片描述

x

功能:删除光标处的一个字符
起始:
在这里插入图片描述
然后x
在这里插入图片描述

n+x

功能:从光标处开始向后删除n个字符
起始:
在这里插入图片描述
然后5x
在这里插入图片描述

底行模式下的命令

set nu

功能:调出行号
起始:
在这里插入图片描述

然后set nu
在这里插入图片描述

set nonu

功能:取消行号
起始:
在这里插入图片描述
然后set nonu
在这里插入图片描述

vs 源文件

功能:分屏打开其它文件,如果源文件不存在则自己创建一个
起始:
在这里插入图片描述
然后vs myfile.c
在这里插入图片描述
我们可以看到光标在myfile.c文件,那么如何切换到test.c文件呢?
键盘按:Ctrl+w+w即可切换
在这里插入图片描述
我们还可以从test.c复制或者剪切内容到myfile.c
在这里插入图片描述

w

功能:保存vim所编辑的内容

q

功能:退出vim

!+command(命令)

功能:在不退出vim的情况下指向命令
起始:
在这里插入图片描述
然!+command(命令)
在这里插入图片描述
在这里插入图片描述
退出去看我们确实多了个a.out的文件
在这里插入图片描述
运行
在这里插入图片描述
我们确实成功了

vim配置

在这里插入图片描述
如果vim配置过,在工作目录下会有.vimrc文件如果没有,则自己创建一个然后自己在文件里面配置vim,在文件里面不知道怎么配置的,可以在网上搜索一般都搜索的到。
给大家演示一下:
在这里插入图片描述
我们发现工作目录下没有./vimrc,所以自己创建一个。
在这里插入图片描述
然后打开.vimrc就可以开始配置了
比如:
加上行号
在这里插入图片描述
保存退出,并创建一个源文件,然后打开
在这里插入图片描述
在这里插入图片描述
我们会发现自动有了行号,所以vim就是这么配置的。

解决无法使用sudo问题

在这之前我们大部分初学者应该的不能使用sudo,这是因为没有添加信任关系,那么如何添加呢?
首先先切换成root用户然后用vim 打开/etc/sudoers
在这里插入图片描述
然后:调出行号
在这里插入图片描述
大概在100多行有个
在这里插入图片描述
我们只要在复制107行,然后粘贴在107行下面,然后把%wheel换成用户名即可,最后wq!强制退出。到这就已经可以使用了。

相关文章:

【lesson5】linux vim介绍及使用

文章目录 vim的基本介绍vim的基本操作vim常见的命令命令模式下的命令yypnyynpuctrlrGggnG$^wbh,j,k,lddnddnddp~shiftrrnrxnx 底行模式下的命令set nuset nonuvs 源文件wq!command(命令) vim配置解决无法使用sudo问题 vim的基本介绍 首先vim是linux下的…...

【玩转Linux】Linux输入子系统简介

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…...

grid map学习笔记2之grid map的一些常规定义和功能包说明

文章目录 0 引言1 常规定义1.1 单层grid map1.2 多层grid map1.3 迭代器类别1.4 移动grid map的位置 2 功能包2.1 grid_map_rviz_plugin2.2 grid_map_sdf2.3 grid_map_visualization2.3.1 订阅的主题2.3.2 发布的主题 2.4 grid_map_filters 0 引言 grid map学习笔记1已成功在U…...

Python-文件操作

Python文件操作 1. 打开文件 使用open()函数打开文件,指定文件名和模式,常用模式有: r - 读取(默认)w - 写入(会先截断文件)a - 追加b - 二进制模式t - 文本模式(默认) - updating (reading and writing) f open(data.txt,r) # 打开data.txt文件用于读取2. 读取文件 f.re…...

windows中注册redis服务启动时报1067错误

注册完redis服务,打开计算机 服务时确实有redis服务存在,但是点击启动时却报1067错误,而命令行用redis-server.exe redis.windows.conf 命令却也可以启动 查看6379的端口也没有被占用(netstat -ano | findstr :6379) …...

大数据面试题:HBase的RegionServer宕机以后怎么恢复的?

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)HBase一个节点宕机了怎么办;2)HBase故障恢复 参考答案: 1、HBase常见故障 导…...

ansible的脚本——playbook剧本

目录 一、playbook的组成 二、 playbook安装httpd服务 1.编写playbook剧本 2.运行playbook 三、定义、引用变量 四、 指定远程主机sudo切换用户 五、when条件判断 六、迭代 七、Templates 模块 1.先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变…...

【系统监控程序】

用python编写一个系统监控程序,需要每隔一秒钟记录系统每个进程的资源占用和整体的资源占用情况,并输出成json,保存到文本文件。 import psutil import json import timedef get_process_usage():process_list []for proc in psutil.proces…...

计算机论文中名词翻译和解释笔记

看论文中一些英文的简写不知道中文啥意思,或者一个名词不知道啥意思。 于是自己做了一个个人总结。 持续更新 目录 SoftmaxDeep Learning(深度学习)循环神经网络(Recurrent Neural Network简称 RNN)损失函数/代价函数(Loss Function)基于手绘草图的三维模型检索(Ske…...

读书笔记-《ON JAVA 中文版》-摘要20[第十九章 类型信息-1]

文章目录 第十九章 类型信息1. 为什么需要 RTTI2. Class 对象2.1 Class 对象2.2 类字面常量2.3 泛化的 Class 引用 3. 类型转换检测4. 注册工厂5. 类的等价比较6. 反射:运行时类信息7. 自我学习总结 第十九章 类型信息 RTTI(RunTime Type Information&am…...

3、Linux驱动开发:模块_传递参数

目录 🍅点击这里查看所有博文 随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记…...

基于 ThinkPHP 5.1(稳定版本) 开发wms 进销存系统源码

基于ThinkPHP 5.1(LTS版本)开发的WMS进销存系统源码 管理员账号密码:admin 一、项目简介 这个系统是一个基于ThinkPHP框架的WMS进销存系统。 二、实现功能 控制台 – 权限管理(用户管理、角色管理、节点管理) – 订…...

全面解析 SOCKS5 代理和 HTTP 代理在网络安全与爬虫应用中的技术对比与应用指南

一、SOCKS5 代理和 HTTP 代理的基本原理 SOCKS5 代理:SOCKS5 是一种网络协议,可以在传输层代理 TCP 和 UDP 请求。它不解析请求内容,仅在客户端和代理服务器之间建立连接,并转发数据。SOCKS5 代理支持众多网络协议和端口类型&…...

DevOps系列文章 之 docker 制作kafka镜像

Docker制作Kafka镜像教程 概述 本教程将指导你如何使用Docker制作一个Kafka镜像。Kafka是一个高性能、分布式的消息队列系统,用于处理大规模的实时数据流。使用Docker制作Kafka镜像可以方便地部署和管理Kafka集群。 整体流程 下面是制作Kafka镜像的整体流程&#xf…...

iPhone 安装 iOS 17公测版(Public Beta)

文章目录 步骤1. 备份iPhone资料步骤2. 申请iOS 17 公测Beta 资格步骤3. 下载iOS 16 Beta 公测描述档步骤4. 选择iOS 17 Beta 公测描述档更新项目步骤5. 升级iOS 17 Public Beta 公开测试版 苹果已经开始向大众释出首个iOS 17 公开测试版/ 公测版( iOS 17 Public Beta)&#xf…...

Spingboot yaml 配置文件及数据读取

属性配置在这里插入图片描述 修改服务器端口 → server.port80 修改 banner → spring.main.banner off(关闭)/console(控制台)/log(日志) 日志 → logging.level.rootinfo Common Application Properties 配置文件分类 优先级 如果三种文件共存时,优先级为&am…...

vue中使用axios发送请求时,后端同一个session获取不到值

问题描述: 在登录页面加载完成后通过axios请求后端验证码接口(这时后端会生成一个session用于保存验证码数值),当输入完用户名、密码、验证码后请求登录接口,报错验证码输入错误,打印后端保存验证码的sessi…...

html请求谷歌音频跨域问题(谷歌翻译接口)虚拟机ping不通google(下载谷歌音频、下载百度翻译音频)

文章目录 调用谷歌翻译接口,尝试了几种方案,都提示跨域不行第一种(通过js代码获取音频文件的Blob对象,提示跨域了)代码结果 第二种(尝试新窗打开音频url,404,估计也是跨域了&#xf…...

【设计模式|结构型】享元模式(Flyweight Pattern)

概述 享元模式(Flyweight Pattern)是一种结构型设计模式,它旨在通过共享对象来减少系统中的对象数量,以便在有限的内存中节省空间和提高性能。在享元模式中,对象分为两部分:内部状态(Intrinsic…...

最小覆盖子串(JS)

最小覆盖子串 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...