从零学起VIM

前言

笔者早年刚入行的时候就接触过Vim,当时还是真正的菜鸟,带我的师父是一个华为骨干员工,犹记得他给我指导如何保存并关闭文本:按Esc,然后输入:wq。还记得自己打开Vim编辑器,一个字符都敲不进去,然后问旁边的同事(此人年纪轻轻,但是擅长linux,我们都叫他XX大佬),他邪魅一笑说“i”,我第一反应就是他故意逗我玩,然后他认真地说“你没有听错,就是键盘上的i”。为何时隔多年我还记得这两件微不足道的小事?原因就是初次接触Vim留给我深刻的印象:神秘感!

讲真,这几年的工作中,我很少用Vim,可能是因为大多使用Windows操作系统。但是后来涉足跨平台开发,甚至是嵌入式,就发现这东西还必须得会!因此,决定来个“朝花夕拾”。考虑到网上类似的教程非常之多,如果仅仅复制粘贴这些文字和命令,那么会非常枯燥无味,人们是不喜欢缺乏灵魂的事物的!你看,纵使我早年接触过Vim,但是因为用进废退,目前凭直觉能想起来的命令就是上述的那两个小故事。每次真的要用,还要在网上搜索一番。

下面我会以一个小白的心态重新认识这个“老朋友”,尽量符合婴儿认识事物的这个过程。

一、Vim安装

运行

OK

下一步

我接受,下一步

下一步

下一步

改安装路径,安装

完成

二、常用命令实践

1.复现小故事情节

新建空文本

鼠标右键,用Vim编辑

按“i”,下面出现”—插入—"字样,然后键入”hello”,再按“Esc”(切换模式,用于执行命令),敲入我师父传授的“:wq”,则成功写入和保存文本!

2.删除字符,删除整行,删除单词

按“x”删除了Hello的首字母H,按”dd”删除了第一行整行,按“dw”删除了单词This。

3.复制粘贴与剪切粘贴

按“yy”复制第一行,用↓键将光标移动到底端,按“p”进行粘贴;接着用↑键将光标移动到第2行,按”dd”剪切该行,用↓键将光标移动到底端,按“p”进行粘贴。

4.跳转移动光标

按“gg”移动到文档开始,按大写”G”移动到文档末尾,按“:3”移动到第三行,由此可以看出行号是从1开始编码而非从0编码。 

5.撤销与重做

光标放到文档开头,按“dd”删除第一行,按“u”撤销删除,按”Ctrl+r”再此删除,按“u”再次撤销删除。

6.块选择

光标放到文档开头,按“v”选择字符,按→和←键选择多字符,再次把光标放到文档开头,按“Ctrl+v”选择块字符,按↓和→选择块区域。

7.设置行号

输入“:set nu”设置行号,输入“set nonu”取消行号。

8.查找替换

输入“:%s/vim/VIM”,全文搜索小写的vim将其全部替换为大写的VIM。

9.拓展 

    0:移动到行首;

    $:移动到行尾;

    ndd:删除n行(包括当前行在内)

    a:在光标后插入;

    o:在当前行下方插入新行;

    O:在当前行上方插入新行;

    :split、:vsplit:分别水平和垂直分割窗口;

    Ctrl + w、Ctrl + w:在窗口之间切换;

    :w:保存文件;

    :q:退出;

    :q!:强制退出,不保存更改。

    三、总结

    vim的命令繁多,但常用的无非就是复制粘贴删除等,能用到查找替换应付常规操作已经足够了。对于笔者而言,把所有命令全死记硬背无疑是一种灾难,提纲挈领,举一反三才能把知识学活。另外,舍弃或许是另一种拥有,比如h/j/k/l可控制左/下/上/右,但总觉得没有方向键用着直观。因此,实践中潜移默化的记忆是最有效的,本文仅作抛砖引玉之用。 

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/bicheng/85357.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85357.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    不依赖rerank 模型排序通过使用 PostgreSQL 中的 pgvector 与 tsearch2 函数进行混合搜索提高召回率

    前言 在向量搜索中,召回率是一个关键指标,它衡量搜索结果的相关性。然而,提高召回率往往会牺牲其他指标,如索引大小或查询延迟。为了平衡这些权衡,混合搜索技术应运而生。本文将介绍如何在 PostgreSQL 中结合 pgvecto…

    Uniapp 跨平台开发框架全面解析:一次开发,多端运行

    在移动互联网时代,开发者面临着一个重要挑战:如何高效地开发出能在多个平台(iOS、Android、Web、小程序等)上运行的应用?传统的原生开发方式需要为每个平台单独编写代码,导致开发周期长、维护成本高。而 Un…

    ios如何把H5网页变成主屏幕webapp应用

    一、将 H5 页面添加到主屏幕的步骤 打开 Safari 浏览器 在 iPhone 上打开 Safari 浏览器,访问目标网页(H5 页面)。 点击分享按钮 在 Safari 浏览器底部点击 “分享” 图标(箭头向上的按钮)。 添加到主屏幕 在分享菜单…

    Node.js 项目启动命令大全 (形象版)

    文章目录 Node.js 项目启动命令大全 🌟✨(形象版)一、🔍 如何查看项目启动命令(魔法书目录)package.json scripts 参数详解开发相关脚本测试相关脚本构建相关脚本代码质量相关脚本最佳实践 二、&#x1f68…

    爱普特APT32F1104C8T6单片机 高抗干扰+硬件加密双保障

    爱普特APT32F1104C8T6单片机深度解析 1. 产品定位 APT32F1104C8T6 是爱普特半导体(APT)推出的 32位高性能经济型单片机,基于 ARM Cortex-M0内核,采用 LQFP48封装,主打 高性价比、低功耗、强抗干扰,是替代进…

    使用uni-app ios 打包流程

    配置几个步骤即可 1、打包ios需要BundleID ID 2、证书私钥密码 3、信任文件证书文件 4、私钥证书 5、打包 6、获取打包后的ipa文件 7、通过爱思助手安装到iso手机上 8、完成 1、下载:App Uploader去获取我们想要的证书私钥等文件 2、下载完成解压后的文件如下打…

    仿muduo库实现并发服务器

    1.实现目标 仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器: 通过实现高并发服务器的组件,可以快速实现一个高并发服务器的搭建,并且,通过组内不同应用层协议的支持,可以快速完成高性能服务器的搭建…

    迭代器模式:集合遍历的统一之道

    引言:集合遍历的演进之路 在软件开发中,集合遍历是我们每天都要面对的基础操作。从最初的数组索引遍历到现代的流式处理,我们经历了: #mermaid-svg-KwTr9k8JgbwRTDhU {font-family:"trebuchet ms",verdana,arial,sans-…

    Spring Security OAuth2 组件

    我们来系统地讲解一下 Spring Security OAuth2 这个强大的组件。我会从概念、作用、核心组件,以及实际应用场景来为你剖析。 1. 什么是 Spring Security OAuth2? 简单来说,Spring Security OAuth2 是 Spring Security 框架的一个模块&#…

    Redis的持久化功能

    Redis的持久化功能能够将内存中的数据保存到磁盘,从而在重启后恢复数据。下面为你详细介绍Redis的两种主要持久化方式及其配置方法。 RDB(Redis Database)持久化 RDB持久化是通过生成某个时间点的数据集快照来实现的。它具有高性能的特点&a…

    Chrome 将成为下一个 IE6

    最近在技术圈刷到一个帖子,说:“Chrome 就快变成新的 IE6 了。” 乍一看有点危言耸听,但你一细品,发现还真挺像回事。 想当年:IE6 是怎么垮的? IE6 当年多风光?全球市场份额一度超过 90%&#…

    Redis 配置文件详解redis.conf 从入门到实战

    一、redis.conf 是什么? Redis 的配置文件(默认命名为 redis.conf,Redis 8.0 之后改为 redis-full.conf)控制着服务运行的各项参数。该文件采用以下结构: 指令名 参数1 参数2 ... 参数N例如: replicaof …

    autoware docker的安装

    前言 官方的安装说明: 官方的安装说明 安装前,请确认安装的硬件: CPU with 8 cores16GB RAM[Optional] NVIDIA GPU (4GB RAM) 满足需求 1. 安装软件依赖 这一步主要是安装三个软件: DockerNVIDIA Container Toolkit (pref…

    AWS 解决方案深度剖析:Amazon QLDB — 构建可信赖、不可变的数据审计基石

    导言:数据可信的挑战 在现代应用开发中,尤其是在金融、供应链、身份认证、政府事务、医疗记录管理等领域,数据完整性和历史追溯性至关重要。我们常常面临以下挑战: 审计困难: 如何证明数据从诞生至今未被篡改&#xf…

    Leetcode-​1358. 包含所有三种字符的子字符串数目​

    Problem: 1358. 包含所有三种字符的子字符串数目 思路 滑动窗口 解题过程 滑动窗口:使用左右指针 l 和 r 维护一个窗口,窗口内字符的频次由 cnt 记录。 右指针扩展:右指针 r 不断右移,将字符加入窗口并更新频率。 左指针收缩&a…

    iTunes 无法备份 iPhone:10 种解决方法

    Apple 设备是移动设备市场上最先进的产品之一,但有些人遇到过 iTunes 因出现错误而无法备份 iPhone 的情况。iTunes 拒绝备份 iPhone 时,可能会令人非常沮丧。不过,幸运的是,我们有 10 种有效的方法可以解决这个问题。您可以按照以…

    Unity 接入抖音小游戏一

    目录 一、搭建小游戏环境 二、接入抖音SDK 1.初始化 2.登录 3.分享 4.添加到桌面 5.侧边栏功能 6. 接入流量主 三、完整代码 下一篇传送门 Unity 接入抖音小游戏二 -CSDN博客 一、搭建小游戏环境 我这边因为没有下载其他版本的Unity所以就先用2022.3.57f1了 大家还是下载…

    Node.js 项目启动命令全面指南:从入门到精通(术语版)

    文章目录 Node.js 项目启动命令全面指南:从入门到精通一、核心启动命令深度解析1. 基础命令结构与执行机制2. 参数传递机制详解 二、常用命令分类详解1. 运行环境命令对比2. 质量保障命令详解3. 构建部署全流程 三、高级配置实战技巧1. 环境变量管理进阶2. 命令组合…

    创意风格行业PPT模版分享

    极简主题PPT模版,设计类PPT模版,快乐童年成长PPT模版,教育机构通用PPT模版,创意风格行业PPT模版 创意风格行业PPT模版分享:https://pan.quark.cn/s/3bac52e09479

    Java + Spring Boot + MyBatis 枚举变量传递给XML映射文件做判断

    枚举定义 ReagentStatus.java package com.weiyu.utils.enums;import lombok.Getter;/*** 试剂状态枚举*/ Getter public enum ReagentStatus {// 常规REGULAR,// 少库存LESS_INVENTORY,// 零库存ZERO_INVENTORY,// 将过期WILL_EXPIRE,// 已过期EXPIRED,// 已注销LOGGED,// 全…