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

【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 点光源 聚光源 矩形光源 参数比较好理解 (窗口里面)环境光混合器:快速创造关于环境光的组件 大气光源:太阳光,定向光源 天空大气:蓝色的天空和大气 高度雾:大气下面的高度感的雾气 体积…...

我以为会被本科成绩卡死,跨本申硕后结果HR根本不关心这个

我第一次找实习的时候,把成绩单反复看了很多遍。GPA不高。挂过课。Accounting 2 挂过一次。Corporate Finance 补考才过。Quantitative Methods 那门课,我甚至到现在还记得自己算错了多少题。我以为这些会成为问题。于是我在简历里尽量不写成绩。准备面试…...

VideCoding - Claude Code 核心工作流 (Core Workflow)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/159921522 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Claude…...

如何利用SQL嵌套查询进行数据去重_配合窗口函数

用 ROW_NUMBER() 去重最稳,核心是 PARTITION BY 分组 ORDER BY 排序后取 rn 1;DISTINCT 对整行判重无效,GROUP BY 聚合易错配字段,窗口函数确保整行一致性。用 ROW_NUMBER() 做去重最稳,别碰 DISTINCT 套子查询嵌套查…...

如何在 Laravel Eloquent 中准确检测两个日期时间范围是否重叠

本文详解 laravel 中判断预约时间区间是否重叠的正确逻辑与实现,纠正常见边界条件误判问题,提供简洁可靠的数据库查询方案及完整代码示例。 本文详解 laravel 中判断预约时间区间是否重叠的正确逻辑与实现,纠正常见边界条件误判问题&…...

【NLP实战指南】FUNSD数据集:表单理解与结构化数据生成的挑战与机遇

1. FUNSD数据集:表单理解领域的"硬骨头" 第一次接触FUNSD数据集时,我被它满屏的噪点和五花八门的表单样式震惊了。这就像给你一堆被咖啡渍浸过的快递单、皱巴巴的申请表和模糊的扫描件,要求你准确提取所有信息。这个由199份真实扫描…...

程序员十年职场经验:技术成长与生存法则

1. 程序员十年成长的血泪经验谈作为一个在代码堆里摸爬滚打十多年的老程序员,今天想和各位同行特别是刚入行的年轻开发者们聊聊那些只有时间才能教会你的事。这十年来我换过5家公司,辗转3个城市,从月薪3000到年薪百万,从单身汉到两…...

嵌入式工程师的核心竞争力与职业发展路径

1. 嵌入式工程师的现状与挑战嵌入式系统作为连接物理世界与数字世界的桥梁,已经渗透到现代社会的各个角落。从我们口袋里的智能手机到工厂的自动化设备,从智能家居到航空航天系统,嵌入式技术无处不在。然而,这个看似广阔的领域&am…...

新手福音:通过快马平台调用codex,用自然语言学写计算器代码

作为一个刚接触编程的新手,我最近发现了一个特别友好的学习方式——通过自然语言描述让AI帮我生成代码。这次我想做一个简单的网页计算器,在InsCode(快马)平台上体验了一把用codex模型生成代码的过程,收获很大。下面分享我的学习笔记&#xf…...

革新性智能漫画翻译工具:解决本地化效率痛点,释放创作价值

革新性智能漫画翻译工具:解决本地化效率痛点,释放创作价值 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项…...

gpu算力与图形处理

核心本质 图形处理(Graphics):GPU 天生本职工作 —— 画画面、渲染 3D、光栅化、纹理、着色、显示输出。GPU 算力(Compute / GPGPU):利用 GPU 超多小核心 做通用并行计算 —— AI、科学计算、挖矿、渲染、仿…...