【linux vim使用说明】
基本概念
提示:本文是网络资源整理
- 模式: vim 有多种模式,每种模式都有不同的功能。
- 普通模式 (Normal Mode): 默认模式,用于导航和执行命令。
- 插入模式 (Insert Mode): 用于文本输入。可以通过按 i 进入。
- 可视模式 (Visual Mode): 用于选择文本。可以通过按 v 进入。
- 命令模式 (Command-Line Mode): 用于执行命令。可以通过按 : 进入。
启动和退出
- 启动 vim: 在终端中输入 vim filename。
- 退出 vim:
- 保存并退出: :wq 或 :x
- 仅保存: :w
- 仅退出(不保存更改): :q!
基本操作
普通模式
-
移动光标:
- 左移: h
- 右移: l
- 上移: k
- 下移: j
- 到行首: 0
- 到行尾: $
- 跳到文件开头: gg
- 跳到文件末尾: G
-
文本操作:
- 删除当前字符: x
- 删除当前行: dd
- 删除到行尾: d$
- 复制当前行: yy
- 粘贴: p
- 撤销: u
- 恢复: Ctrl+r
-
查找和替换:
- 查找文本: /pat 然后按 Enter
- 查找下一个匹配: n
- 查找上一个匹配: N
- 替换当前行第一个匹配的文本: 😒/old/new/
- 替换当前行所有匹配的文本: 😒/old/new/g
- 替换整个文件所有匹配的文本: :%s/old/new/g
插入模式
-
进入插入模式:
- 在光标前插入: i
- 在光标后插入: a
- 在当前行前插入新行: O
- 在当前行后插入新行: o
-
退出插入模式: 按 Esc
可视模式
-
选择文本:
- 字符选择: v
- 行选择: V
- 块选择: Ctrl+v
-
操作选择的文本:
- 复制选择的文本: y
- 删除选择的文本: d
- 粘贴: p
- 命令模式
- 保存文件: :w
- 退出 vim: :q
- 保存并退出: :wq 或 :x
- 撤销更改: :undo
- 恢复更改: :redo
高级功能
窗口和标签
-
分割窗口:
- 横向分割: :split filename
- 纵向分割: :vsplit filename
-
在窗口之间切换: Ctrl+w 然后使用方向键
-
关闭当前窗口: :q
宏和自动化
录制宏:
1、开始录制:
-
按 q 进入录制模式,然后按一个寄存器键(如 q)。这个寄存器键会用来存储录制的宏。
-
示例: 按 q 然后按 a 开始录制到寄存器 a 中。
2、执行操作: -
执行你希望录制的操作。例如,移动光标、删除文本、插入文本等。
3、停止录制:
-按 q 停止录制宏。此时,所有在录制期间执行的操作都会存储在你选择的寄存器中。
执行宏
1、执行宏:
- 要执行录制的宏,按 @ 然后按寄存器键。
- 示例: 按 @a 执行存储在寄存器 a 中的宏。
常见问题及解决方法
1、宏没有效果:
-
确保你在正确的模式下运行宏。通常,宏在普通模式下执行。
-
检查宏是否录制正确。可以通过执行 :registers 查看寄存器的内容,确认录制的宏是否存在。
2、宏录制错误: -
如果录制的宏不如预期工作,可能是因为在录制过程中操作的不一致。尝试重新录制并确保操作的步骤一致。
3、宏在不同上下文中执行: -
有些宏可能依赖于特定的光标位置或上下文。在不同的上下文中运行宏可能会产生不同的效果。
示例
假设你有一个文本文件,每一行都是一个需要删除的项目,并且你想要批量删除这些行的开头部分。
1、录制宏:
-
按 qa 开始录制到寄存器 a。
-
移动光标到行首: 0
-
删除到第一个空格: d
-
移动到下一行: j
-
停止录制: 按 q
2、执行宏: -
在文件中移动光标到你想开始的行,然后按 @a 执行宏。
-
如果你想在多行上重复宏,可以按 n@a,其中 n 是重复的次数。
插件和扩展
vim 支持插件,通过插件可以增强编辑功能。一些常用插件管理工具包括:
- Vundle: https://github.com/VundleVim/Vundle.vim
- Pathogen: https://github.com/tpope/vim-pathogen
- vim-plug: https://github.com/junegunn/vim-plug
安装插件:
1、将插件 URL 添加到 ~/.vimrc 文件中。
2、运行 :PluginInstall(对于 Vundle)或 :PlugInstall(对于 vim-plug)。
示例配置
在 ~/.vimrc 文件中,你可以添加一些自定义配置来增强 vim 的使用体验:
" 设置行号
set number" 高亮当前行
set cursorline" 自动缩进
set autoindent
set smartindent" 启用语法高亮
syntax on" 设置制表符宽度
set tabstop=4
set shiftwidth=4
set expandtab
参考文献
Vim 官方文档
Vim 用户手册
相关文章:
【linux vim使用说明】
基本概念 提示:本文是网络资源整理 模式: vim 有多种模式,每种模式都有不同的功能。 普通模式 (Normal Mode): 默认模式,用于导航和执行命令。插入模式 (Insert Mode): 用于文本输入。可以通过按 i 进入。可视模式 (Visual Mode): 用于选择…...
cocos2d-x安装和项目
首先多方查找资料发现教程很简洁,发现对自己的操作方面没多大帮助,后来干脆去官网,好像也很简洁。基于这样一个原因,加上我首次碰cocos2d-x,决定记录一下整个流程,解决实际操作上的疑惑。 涉及的方面&…...
因果推断 | 双重机器学习(DML)算法原理和实例应用
文章目录 1 引言2 DML算法原理2.1 问题阐述2.2 DML算法 3 DML代码实现3.1 策略变量为0/1变量3.2 策略变量为连续变量 4 总结5 相关阅读 1 引言 小伙伴们,好久不见呀。 距离上次更新已经过去了一个半月,上次发文章时还信誓旦旦地表达自己后续目标是3周更…...
Flutter 开源库学习
网上看了好多歌词实现逻辑相关资料,封装比较的好的 就 flutter_lyric,核心类是LyricsReader,而且如果实现逐字逐句歌词编辑功能还需要自己实现很多细节 ,网友原话是 :歌词的功能真的是不少,写起来也是挺难的…...
自主巡航,目标射击
中国机器人及人工智能大赛 参赛经验: 自主巡航赛道 【机器人和人工智能——自主巡航赛项】动手实践篇-CSDN博客 主要逻辑代码 #!/usr/bin/env python #coding: utf-8import rospy from geometry_msgs.msg import Point import threading import actionlib impor…...
MySQL中EXPLAIN关键字详解
昨天领导突然问到,MySQL中explain获取到的type字段中index和ref的区别是什么。 这两种状态都是在使用索引后产生的,但具体区别却了解不多,只知道ref相比于index效率更高。 因此,本文较为详细地记录了MySQL性能中返回字段的含义、状…...
如何理解ref toRef和toRefs
是什么 ref 生成值类型的响应式数据可用于模板和reactive通过.value修改值 ref也可以像vue2中的ref那样使用 toRef 针对一个响应式对象(reactive)的prop创建一个ref两者保持引用关系 toRefs 将响应式对象(reactive封装)转换…...
【linux】kernel-trace
文章目录 linux kernel trace配置trace内核配置trace接口使用通用配置Events配置Function配置Function graph配置Stack trace设置 跟踪器tracer功能描述 使用示例1.irqsoff2.preemptoff3.preemptirqsoff linux kernel trace 配置 源码路径: kernel/trace trace内…...
【Golang 面试基础题】每日 5 题(一)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...
ETCD介绍以及Go语言中使用ETCD详解
ETCD介绍以及Go语言中使用ETCD详解 什么是etcd ETCD是一个分布式、可靠的key-value存储的分布式系统,用于存储分布式系统中的关键数据;当然,它不仅仅用于存储,还提供配置共享及服务发现;基于Go语言实现 。 etcd的特点 完全复制:集群中的每个节点都可以使用完整的存档高…...
03-用户画像+Elasticsearch
优点 es支持海量数据的写入和更新es可以和hadoop,hive及spark进行集成es支持hivesql的操作,可以通过hivesql将数据导入eses的在进行数据检索查询是速度比较快es是分布式存储 应用 全文检索 全文检索流程: 1-对文档数据(文本数据)进行分词 2-将分词…...
初学Mybatis之搭建项目环境
在连接 mysql 数据库时,遇到了个 bug,之前都能连上,但报错说换了个 OS 操作系统什么的 然后搜索怎么连接,找到了解决方法 MySQL MYSQL – 无法连接到本地MYSQL服务器 (10061)|极客教程 (geek-docs.com) 命令行输入 services.msc…...
JMeter使用小功能-(持续更新)
1、jmeter在同一个线程组内,uuid的复用 方式一: 方式二: 2、获得jMeter使用的线程总数 ctx.getThreadGroup().getNumberOfThreads()来表示活动线程总数 int threadNumctx.getThreadGroup().getNumThreads(); String threads Integer…...
科研绘图系列:R语言火山图(volcano plot)
介绍 火山图(Volcano Plot),也称为火山图分析,是一种在生物信息学和基因组学中常用的图形表示方法,主要用于展示基因表达数据的差异。它通常用于基因表达微阵列或RNA测序数据的可视化,帮助研究人员识别在不同条件下表达差异显著的基因。 火山图的基本构成 X轴:通常表示…...
docker firewalld 防火墙设置
1、环境 centos 7 firewalld docker-ce docker 默认会更改防护墙配置 导致添加的防火墙策略不生效,可以启用firewalld 重新设置策略 2、启用防火墙 systemctl start firewalld systemctl enable firewalld3、配置文件禁用docker 的iptables /etc/docker/daemon.js…...
《问题004:报错-JS问题-unknown: Invalid shorthand property initializer.》
问题描述: unknown: Invalid shorthand property initializer. (25:13) unknown:无效的简写属性初始化项 解决方法: “”应该写为“:”(globalData 改成 globalData: )...
什么是 MLPerf?
什么是 MLPerf? MLPerf 是一个用于衡量机器学习硬件、软件和服务性能的标准化基准测试平台。它由 MLCommons 组织开发,该组织是由多家领先的科技公司和学术机构组成的。MLPerf 的目标是通过一系列标准化的基准测试任务和数据集,提供一个统一…...
【SpringBoot】第3章 SpringBoot的系统配置
3.1 系统配置文件 3.1.1 application.properties SpringBoot支持两种不同格式的配置文件,一种是Properties,一种是YML。 SpringBoot默认使用application.properties作为系统配置文件,项目创建成功后会默认在resources目录下生成applicatio…...
ELK日志分析系统部署文档
一、ELK说明 ELK是Elasticsearch(ES) Logstash Kibana 这三个开源工具组成,官方网站: The Elastic Search AI Platform — Drive real-time insights | Elastic 简单的ELK架构 ES: 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它…...
ue5笔记
1 点光源 聚光源 矩形光源 参数比较好理解 (窗口里面)环境光混合器:快速创造关于环境光的组件 大气光源:太阳光,定向光源 天空大气:蓝色的天空和大气 高度雾:大气下面的高度感的雾气 体积…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
深度解析云存储:概念、架构与应用实践
在数据爆炸式增长的时代,传统本地存储因容量限制、管理复杂等问题,已难以满足企业和个人的需求。云存储凭借灵活扩展、便捷访问等特性,成为数据存储领域的主流解决方案。从个人照片备份到企业核心数据管理,云存储正重塑数据存储与…...
【题解-洛谷】P10480 可达性统计
题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...
TMC2226超静音步进电机驱动控制模块
目前已经使用TMC2226量产超过20K,发现在静音方面做的还是很不错。 一、TMC2226管脚定义说明 二、原理图及下载地址 一、TMC2226管脚定义说明 引脚编号类型功能OB11电机线圈 B 输出 1BRB2线圈 B 的检测电阻连接端。将检测电阻靠近该引脚连接到地。使用内部检测电阻时,将此引…...
论文笔记:Large Language Models for Next Point-of-Interest Recommendation
SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...
