【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
文章目录
- Section 1:Course Introduction 课程概述
- S01L01 Course Overview 课程简介
- 课程概要
- S01L02 Course Download 课程资源下载
- S01L03 What Vim Is and Why You Should Learn It 何为 Vim?学来干啥?
- 1 何为 Vim
- 2 为何学 Vim
- Section 2:Vim Quickstart 快速上手 Vim
- S02L04 Modes(Vim 的模式)
- S02L05 Vim Quickstart:Vim 快速上手
- S02L06 Exercise 01 Creating and Editing a New File with Vim
- 1 训练目标
- 2 操作指令
- 1 创建文件
- 2 启用插入模式
- 3 给文件添加些文字
- 4 继续添加文字内容
- 5 保存文件
- 6 验证文件已保存
- S02L07 Exercise 01 Creating and Editing a New File with Vim - Walkthrough(练习01点评)
【写在前面】
从这一篇开始,我将陆续把 Udemy 上的《Vim Masterclass》的学习笔记整理出来放到对应的专栏中,一来可以巩固所学方便查找,二来对于有 Vim 学习需求的朋友也可以作为参考快速上手。在我看来,Vim 就像榴莲,爱之者为其疯狂,恨之者避恐不及。为了解放生产力,花点时间琢磨一下 Vim 还是很有必要的。
Section 1:Course Introduction 课程概述
S01L01 Course Overview 课程简介
课程概要
- 快速上手:一个简单的 Vim 练习(最基础)
- 以 Vim 特有的方式思考问题
- 转换与替换(Transformations & Substitutions):从简单替换入手,进而实现在多个文件中全局替换
- Vim 高级功能
- 文本对象(Text objects)
- 宏(Macros)
- Vim 的设置与自定义配置
- Vim 图形界面简介
课程使用的 Vim 版本:
v8.0
S01L02 Course Download 课程资源下载
通过命令行解压课程源码包:
# unzip -d <path> zipFile
$ unzip -d vimclass vimclass.zip
解压时,目标文件夹若不存在,则会自动创建。
源码包:已上传 CSDN 下载频道,也可从百度网盘下载:vimclass.zip,提取码:i4ya
S01L03 What Vim Is and Why You Should Learn It 何为 Vim?学来干啥?
1 何为 Vim
Vim
是一款高级文本编辑器。
Vim
名称由来 ——
Vim = Vi + Improved
vi
其实是 visual
的缩写。
vi
已被 Vim
事实上取代。
2 为何学 Vim
Vim
无处不在- 功能强大(宏、寄存器、命令、重复、自动补全、文本对象、查询筛选工具、全局替换……)
Vim
的知识点高度 可迁移:将Vim
集成到bash
命令行、Gmail 邮箱、定制插件等- 支持
Vim
快捷键的工具:Atom
、Eclipse
、Abiword
、Kate
、Sublime Text
、Notepad++
、XCode
……
- 支持
- 跨平台
Vim
同时支持文字界面(TUI)与图形界面(GUI)- 语法高亮:美观、便于调试(支持各种格式配置文件)
- 命令方便识记(
i
= insert,q
= quit,d
= delete) - Vim 更像一门语言(
d3w
: delete 3 words) - 文档极其全面(Vim is thoroughly documented)
- 有趣
Section 2:Vim Quickstart 快速上手 Vim
S02L04 Modes(Vim 的模式)
Vim 三大模式:
Normal / Command mode
:正常模式(命令模式)Insert mode
:插入模式Command-line / cmdline / line mode
:命令行模式(单行模式)
说明
实测时,通过查看内置帮助文档(使用
:help intro
)得知,Ubuntu 上的 Vim 版本为8.1.2269
。此时支持的 Vim 基本模式已增至 7 种:
Normal
Visual
Select
Insert
Command-line / Cmdline
Ex
Terminal-Job
S02L05 Vim Quickstart:Vim 快速上手
打开一个命令行会话:
- Mac OS:Spotlight ➡️ “terminal” ➡️ “vim”
- Windows:搜索栏 ➡️ “commandline”(“命令提示符”) ➡️ “vim”
Vim 的关闭::q!Enter
进入输入模式:(正常模式下)i
退出输入模式:Esc
保存并退出 Vim:(正常模式下):wqEnter
w
:write,写入、保存q
:quit,退出
S02L06 Exercise 01 Creating and Editing a New File with Vim
1 训练目标
- 练习用
Vim
创建文件、编辑文件。 - 练习
Vim
三大模式的切换:常规模式(normal mode
)、插入模式(insert mode
)、命令行模式(commandline / cmdline / line mode
)
练习过程中,您将使用 Vim
创建一个新文件,并输入一些内容,最后保存。1
2 操作指令
1 创建文件
先在本地打开一个命令行会话,再用 Vim 编辑一个名为 myday.txt
的新文件。在命令行输入 vim myday.txt
,按回车键 Enter 确认:
vim myday.txt
2 启用插入模式
这样就打开了一个新文件,并处在 Vim 的常规模式(normal mode)下。按下小写的 I 键进入插入模式(insert mode)
3 给文件添加些文字
接下来输入一些内容。比如写几句话来描述您一天的开始。输入过程中如果写错了,可以用退格键 Backspace 进行更正。
4 继续添加文字内容
继续向文件添加文本,输入三件让您心怀感激的事物。写完后,按 Esc 键返回常规模式。
5 保存文件
接着保存您的变更内容。这需要在常规模式下进行。若不确定是否在常规模式,可以再按一次 Esc 键进行确认。下一步,输入 :wq
+ Enter 保存文件并退出 Vim
。
6 验证文件已保存
您可以通过查看文件内容来确认是否已经保存成功。比如使用 Vim 编辑器打开该文件:输入 vim myday.txt
+ Enter 即可:
vim myday.txt
这样就能看到您输入并保存到文件中的内容。由于未做任何修改,也没有什么需要保存的变更内容,直接使用 :q!
+ Enter 键退出即可。
S02L07 Exercise 01 Creating and Editing a New File with Vim - Walkthrough(练习01点评)
本节为 L06 的讲解课(walkthrough)。
要求:必须动手练习。
:q!
中的 !
表示放弃更改。
Git 命令 DIY
提交 git 的版本通常很固定:
git add *; git commit -m 'some comments'; git push
,虽然 Windows Terminal 中可以配置 PowerShell 的历史命令,但总要切到中间修改注释信息,时间一长感觉不太高效。如果有个自定义命令,把提交注释放到最后,就会方便很多:$ git diyCmd 'some comment'
于是尝试用 git 别名:(
acp
即add
、commit
、push
的缩写)$ git config --global alias.acp '!git add * && git commit -m \"$1\" && git push'
但这样配置后,前两个命令能正常运行,但
git push
始终会把我的注释内容理解成要推送的目标分支。为了让git push
忽略最后的注释,再尝试:$ git config --global alias.acp '!git add * && git commit -m \"$1\" && git push # '
就是说,让后面的参数在执行时变成一段
shell
脚本注释。经测试,果然能行。以后类似的情况都能应对了。其实这个别名的第一版是问的 ChatGPT,但
git push
报错后,ChatGPT 分析原因为“Git 不支持在别名中直接传递参数”,建议我通过.bat
批处理任务实现。试了几次,好歹调通了:# file path: {GIT_HOME}\cmd\git-acp.bat @echo off git add * git commit -m %1 git push
但这样写效率很低:又要创建文件,又要配置环境变量,运行的格式还必须是
git-acp 'some comment'
,后面要修改命令更麻烦,没法使用 git 的内置命令。这样写还不如写成 PowerShell 的脚本:# git-acp.ps1 param([string]$Comment = "" ) cd "$(pwd)" git add * git commit -m "diy commit: $Comment" git push
感觉越来越跑偏了……本来加个
<空格>#<空格>
就解决的,被 ChatGPT 这么一带就搞错大方向了。可见提高效率的关键还是在于自己的思考和积累。
本节练习另附精美排版 PDF 格式,阅读体验更佳,详见:
vimclass/Exercise-01-CreatingandEditingaNewFilewithVim.pdf
↩︎
相关文章:

【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
文章目录 Section 1:Course Introduction 课程概述S01L01 Course Overview 课程简介课程概要 S01L02 Course Download 课程资源下载S01L03 What Vim Is and Why You Should Learn It 何为 Vim?学来干啥?1 何为 Vim2 为何学 Vim Section 2&…...

【数据库系列】Spring Boot 中使用 MyBatis 详细指南
一、基础介绍 1.1 MyBatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 P…...

Azure Airflow 中配置错误可能会使整个集群受到攻击
网络安全研究人员在 Microsoft 的 Azure 数据工厂 Apache Airflow 中发现了三个安全漏洞,如果成功利用这些漏洞,攻击者可能会获得执行各种隐蔽操作的能力,包括数据泄露和恶意软件部署。 “利用这些漏洞可能允许攻击者以影子管理员的身份获得…...

Python跨年烟花
目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…...
【代码】Python|Windows 批量尝试密码去打开加密的 Word 文档(docx和doc)
文章目录 前言完整代码Githubdocxdoc 代码解释1. msoffcrypto 方法(用于解密 .docx 文件)read_secret_word_file 函数密码生成与解密尝试try_decrypt_file 函数 2. comtypes 方法(用于解密 .doc 文件)read_secret_word_file 函数注…...
java开发中注解汇总
注解作用位置注意mybatis Data Getter Setter ToString EqualsAndHashCode AllArgsConstructor NoArgsConstructor Data 代替:无参构造,get,set,toString,hashCode,equals Getter Setter 可放在类和方法上&…...
C# 设计模式(结构型模式):外观模式
C# 设计模式(结构型模式):外观模式 (Facade Pattern) 在复杂系统中,往往会涉及到多个子系统、模块和类。这些子系统的接口和功能可能会让使用者感到困惑和复杂。在这种情况下,我们可以使用外观模式(Facade…...

PowerShell 常见问题解答
PowerShell 是微软开发的一种功能强大的命令行界面和脚本语言,广泛应用于系统管理和自动化任务。以下是一些使用 PowerShell 时常见的问题及其解决方法。 什么是 PowerShell? PowerShell 是基于 .NET 的命令行界面(CLI)和脚本语言…...

计算机网络 (15)宽带接入技术
前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络,实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义:宽带接入技术是指能够传输大量数据的通信信道或网络,其传输速度通常较高,…...
前端Python应用指南(六)构建RESTful API:使用Flask和Django实现用户认证与授权
《写给前端的python应用指南》系列: (一)快速构建 Web 服务器 - Flask vs Node.js 对比(二)深入Flask:理解Flask的应用结构与模块化设计(三)Django vs Flask:哪种框架适…...
【Unity3D】基于UGUI——简易版 UI框架
https://github.com/AMikeW/BStandShaderResources/blob/master/milk_UIFramework.unitypackage UI框架支持如下功能: 1、层级控制 2、支持面板多次打开时,隐藏前一个打开的面板,当关闭面板时,能够恢复前一个打开面板状态 3、支…...
算法排序算法
文章目录 快速排序[leetcode 215数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/)分析题解快速排序 桶排序[leetcode 347 前K个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/)分析题解 快速排序 leetcode 215数组…...
第3章 总线
总线的定义 为多个部件 分时共享 公共信息传送线路。 系统之间、模块之间、芯片内部用来传递信息信号线集合。 共享 总线上可连接多个部件 各部件间相互交换信息 都可通过总线来。 分时 同一时刻 总线上只能传 一个部件信息。 采用标准总线的优点 简化系统软硬件设计 从硬件角度…...

手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电
手机实时提取SIM卡打电话的信令声音 --双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中,我们论述了局域网SIP坐席通过手机外呼出去时,手机中主副卡的呼叫调度策略。 但…...
共阳极LED的控制与短路问题解析
共阳极LED的控制与短路问题解析 在电子电路中,LED(发光二极管)是最常见的元件之一。LED的连接方式分为共阳极和共阴极,不同的连接方式决定了LED的控制逻辑。本文将重点讲解共阳极LED的工作原理,并解答“为什么给1不会…...

华为消费级QLC SSD来了
近日,有关消息显示,华为的消费级SSD产品线,eKitStor Xtreme 200E系列,在韩国一家在线零售商处首次公开销售,引起了业界的广泛关注。 尽管华为已经涉足服务器级别的SSD制造多年,但直到今年6月才正式推出面向…...

liunx下载gitlab
1.地址: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 安装 postfix 并启动 yum install postfix systemctl start postfix systemctl enable postfix ssh服务启动 systemctl enable sshd systemctl start sshd开放 ssh 以及 http 服务,…...

深度学习模型预测值集中在某一个值
深度学习模型,训练过程中,经常遇到预测的结果集中在某个值,而且在学习的过程中会变,样例如下。 主要有如下解决方案 1、更换relu ->tanh 或者其他激活函数 2、更改随机种子,估计是没有初始化好,或者调…...

Sqoop的使用
每个人的生活都是一个世界,即使最平凡的人也要为他那个世界的存在而战斗。 ——《平凡的世界》 目录 一、sqoop简介 1.1 导入流程 1.2 导出流程 二、使用sqoop 2.1 sqoop的常用参数 2.2 连接参数列表 2.3 操作hive表参数 2.4 其它参数 三、sqoop应用 - 导入…...
OpenGL ES 04 图片数据是怎么写入到对应纹理单元的
从指定路径加载图像并转换为 CGImage。获取图像的宽度和高度。创建一个 RGB 颜色空间。为图像数据分配内存。创建一个位图上下文并将图像绘制到上下文中。创建一个新的纹理对象并绑定到指定的纹理单元。指定二维纹理图像。释放分配的内存。设置纹理参数,包括放大和缩…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

【技巧】dify前端源代码修改第一弹-增加tab页
回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码,在知识库增加一个tab页"HELLO WORLD",完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...