【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 课程简介

课程概要

  1. 快速上手:一个简单的 Vim 练习(最基础)
  2. 以 Vim 特有的方式思考问题
  3. 转换与替换(Transformations & Substitutions):从简单替换入手,进而实现在多个文件中全局替换
  4. Vim 高级功能
    1. 文本对象(Text objects)
    2. 宏(Macros)
  5. Vim 的设置与自定义配置
  6. 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

  1. Vim 无处不在
  2. 功能强大(宏、寄存器、命令、重复、自动补全、文本对象、查询筛选工具、全局替换……)
  3. Vim 的知识点高度 可迁移:将 Vim 集成到 bash 命令行、Gmail 邮箱、定制插件等
    1. 支持 Vim 快捷键的工具:AtomEclipseAbiwordKateSublime TextNotepad++XCode……
  4. 跨平台
  5. Vim 同时支持文字界面(TUI)与图形界面(GUI)
  6. 语法高亮:美观、便于调试(支持各种格式配置文件)
  7. 命令方便识记(i = insert, q = quit, d = delete)
  8. Vim 更像一门语言(d3w: delete 3 words)
  9. 文档极其全面(Vim is thoroughly documented)
  10. 有趣

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 种:

  1. Normal
  2. Visual
  3. Select
  4. Insert
  5. Command-line / Cmdline
  6. Ex
  7. Terminal-Job

Vim has 7 modes now (v8.1.2269)


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 别名:(acpaddcommitpush 的缩写)

$ 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 这么一带就搞错大方向了。可见提高效率的关键还是在于自己的思考和积累。


  1. 本节练习另附精美排版 PDF 格式,阅读体验更佳,详见:vimclass/Exercise-01-CreatingandEditingaNewFilewithVim.pdf ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch JavaRestClient版

文章目录 初始化RestHighLeveClient&#xff08;必要条件&#xff09;索引库操作1.创建索引库&#xff08;4步&#xff09;2.删除索引库&#xff08;3步&#xff09;3.判断索引库是否存在&#xff08;3步&#xff09;4.总结&#xff1a;四步走 文档操作1.创建文档&#xff08;4…

基于Pytorch和yolov8n手搓安全帽目标检测的全过程

一.背景 还是之前的主题&#xff0c;使用开源软件为公司搭建安全管理平台&#xff0c;从视觉模型识别安全帽开始。主要参考学习了开源项目 https://github.com/jomarkow/Safety-Helmet-Detection&#xff0c;我是从运行、训练、标注倒过来学习的。由于工作原因&#xff0c;抽空…

driftingblues6靶机

打开靶场 查看页面源代码&#xff0c;最下面有一个注释&#xff0c;提供了一个网址 vmlist.github.io&#xff0c;我们去访问一下 这里是一个github页面&#xff0c;提供攻防虚拟机的下载&#xff0c;对我们解题并没有什么有用的信息&#xff0c;我们再去扫描端口 发现只有80端…

python学习笔记—12—布尔类型、if语句

1. 布尔类型 (1) 定义 (2) 比较运算符 (3) 代码演示 1. 手动定义 bool_1 True bool_2 False print(f"bool_1的内容是&#xff1a;{bool_1}, 类型是&#xff1a;{type(bool_1)}") print(f"bool_2的内容是&#xff1a;{bool_2}, 类型是&#xff1a;{type(bool…

EasyExcel自定义动态下拉框(附加业务对象转换功能)

全文直接复制粘贴即可&#xff0c;测试无误 一、注解类 1、ExcelSelected.java 设置下拉框 Documented Target({ElementType.FIELD})//用此注解用在属性上。 Retention(RetentionPolicy.RUNTIME)//注解不仅被保存到class文件中&#xff0c;jvm加载class文件之后&#xff0c…

Fetch处理大模型流式数据请求与解析

为什么有的大模型可以一次返回多个 data&#xff1f; Server-Sent Events (SSE)&#xff1a;允许服务器连续发送多个 data: 行&#xff0c;每个代表一个独立的数据块。 流式响应&#xff1a;大模型服务通常以流式响应方式返回数据&#xff0c;提高响应速度。 批量处理&#x…

开源低代码平台-Microi吾码-一键安装使用(CentOS一键安装MySql+Redis+MinIO+MongoDB+Watchtower脚本)

开源低代码平台-Microi吾码-一键安装使用 前言CentOS7一键安装脚本注意事项&#xff1a;安装成功预览图安装过程图安装结果docker脚本代码【有点东西&#xff1a;&#xff09;】踩过的坑开源低代码平台Microi吾码-系列文档 前言 有小伙伴提出他并不想在本地编译代码、打包镜像、…

Ubuntu 24.04 LTS 解决网络连接问题

1. 问题描述 现象&#xff1a;ens33 网络接口无法获取 IPv4 地址&#xff0c;导致网络不可用。初步排查&#xff1a; 运行 ip a&#xff0c;发现 ens33 接口没有分配 IPv4 地址。运行 ping www.baidu.com&#xff0c;提示“网络不可达”。查看 NetworkManager 日志&#xff0c…

Docker--Docker Container(容器) 之 操作实例

容器的基本操作 容器的操作步骤其实很简单&#xff0c;根据拉取的镜像&#xff0c;进行启动&#xff0c;后可以查看容器&#xff0c;不用时停止容器&#xff0c;删除容器。 下面简单演示操作步骤 1.创建并运行容器 例如&#xff0c;创建一个名为"my-nginx"的交互…

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(上)

大模型WebUI&#xff1a;Gradio全解系列8——Additional Features&#xff1a;补充特性&#xff08;上&#xff09; 前言本篇摘要8. Additional Features&#xff1a;补充特性8.1 队列8.1.1 使用方法8.1.2 配置队列演示 8.2 输入输出流8.2.1 输出流1. 生成器yield2. 流媒体 8.2…

leetcode 2658. 网格图中鱼的最大数目

题目如下 数据范围 使用并查集来做这道题。 其实按照题目的意思就是让我们求每一个联通的水域可以捞到的最大权值。 我们可以从前往后遍历这个二维数组只需要判断前一个水域和上一个水域是否和当前的(i, j)联通如果有则合并水域&#xff0c;同时用一个weight数组保存每一个联…

【go每日一题】golang异常、错误 {源码、实践、总结}

错误与异常在golang中区分 Go 的错误处理设计与其他语言的异常不同。Go 中的 error 就是一个普通的值对象&#xff0c;而其他语言如 Java 中的 Exception 将会造成程序控制流的终止和其他行为&#xff0c;Exception 与普通的值不同。虽然 Go 也有类似的异常机制 —— panic&am…

大模型 Fine-Tuning 技术解析

引言 在大型语言模型&#xff08;LLMs, Large Language Models&#xff09;的发展历程中&#xff0c;预训练模型和微调&#xff08;Fine-tuning&#xff09;技术起到了至关重要的作用。这些技术使得模型不仅能够学习到丰富的语言特征&#xff0c;还能根据具体任务进行优化调整…

LabVIEW开发中常见硬件通讯接口快速识别

在 LabVIEW 开发中&#xff0c;与硬件进行通讯是实现数据采集与控制的重要环节。准确判断通讯接口类型和协议&#xff0c;可以提高开发效率&#xff0c;减少调试时间。本文结合 LabVIEW 的实际应用&#xff0c;详细介绍如何识别和判断常见硬件通讯接口的定义&#xff0c;并提供…

抖音短视频矩阵系统源码开发全流程解析

在项目开发过程中&#xff0c;调整配置文件至关重要&#xff0c;这些文件包括数据库连接、API密钥及全局参数等。通过正确配置这些信息&#xff0c;可确保应用程序的稳定性和安全性。灵活调整配置以适应具体需求有助于短视频矩阵系统项目的顺利推进。 在开发环境中&#xff0c…

Unity功能模块一对话系统(4)实现个性文本标签

本期我们将了解如何在TMPro中自定义我们的标签样式&#xff0c;并实现两种有趣的效果。 一.需求描述 1.定义<float>格式的标签&#xff0c;实现标签处延迟打印功能 2.定义<r" "></r>格式的标签&#xff0c;实现标签区间内文本片段的注释显示功能…

深度学习实战自动驾驶目标识别

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对BDD100K自动驾驶目标数据集进行训练和优化&#xff0c;该数据集包含丰富的自动驾…

广西大数据局:数聚政府、利企惠民(广西数字政府建设内容、管理机制、应用场景)

2023年数字政府评估大会上&#xff0c;广西大数据局党委书记、主任周飞发表了题为“数聚政府、利企惠民”的主旨演讲。主要介绍了广西壮族自治区“数字政府的建设内容、数字政府的管理机制以及数字政府有哪些应用场景来实现惠企利民”。 篇幅限制&#xff0c;部分内容如下&…

AI 助力游戏开发中的常用算法实现

在当今的游戏开发领域&#xff0c;人工智能&#xff08;AI&#xff09;技术的应用已经成为推动行业发展的关键力量。AI不仅能够提升游戏的智能化水平&#xff0c;还能够增强玩家的沉浸感和游戏体验。随着技术的进步&#xff0c;AI在游戏设计、开发和测试中的应用越来越广泛&…

行业商机信息付费小程序系统开发方案

行业商机信息付费小程序系统&#xff0c;主要是整合优质行业资源&#xff0c;实时更新的商机信息。在当今信息爆炸的时代&#xff0c;精准、高效地获取行业商机信息对于企业和个人创业者而言至关重要。 一、使用场景 日常浏览&#xff1a;用户在工作间隙或闲暇时间&#xff0c…