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

Linux:vim的简单使用

在这里插入图片描述

个人主页 : 个人主页
个人专栏 : 《数据结构》 《C语言》《C++》《Linux》

文章目录

  • 前言
  • 一、vim的基本概念
  • 二、vim的基本操作
  • 三、vim正常模式命令集
  • 四、vim底行模式命令集
  • 五、.xxx.swp的解决
  • 总结


前言

本文是对Linux中vim使用的总结


一、vim的基本概念

vim是一款多模式的文本编辑器,vim里有许多子命令,来进行代码编写的操作。本文将总结vim的三种常用模式,分别是命令模式(command mode),插入模式(insert mode),底行模式(last line mode),其中默认打开命令模式

  • 命令模式
    控制屏幕光标的移动,字符,字或行的删除,移动复制某区段及进入插入模式,或者到底行模式
    在这里插入图片描述
    输入 vim 文件名 指令后进入的界面就是命令模式
  • 插入模式
    只有在插入模式下,才可以做文字输入,按[ESC]键可以回到命令模式。
    在这里插入图片描述
    在命令模式下输入:i,a,o都可以进入命令模式
  • 底行模式
    文件保存或退出,也可以进行文件替换,找字符串(/ 字符串),列出行号(set nu)等操作。在命令模式下,shift + ; 进入底行模式。在底行模式下,可以查看vim的所有模式( help vim-modes)
    在这里插入图片描述
    在这里插入图片描述
    按h,j,k,l进行左,下,上,右移动光标。输入shift ; q退出

二、vim的基本操作

在这里插入图片描述

  • 进入vim,在系统提示符号输入vim及文件名称后,就可以进入vim全屏膜编辑模式
    在这里插入图片描述
    要注意,在命令行模式下,不能输入文字。要在插入模式才能输入文字
  • 命令行模式 到 插入模式
    输入 i,a,o都可以
    在这里插入图片描述
    但输入i,光标不移动。输入a,光标向右移动一字符。输入o,光标向下移动一行。
    在这里插入图片描述
    现在我们处于命令行模式,光标位于第三个a处。
    输入 i :
    在这里插入图片描述
    输入:o
    在这里插入图片描述
    输入:a
    在这里插入图片描述

  • 插入模式 切换至 命令行模式
    目前处于插入模式,就只能一直输入文字,如果发现输入错误,想用光标往回移动,将该字符删除,可以先输入 ESC转到命令行模式在删除文字。当然也可以直接删除
    在这里插入图片描述

  • 命令行模式 转到 底行模式
    输入shift ;
    在这里插入图片描述

三、vim正常模式命令集

  • 插入模式

输入 i 切换进入插入模式,按 " i "进入插入模式后从光标当前位置开始输入文件
输入 a 进入插入模式,从目前光标所在位置的下一个位置开始插入文字
输入 o 进入插入模式,插入新的一行,从行首开始输入文字


  • 移动光标

vim可以直接用键盘上的光标来上下移动,但正规的vim是用小写字母 h,j,k,l分别控制光标左,下,上,右移动一格
输入 shifr g(G):移动到文件的最后
在这里插入图片描述
输入 $:移动到光标所在行的行尾
在这里插入图片描述
输入 ^:移动光标到所在行的行首。 ^ 和 $ 表示一行的开始与结尾,被称为锚点符号
在这里插入图片描述
输入 w:光标调到下一个字的开头
在这里插入图片描述
输入 e:光标调到下一个字的字尾
在这里插入图片描述
输入 b:光标回到上个字的开头
在这里插入图片描述
输入 #|:光标移到该行的第#个位置
在这里插入图片描述
输入 gg:进入文本开始
在这里插入图片描述
输入 shift + g :进入文本末端
在这里插入图片描述
输入 ctrl + b :屏幕向后移动一页
输入 ctrl + f:屏幕向前移动一页
输入 ctrl + u:屏幕向后移动半页
输入 ctrl + d:屏幕向前移动半页


  • 删除文字

x:每按一次,删除光标所在位置的一个字符
在这里插入图片描述
#x:表示删除光标所在位置的后面(包含自己在内)#个字符
在这里插入图片描述
X(大写):每按一次,删除光标所在位置前一个字符
在这里插入图片描述
dd:删除光标所在行
在这里插入图片描述
#dd:从光标所在行开始删除#行
在这里插入图片描述


  • 复制

yy:复制光标所在行到缓冲区
#yy:复制包含光标所在行后#行到缓冲区
p:将缓冲区的字符贴到光标所在的位置。注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能。
在这里插入图片描述
在这里插入图片描述
注意dd可以与p配合使用,当只使用dd,就是删除。但是在dd后再使用p就是剪切。


  • 替换

r :替换光标所在处的字符
在这里插入图片描述
R:替换光标所到之处的字符,直到按ESC为止 (也就是 shift + r 进入替换模式)
在这里插入图片描述
shift ~:智能大小写转换
在这里插入图片描述


  • 撤销上一次操作

u :如果你误操作一个命令,可以按u,回到上一个操作。按多次u可以执行多次回复
在这里插入图片描述
ctrl + r:对撤销的回复
在这里插入图片描述


  • 更该

cw:更改光标所在处的字到字尾处
在这里插入图片描述
c#w:更改光标所在的字(包含光标所在的字)后#个字
在这里插入图片描述


  • 跳至指定的行
  • ctrl + g:列出光标所在的行号
  • 在这里插入图片描述
  • #G:光标移动至文件的第#行行首
  • 在这里插入图片描述

  • 批量化注释

ctrl + v -> j / k两个按键上下选中区域 -> shift + i -> // -> ESC
在这里插入图片描述

四、vim底行模式命令集

  • 列出行号

set nu:输入set nu后,会在文件中的每一行前面列出行号
在这里插入图片描述
set nonu:取消行号
在这里插入图片描述


  • 跳到文件中的某一行

#:#表示一个数字,在冒号后输入一个数字,在按回车键就会跳到该行
在这里插入图片描述


  • 查找字符

/关键字:先按/,再输入你想寻找的字符,如果第一次的关键字不是你想要的,可以一直按 n 会往后寻找到你要的关键词
在这里插入图片描述
?关键字:先按?,再输入你想寻找的关键字,如果第一次的关键字不是你想要的,可以一直按 n 会往后寻找到你要的关键字
在这里插入图片描述


  • 保存文件
    w:在冒号后输入字母w,就可以保存文件
    在这里插入图片描述

  • 退出vim

q:按q就是退出,如果无法离开vim,可以输入 q!强制退出vim
在这里插入图片描述
wq:一般建议离开时,搭配w一起使用,这样在退出的时候还可以保存文件

五、.xxx.swp的解决

在打开文件时,如果直接退出shell,会产生一个隐藏备份文件.xxx(文件名).swp。此时我们在打开xxx文件就无法打开,这时我们可以直接rm掉.xxx.swp文件
如下:我们vim test.txt文件再输入一些内容,之后直接退出shell就会查收.test.txt.swp文件
在这里插入图片描述
此时我们不能vim test.txt打开文件,会有如下提示
在这里插入图片描述
我们只有rm .test.txt.swp文件后才可以正常打开文件
在这里插入图片描述


总结

以上就是我对于Linux中vim使用的总结。感谢支持!!!
在这里插入图片描述

相关文章:

Linux:vim的简单使用

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、vim的基本概念二、vim的基本操作三、vim正常模式命令集四、vim底行模式命令集五、.xxx.swp的解决总结 前言 本文是对Linux中vim使用的总结 一、vim的基本概念 …...

Python---文件和文件夹操作

os模块 在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下: 第一步:导入os模块 import os 第二步:调用os模块中的相关方法 os.函数名() 与文件操作相关方法 编号函数功能1os.rename(目标文件名称&…...

electron-vue运用及案例代码

前言 Electron是一个使用JavaScript, HTML和CSS构建跨平台桌面应用程序的开源库。它允许开发者使用纯web技术创建原生应用程序,这使得web开发者能够利用他们已经掌握的web技术来构建桌面应用。 以下是一个简单的Electron应用程序的代码示例: // 引入Electron的主模块 co…...

视频字幕处理+AI绘画,Runway 全功能超详细使用教程(4)

runway的视频字幕处理、AI绘图功能介绍,感觉完全就是为了做电影而布局,一整套功能都上线了!想系统学习的必收藏! 在深度研究Runway各个功能后,无论是AI视频生成及后期处理技术,还是AI图像生成技术&#xff…...

令人疑惑的Promise相关问题

令人疑惑的Promise相关问题 问题1 const promise new Promise((resolve, reject) > {reject(Error(Error occurred)); });promise.catch(error > console.log(error.message)); promise.catch(error > console.log(error.message));输出: Error occurr…...

Spring 多数据源搭建

目录 前言 正文 1.Druid 介绍和使用 2.其他多数据源解决方案 总结 前言 对于复杂的业务和项目,可能在一个单体项目中存在需要连接多个数据库的情况。这时,就会使用到多数据源,实际中遇到的可能性比较大。 正文 如果一个项目中需要连…...

【二分查找】LeetCode1970:你能穿过矩阵的最后一天

本文涉及的基础知识点 二分查找算法合集 作者推荐 动态规划LeetCode2552:优化了6版的1324模式 题目 给你一个下标从 1 开始的二进制矩阵,其中 0 表示陆地,1 表示水域。同时给你 row 和 col 分别表示矩阵中行和列的数目。 一开始在第 0 …...

利用python连接MySQL数据库并执行相关sql操作

一、新建MySQL数据库 1.启动MySQL服务 打开phpstudy,开启MySQL服务。如果开启失败的话,可以打开任务管理器,把正在运行的mysqld服务的进程进行关闭,再次打开MySQL服务即可启动。 2.新建MySQL数据库 选择数据库,点击…...

jenkins配置

branch: "dev" 切换分支 $WORKSPACE: /var/lib/jenkins/workspace/jenkins任务名 dest_passwd服务器密码 变量 sudo sshpass -p $dest_passwd ssh root192.168.211.319 -tt rm -rf /data/patent/*:删除文件/data/patent/* sudo sshpa…...

LeNet对MNIST 数据集中的图像进行分类--keras实现

我们将训练一个卷积神经网络来对 MNIST 数据库中的图像进行分类,可以与前面所提到的CNN实现对比CNN对 MNIST 数据库中的图像进行分类-CSDN博客 加载 MNIST 数据库 MNIST 是机器学习领域最著名的数据集之一。 它有 70,000 张手写数字图像 - 下载非常简单 - 图像尺…...

Django的回顾的第4天

1.模型层 1.1简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别。 也就是说&#xff0c;HTML被直接硬编码在 Python代码之中。 def current_datetime(request):now datetime.datetime.now()html "<html><body>It is now %s.</body><…...

点云从入门到精通技术详解100篇-基于三维点云的工件曲面轮廓检测与机器人打磨轨迹规划(中)

目录 2.2.2 散乱点云滤波去噪 2.2.3 海量点云数据压缩 2.3 点云采集与预处理实验...

Mapper文件夹在resource目录下但是网页报错找不到productMapper.xml文件的解决

报错如下&#xff1a; 我的Mapper文件夹在resourse目录下但是网页报错找不到productMapper.xml。 结构如下&#xff1a;代码如下&#xff1a;<mappers><mapper resource"com/dhu/mapper/productMapper.xml" /> </mappers> 这段代码是在mybatis-co…...

22.Oracle中的临时表空间

Oracle中的临时表空间 一、临时表空间概述1、什么是临时表空间2、临时表空间的作用 二、临时表空间相关语法三、具体使用案例1、具体使用场景示例2、具体使用场景代码示例 点击此处跳转下一节&#xff1a;23.Oracle11g的UNDO表空间点击此处跳转上一节&#xff1a;21.Oracle的程…...

附录A 指令集基本原理

1. 引言 本书主要关注指令集体系结构4个主题&#xff1a; 1. 提出对指令集进行分类的方法&#xff0c;并对各种方法的优缺点进行定性评估&#xff1b; 2. 提出并分析一些在很大程度上独立于特定指令集的指令集评估数据。 3. 讨论语言与编译器议题以及…...

Unittest单元测试之unittest用例执行顺序

unittest用例执行顺序 当在一个测试类或多个测试模块下&#xff0c;用例数量较多时&#xff0c;unittest在执行用例 &#xff08;test_xxx&#xff09;时&#xff0c;并不是按从上到下的顺序执行&#xff0c;有特定的顺序。 unittest框架默认根据ACSII码的顺序加载测试用例&a…...

海云安谢朝海:开发安全领域大模型新实践 人工智能助力高效安全左移

2023年11月29日&#xff0c;2023中国&#xff08;深圳&#xff09;金融科技大会成功举行&#xff0c;该会议是深圳连续举办的第七届金融科技主题年度会议&#xff0c;也是2023深圳国际金融科技节重要活动之一。做好金融工作&#xff0c;需要兼顾创新与安全&#xff0c;当智能体…...

Postman接口测试工具完整教程

前言 作为软件开发过程中一个非常重要的环节&#xff0c;软件测试越来越成为软件开发商和用户关注的焦点。完善的测试是软件质量的保证&#xff0c;因此软件测试就成了一项重要而艰巨的工作。要做好这项工作当然也绝非易事。 第一部分&#xff1a;基础篇 postman:4.5.1 1.安…...

Android 滑动按钮(开关) SwitchCompat 自定义风格

原生的SwitchCompat控件如下图&#xff0c;不说不堪入目&#xff0c;也算是不敢恭维了。开个玩笑... 所以我们就需要对SwitchCompat进行自定义风格&#xff0c;效果如下图 代码如下 <androidx.appcompat.widget.SwitchCompatandroid:id"id/switch_compat"android:…...

前端面试灵魂提问-计网(2)

1、websocket 为什么全双工? 1.1 WebSocket是什么 WebSocket 是一种通信协议&#xff0c;它在客户端和服务器之间建立持久的全双工连接。全双工意味着数据可以双向流动&#xff0c;即客户端可以向服务器发送消息&#xff0c;服务器也可以向客户端发送消息&#xff0c;而无需…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...