【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 点光源 聚光源 矩形光源 参数比较好理解 (窗口里面)环境光混合器:快速创造关于环境光的组件 大气光源:太阳光,定向光源 天空大气:蓝色的天空和大气 高度雾:大气下面的高度感的雾气 体积…...
TCP重传机制详解
1.什么是TCP重传机制 在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回⼀个确认应答消息,表示已收到消息。 但是如果传输的过程中,数据包丢失了,就会使⽤重传机制来解决。TCP的重传机制是为了保证数据传输的…...
如何使用javascript将商品添加到购物车?
使用JavaScript将商品添加到购物车可以通过以下步骤实现: 创建一个购物车对象,可以是一个数组或者对象,用于存储添加的商品信息。在网页中的商品列表或详情页面,为每个商品添加一个“添加到购物车”的按钮,并为按钮绑…...
【MySQL】:想学好数据库,不知道这些还想咋学
客户端—服务器 客户端是一个“客户端—服务器”结构的程序 C(client)—S(server) 客户端和服务器是两个独立的程序,这两个程序之间通过“网络”进行通信(相当于是两种角色) 客户端 主动发起网…...
1.关于linux的命令
1.关于文件安装的问题 镜像站点服务器:cat /etc/apt/sources.list 索引文件:cd /var/lib/apt/lists 下载文件包存在的路径:cd /etc/cache/apt/archives/2.关于dpkg文件安装管理器的应用: 安装文件:sudo dpkg -i 文件名; 查找文件目录:sudo …...
【人工智能】机器学习 -- 决策树(乳腺肿瘤数)
目录 一、使用Python开发工具,运行对iris数据进行分类的例子程序dtree.py,熟悉sklearn机器实习开源库。 二、登录https://archive-beta.ics.uci.edu/ 三、使用sklearn机器学习开源库,使用决策树对breast-cancer-wisconsin.data进行分类。 …...
【proteus经典实战】LCD滚动显示汉字
一、简介 Proteus是一款功能丰富的电子设计和仿真软件,它允许用户设计电路图、进行PCB布局,并在虚拟环境中测试电路功能。这款软件广泛应用于教育和产品原型设计,特别适合于快速原型制作和电路设计教育。Proteus的3D可视化功能使得设计更加直…...
数据结构复习1
1、什么是集合? 就是一组数据的集合体,就像篮子装着苹果、香蕉等等,这些“水果”就代表数据,“篮子”就是这个集合。 集合的特点: 集合用于存储对象。 对象是确定的个数可以用数组,如果不确定可以用集合…...
订单管理系统需求规范
1. 引言 1.1 目的 本文档旨在明确描述订单管理系统的功能、非功能性需求以及约束条件,以指导系统的分析、设计、开发、测试和部署。 1.2 范围 本系统将支持在线订单处理,从客户下单到完成配送的全过程管理,包括库存管理、支付处理、订单跟…...
swiftui使用ScrollView实现左右滑动和上下滑动的效果,仿小红书页面
实现的效果如果所示,顶部的关注用户列表可以左右滑动,中间的内容区域是可以上下滚动的效果,点击顶部的toolbar也可以切换关注/发现/附近不同页面,实现翻页效果。 首页布局 这里使用了NavigationStack组件和tabViewStyle样式配置…...
深入理解并使用 MySQL 的 SUBSTRING_INDEX 函数
引言 在处理字符串数据时,经常需要根据特定的分隔符来分割字符串或提取字符串的特定部分。MySQL 提供了一个非常有用的函数 SUBSTRING_INDEX 来简化这类操作。本文将详细介绍 SUBSTRING_INDEX 的使用方法、语法,以及通过实际案例来展示其在数据库查询中…...
上海网站se0优化/营销类网站
作者 | Tina & Jenny专栏 | 九章算法 到了职业发展的中后期, 程序员多将面临一个艰难的抉择: 是继续从事编程开发走的技术路线, 还是转为管理层面的发展路线? 开发人员的职业发展能否避开向管理层面的转变? 这是一…...
免费x网站域名/软文范文大全1000字
背景 在垃圾短信过滤应用 SMSFilters 中,需要使用 Jieba 分词库来対短信进行分词,然后使用 TF-IDF 来进行处理 分词库是 C 写的,这就意味着需要在Swift中集成 C 库。在官方文档 "Using Swift with Cocoa and Objective-C" 中&#…...
生产软件/seo优化与品牌官网定制
摘要: 手把手教你用(Python)零起步数学神经网络入门!在这篇文章中,我们将在Python中从头开始了解用于构建具有各种层神经网络(完全连接,卷积等)的小型库中的机器学习和代码。最终,我们将能够写出如下内容:假…...
mitao wordpress/seo网络推广是什么意思
---恢复内容开始--- 1.定制标签简介 JSP表示层中需要编写大量的jsp脚本代码 在其他jsp中要重复编写相同的代码,不能做到代码的复用 JSP开发者可以创建新的标签来根据实际需求定制相应的方法----定制标签 使用自定义标签可以实现页面表示层的代码重用 几种常见的标签…...
上海设计网站公司/百度云超级会员试用1天
今天小编又要为大家推荐一款很特别的软件了,这款软件不管是玩法还是画面都没有办法可以挑剔,一起来看看吧!编程一点通APP是一个免费的,能够让你在手机上学习编程知识的一款手机软件,这款软件能够让你在手机上对各种编程…...
网站怎么才能被百度收录/爱站关键词挖掘old
在android中的文件放在不同位置,它们的读取方式也有一些不同。 一、资源文件的读取: 1) 从resource的raw中读取文件数据: ?1234567891011121314151617181920212223String res "";try{//得到资源中的Raw数据流InputStream in get…...