Vim之父逝世,为纪念他你现在可以开始学习 Vim 了

编辑器Vim之父,布莱姆·米勒(Bram Moolenaar)逝世,享年62岁。 (程式设计圈内广为流传的一句话:世界上只有叁种程式设计师,用Vim的,用Emacs,和用其他的。) 在布莱姆家人发的讣告中写到: 我们必须怀着沉重的心情通知您,由于在过去几周裡病情迅速恶化,Bram Moolenaar于8月3日去世。

为纪念编辑器Vim之父,布莱姆·米勒,我们来学习一下 Vim

Vim 是一个命令行文本编辑器,因难以学习而臭名昭着(流行的笑话是生成一个真正随机的字符串,将 Web 开发人员放在 Vim 前面并告诉他们退出)。那麽为什麽还要费心学习它呢,特别是如果您已经熟悉文本编辑器或 IDE 的话?学习 Vim 的一些好处包括:

Vim 已经安装在任何类 Unix 系统上,这意味着你可以直接在服务器上编辑文件(真正的超能力)

与大多数文本编辑器和 IDE 相比,Vim 是轻量级的,因此即使在最普通的硬件上也能快速高效地运行

Vim 完全是键盘驱动的(大多数操作集中在主行),所以它会让你更有效率?

我在最后一个关于如何提高效率的问题上打了一个问号——这是一个你经常听到的论点,但我不确定这是否适合每个人。基本上,为了高效地使用 Vim,您不仅需要投入大量时间来学习它,而且还需要投入大量时间来掌握它。这意味着您使用它节省的时间会被您投入掌握它的时间所抵消,并且您总是投入时间掌握它。我会说学习 Vim 的最佳理由是因为您喜欢花时间学习和掌握複杂的技能.这样一来,这与为什麽有人想学习一种新乐器并没有什麽不同!

如果这些想法听起来对您很有吸引力,那麽您可以按照下面概述的四周计划来帮助您学习 Vim。这就是我学习 Vim 的方式,它基于我在论坛和教程中反复遇到的建议。我还添加了一些我自己的技巧,这些技巧对我一路走来有所帮助。

第 1 週:每天完成一次 vimtutor

许多人都认为学习 vim 基础知识的最佳方法是在终端中简单地输入以下命令:

$ vim导师

这将在 Vim 中打开一个文本文件,其中包含涵盖基本 Vim 命令的分步说明。您应该需要 30 分钟左右才能完成整个过程。如果您了解 中介绍的命令vimututor,那麽您就已经準备好开始在 Vim 中高效工作了。

问题是其中涵盖了很多命令vimtutor- 您不可能一次性学会所有命令!我的建议是刻意练习,vimtutor每天一次,连续至少一周。每次你这样做时,看看你的时间是否有所改善。为自己设定一个目标——看看你能否在 5 分钟内完成整个任务。重点不是要记住每一个命令,而是要练习足够的时间,直到基本的导航和编辑命令成为第二天性。

如果您的目标是了解足够的 Vim 以便能够在服务器上远程编辑文件,那麽您可以到此为止 - 您已经了解的足够多了,这很危险!如果您想使用 Vim 作为您选择的编辑器,可以继续下一步。

第 2 週:以最少的配置使用 Vim,无需插件

现在您已经可以轻松地在 Vim 中导航和编辑,您将需要对其进行配置以适应您的个人工作流程。Vim 有一个相当乏味且过时的默认配置,但使用配置文件使用现代功能很容易对其进行自定义vimrc。关键是不要疯狂地使用插件来试图让 Vim 成为一个成熟的 IDE——Vim 擅长成为 Vim,但不擅长成为 IDE。

相反,请按照本文构建您自己的vimrc文件。作为起点,这些是我唯一要配置的东西:

添加配色方桉(我使用vim-code-dark,基于 Visual Studio Code)

打开语法高亮

设置空格和製表符

设置自动缩进

打开行号

使用製表符补全查找子文件夹中的文件(观看此视频5 分钟)

配置更快的方式按ESC退出插入模式(我将大写锁定键更改为CTRL并使用CTRL C退出插入模式)

老实说,就是这样!(无插件规则的唯一例外是,如果您需要为 Vim 不支持的任何语言安装特定于语言的支持)。我们的目标是在一周内避免任何额外的配置或花哨的插件——这可能会让人感到痛苦,但它会阻止你把所有的时间都花在配置 Vim 上,而不会花时间练习 Vim。

专业提示:配置 vim 时,请使用.vim主目录中具有以下目录结构的文件夹(在此处详细信息)。vimrc较新版本的 Vim 会在文件夹中查找文件.vim,因此您可以将所有内容保存在一个文件夹中。这使您可以将您的.vim文件夹变成一个 git 存储库,您可以轻松地将其克隆到任何计算机上!

.vim/ 

├── colors/ <- 配色方桉目录

├── plugin/ <- 标準插件目录

└── vimrc <- 包含主配置的文件

第 3 週:使用 Vim 和最少的插件

在您将 Vim 用于实际项目后,您将对 Vim 的功能有更好的了解,并且您可能会渴望进一步自定义它。但是,您仍然应该避免安装从根本上改变 Vim 工作方式的插件。这是我建议您现在仍然避免使用的流行插件类型的列表:

避免安装插件管理器(新版本的 Vim 本身就可以很好地处理插件)

避免安装树浏览器或模煳文件查找器插件(:find使用子文件夹搜索效果很好)

避免安装可视选项卡插件(尝试习惯本机 Vim 缓冲区,:b <TAB>在这裡效果很好)

避免安装自动完成插件(Vim 已经可以使用 来完成此操作<CTRL n>)

避免安装多行注释插件(尝试使用可视模式)

避免为多个游标安装插件(尝试使用/搜索n并.根据需要重複)

这裡的总体主题是插件通常是阻碍你学习 Vim 实际功能的拐杖。所有上述类型的插件都很棒,可以节省您的时间,但只有在您完全了解如何使用“vanilla”Vim 完成相同的任务时才应该安装它们。

话虽这麽说,有一些插件不会改变 Vim 的核心行为,但可以让生活变得更方便。以下是我使用的一些属于该类别的插件:

考虑安装 auto-pairs.vim(成对插入或删除括号、括号、引号)

考虑安装 endwise.vim(在 Ruby 中,在 、、等end之后添加)ifdodef

考虑安装 ragtag.vim(HTML、erb 等中标籤的帮助程序)

第 4 週:用动词和名词编写 Vim 命令

此时,您应该足够了解 Vim,以便专注于编写新命令而不是记住新命令。为了编写新命令,将 Vim 视为一种语言会有所帮助。Chris Toomey 的Mastering the Vim Language演讲值得完整观看,看看这个概念有多麽强大:

简而言之,您需要了解一些动词和名词:

动词 — d(删除)、c(更改)、y(複製/複製)、>(缩进)

名词(动作)—— w(单词)、b(后退一个单词)、2j(向下 2 行)

名词(文本对象)—— iw(内部单词)、it(内部标籤)、i”(内部引号)

然后您可以组合动词和名词来创建任意数量的命令:

dw删除到单词末尾

diw删除光标处的整个单词

y4j複製 4 行

cit更改 HTML 标记内的内容

演讲指出,记住大约 30 个命令使您能够编写 2,000 多个不同的命令。请注意,我将把它放在第 4 週——这些内容非常有帮助,但前提是您对 Vim 有一个很好的总体掌握。3 週后,您应该能够很好地掌握达到这一魔法级别所需的 30 个命令!

演讲还提到安装插件以向 Vim 语言添加更多内容。与往常一样,安装插件时应小心谨慎。但在这种情况下,我们讨论的是作为一种语言添加到 Vim 的插件(而不是与 Vim 核心行为相矛盾的插件)。一些值得一看的插件:

考虑安装 Surround.vim(添加一个新的修饰符来更改周围的引号、括号等)

考虑安装 commentary.vim(向注释行添加新动词)

考虑安装 repeat.vim(添加对某些插件的.repeat支持)

(以上所有插件均由Tim Pope开发,您在掌握 Vim 的过程中肯定会遇到这个名字)。

专业提示:在演讲中,他们使用相对行号进行了回顾,实际上我不推荐这样做。当它第一次推出时,很多人都是它的忠实粉丝,但我也听说人们在一段时间后遇到了问题(代码难以阅读,有时会导致性能问题)。我个人不认为它有什麽用处,因为您可以使用常规 Vim 命令G或gg轻松完成同样的事情(移动或删除到特定行)(请参见此处)。

结论

学习 Vim 是一项繁重的工作,但也很有趣。如果您不愿意花一个月的时间来学习文本编辑器,那麽这可能不适合您。然而,我确实认为大多数开发人员会受益于遵循第一周的建议,至少获得能够直接在服务器上编辑文件的超能力。您将能够做一些令人惊奇的事情,例如使用 VPS在 iPad 或 Chromebook 上真正编写代码。至少,当 Vim 在你的终端中随机打开时,你不会因为陷入困境而显得愚蠢!

如果您确实花时间完成了全部 4 週,那麽您可以将您的程序员编辑游戏提升到一个全新的水平。老实说,我不知道它是否会让您更有效率(因为您可能会花费编写代码节省的时间来学习更酷的技巧和尝试新的配置)。同样,这更像是学习乐器 - 根据您的个性,您可以从不断掌握 Vim 的过程中获得真正的乐趣。希望您发现这些提示对您的旅程有用!

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

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

相关文章

抖店商品怎么让达人带货?说下找达人技巧和寄样后的操作,可收藏

我是王路飞。 找达人带货的玩法是公认出单快、易爆单、长久稳定的出单方式。 虽然新手可能感觉要给达人佣金&#xff0c;自己利润会降低&#xff0c;但是这种玩法可以让你快速入门&#xff0c;且能长久玩下去。 尤其是现在抖音直播间的产品全都是来自抖音小店的&#xff0c;…

YOLO目标检测——花蕊分类检测数据集下载分享

花蕊分类检测数据集共同7300图片&#xff0c;103类别&#xff0c;分别放在103个文件夹中&#xff0c;可应用于&#xff1a;植物学研究、花卉市场和园艺业、智能农业、视觉搜索引擎、等等 数据集点击下载&#xff1a;YOLO花蕊分类检测数据集7300图片102种类别.rar

多旋翼飞控底层算法开发系列实验 | 多旋翼动力系统设计实验3

多旋翼动力系统设计实验3 01/多旋翼动力系统简介​​​​​​​ 多旋翼无人机的动力系统通常包括螺旋桨、电机、电调以及电池。动力系统是多旋翼最重要的组成部分&#xff0c;它决定了多旋翼的主要性能&#xff0c;如悬停时间、载重能力、飞行速度和飞行距离等。动力系统的部件…

Elasticsearch 集成--Flink 框架集成

一、Flink 框架介绍 Apache Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Apache Spark 掀开了内存计算的先河&#xff0c;以内存作为赌注&#xff0c;赢得了内存计算的飞速发展。 但是在其火热的同时&#xff0c;开发人员发现&#xff0c;在 Spark …

EasyExcel自定义字段对象转换器支持转换实体和集合实体

文章目录 1. 实现ObjectConverter2. 使用3. 测试3.1 导出excel3.2 导入excel 1. 实现ObjectConverter package com.tophant.cloud.common.excel.converters;import cn.hutool.json.JSONUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.…

Redis之Sentinel(哨兵)机制

一、Sentinel是什么&#xff1f; Sentinel&#xff08;哨岗、哨兵&#xff09;是Redis的高可用性&#xff08;high availability&#xff09;解决方案&#xff1a;由一个或多个Sentinel实例&#xff08;instance&#xff09;组成的Sentinel系统&#xff08;system&#xff09;…

设计模式—原型模式(Prototype)

目录 一、什么是原型模式&#xff1f; 二、原型模式具有什么优缺点吗&#xff1f; 三、有什么缺点&#xff1f; 四、什么时候用原型模式&#xff1f; 五、代码展示 ①、简历代码初步实现 ②、原型模式 ③、简历的原型实现 ④、深复制 ⑤、浅复制 一、什么是原型模式&…

c++之指针

总结性质 我们如何在一个函数中获取数组的长度&#xff1a; 我们都知道&#xff0c;在main函数中我们获得数组的长度只需要使用sizeof&#xff08;a&#xff09;/sizeof&#xff08;a【0】&#xff09;即可获得&#xff0c;但当我们把一个数组传入到方法时&#xff0c;c默认把…

以楼宇自控系统为基础的系统集成方式

系统集成主要通过建筑与建筑群综合布线系统和计算机网络技术&#xff0c;使构成智能 建筑的各个主要子系统具有开放式结构、协议和接口都标准化和规范化。 系统集成的方式主要包括&#xff1a; &#xff08; 1&#xff09;智能建筑的系统集成可采用以 BAS 为中心&#xff0c;…

重生c++系列之类与对象(中篇)

好的继上期&#xff0c;我们今天带来c类与对象系列的继续学习。 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员 函数。 …

pyqt5-快捷键QShortcut

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *""" 下面示例揭示了&#xff0c;当关键字绑定的控件出现的时候&#xff0c;快捷键才管用&#xff0c; 绑定的控件没有出现的时候快捷键无效 """…

vscode使用anaconda自带的python环境在终端运行时报错

目录 具体报错内容官方翻译报错讲人话解决方法 具体报错内容 CommandNotFoundError: Your shell has not been properly configured to use conda activate. If your shell is Bash or a Bourne variant, enable conda for the current user with$ echo ". E:\Anaconda/e…

无涯教程-Android - Activity

Activity代表具有用户界面的单个屏幕&#xff0c;就像Java的窗口或框架一样。Android Activity 是ContextThemeWrapper类的子类。 如果您使用过C&#xff0c;C或Java编程语言&#xff0c;那么您一定已经看到您的程序从 main()函数开始。与之非常相似&#xff0c;Android系统以 …

MySQL日期格式及日期函数实践

目录 日期格式 日期函数 CURDATE()和CURRENT_DATE()CURTIME()和CURRENT_TIME()NOW()和CURRENT_TIMESTAMP()DATE_FORMAT()DATE_ADD()和DATE_SUB()DATEDIFF()DATE()DAYNAME()和MONTHNAME() 1. 日期格式 在MySQL中&#xff0c;日期可以使用多种格式进行存储和表示。常见的日期格式…

m3u8 blob视频免费下载

F12点开找到这个视频url最后是.m3u8结尾 http://blog.luckly-mjw.cn/tool-show/m3u8-downloader/index.html 在上边的网址转Mp4下载即可

后端面试话术集锦第二篇:spring boot面试话术

🚗后端面试集锦目录 💖后端面试话术集锦第 1 篇:spring面试话术💖 💖后端面试话术集锦第 2 篇:spring boot面试话术💖 💖后端面试话术集锦第 3 篇:spring cloud面试话术💖 💖后端面试话术集锦第 4 篇:ElasticSearch面试话术💖 💖后端面试话术集锦第 5 …

Flutter可执行屏幕动画的AnimateView

1.让动画使用起来就像使用widget。 2.可自定义动画。 3.内置平移动画。 演示&#xff1a; 代码: import dart:math; import package:flutter/cupertino.dart;class AnimateView extends StatefulWidget {///子Widgetfinal Widget child;///动画自定义final IAnimate? anim…

HTML-常见标签、HTML5新特性

HTML 软件架构 1.C/S架构 (1) C/S架构即Client/Server&#xff08;客户机/服务器&#xff09;结构。 (2) C/S 架构特点 ​ C/S结构在技术上很成熟&#xff0c;它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。但是该结构的程序是…

ssm会议管理系统源码和论文

ssm会议管理系统源码和论文087 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&…

玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server

前言 基于我个人的工作内容和兴趣&#xff0c;想要在家里搞一套服务器集群&#xff0c;用于容器/K8s 等方案的测试验证。 考虑过使用二手服务器&#xff0c;比如 Dell R730, 还搞了一套配置清单&#xff0c;如下&#xff1a; Dell R7303.5 尺寸规格硬盘CPU: 2686v4*2 内存&a…