我的 Vim 学习之路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
izzy27
V2EX    分享创造

我的 Vim 学习之路

  •  
  •   izzy27 2023-09-02 22:02:36 +08:00 4215 次点
    这是一个创建于 770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    谨以此文缅怀 Vim 作者 Bram Moolenaar

    我的 Vim 学习之路

    初识

    我想大约是 17 年初的时候,在我看了一篇介绍的 Vim 和 Emacs 文章后,我对 Vim 这种编辑模式产生了浓厚的兴趣,文中介绍使用 Vim 你可以完全脱离鼠标工作,大幅提升 Coding 的效率,对当时的我产生了很大的震撼,这太酷了。

    为了使用 Vim ,我立即安装了一个 Ubuntu 的虚拟机,然后调出命令行,兴奋的敲下命令:

    $vim test

    Untitled

    接着,我发现键盘的没有任何反应,我甚至无法打出 hello world 。

    对此,我的反应和大多数 Vim 初学者一样,感到沮丧。

    但是下一秒,我发现我沮丧得太早了,因为我根本无法退出这个界面,于是我不得不换台电脑,搜索那个经典的问题:

    如何退出 Vim ?

    Untitled

    于是:q成为了我第一个掌握的命令。

    经过这次折腾,我对 Vim 没有太多的好感,但我始终保持了对 Vim 的敬畏,我认为这些从上个世纪开始持续称霸数十年的工具都是不可冒犯的,尤其是大多数人都一致好评的情况下。

    当时大学的课程进行到学习 C 了,写代码就需要用 IDE ,我下载了 Dev-C++ 作为我第一个 IDE 进行编程,开始写课本上的练习题,当学期结束时,我也把 IDE 换成了 Visual Studio 。

    我已经忘了要学习 Vim 这件事情了。

    学习 Vim

    人做某件事情总是需要推动力的,而我开始学习 Vim 的转折点来自加入学校的 C++ 实验室。

    所谓实验室其实就是计算机学院划出了一部分办公室,提供设备和场地给学生学习,虽然我大部分时间都在那里打游戏。

    18 年的夏天,在实验室的书架上,我发现了一本书,长得黑漆漆的,就是它:

    Untitled

    花了大约三周的时间读完这本书后,我开始觉得这些古老的指针、Unix 操作系统、C 悠久的历史太有魅力了,我陷入了某种对 C 的皈依狂热中,这种狂热在我读完《 LinuxC 编程一站式学习》后达到了顶峰。

    当时阅读的笔记:Linux 下 C 编译的步骤_hhmy77 的博客-CSDN 博客

    这种影响是巨大的,我立即放弃了 Visual Studio ,转而开始刀耕火种式的编程,我强迫用命令行来写 C ,自己生成可执行文件,在这一过程中,Vim 是必须要掌握的工具,出于教徒的虔诚,我开始认真的学习它。

    过了大半年的学习,我的 Vim 技巧已经能支持我像使用 IDE 一样流畅的编写代码了,也就是说我终于不用写到一半去搜索 Vim 的命令,或者复制粘贴到 IDE 中完成剩余的代码编写了,这让我看起来像一个正常人一样,真是令人振奋的进步。

    在旧的博客上,我还记录了 Vim 的一些使用技巧,下面就是当时我掌握的技能

    插入模式 i 退出模式 esc 左下上右 h j k l 跳转到改行的第一个 afa 撤销 u 命令编辑模式下:保存并退出:wq 不保存退出:q 在后面加!则强制操作 保存并退出 shift+zz 不保存退出 shift+zq 普通模式下替换当前字符为 ara ,替换字符串 R 字符串将当前字符变为大写~ 普通模式下 当前行右移>> 跳转到行尾$ 行首^ 跳转到下一个单词 e 复制: v 进入可视模式,然后选择想要复制的语句,按 y 复制,返回 normal 模式,按 p 粘贴 普通模式下输入 / 然后键入需要查找的字符串 按回车后就会进行查找。 ? 与/ 功能相同,只不过 ? 是向上而 / 是向下查找。 进入查找之后,输入 n 和 N 可以继续查找。 n 是查找下一个内容,N 查找上一个内容。 在当前行下开始插入 o 在当前行之前开始插入 O 向上移动一行 ctrl+y 向下移动一行 ctrl+e 跳转到单词词首、下一单词词尾、前一单词词首 web 删除光标开始的单词 dw 删除光标所在的单词 daw 删除当前字符 x 2.3.3 高级查找 普通模式下输入*寻找游标所在处的单词 普通模式下输入#同上,但 # 是向前(上)找,*则是向后(下)找 普通模式下输入 g*同* ,但部分符合该单词即可 普通模式下输入 g#同# ,但部分符合该单词即可 

    尽管并不多,我还是花了很多时间去学习 Vim ,足以证明 Vim 的学习曲线有多么陡峭。

    一些主流编辑器的学习曲线

    Untitled

    持续学习 Vim

    又经过一段时间的学习,我接触了 Java 和 C#,我对现代化 IDE 的需求与日俱增,为了使用 C#,我重新开始使用 Visual Studio ,为了学习 Java ,下载了 IDEA 。这些现代 IDE 使得我丝滑地忘记了那段狂热的时光,唯一存在过的证明是我会在第一时间下载 Vim 插件到这些 IDE 里,使用 Vim 的编辑模式来 Coding 。

    Vim 是如此博大精深,直到前不久,我才开始使用 :vsplit 来分屏操作 : ),但学习 Vim 的过程是充满趣味的,这种苦行僧式的修行,一开始会疯狂的折磨你,然后会度过一个瓶颈期,接着,你会感觉到快感,随着你的技巧不断提升,快感甚至能进化为喜悦。

    人生苦短

    2023 年 8 月 5 日,我在 V2EX 上刷到了 Vim 作者去世的消息,点开链接查看,当即有一种人生苦短的感慨。回头看,我学习 Vim 的时间不过几年,而这几年的时光里,我们看到了太多新技术的诞生,看到了互联网的退潮,看到了各种人才陨落的消息,Life is short …

    Message from the family of Bram Moolenaar (google.com)

    Untitled

    老实说,我并不是一名传统的 Vim 使用者,我只是使用 Vim 的编辑模式来编程,而我也并不了解 Vim 的作者和他背后的历史。在这之后,我阅读了一些关于 Moolenaar 的文章,我越来越对 Moolenaar 感到敬佩。

    R.I.P.! Vim 程式器作者 Bram Moolenaar 享 62 - INSIDE Moolenaar 定 Vim 的使用款到,如果意支持的使用者可以捐款干的童,而不是要求捐款 Moolenaar 自己。 目前 Vim 每年有 30000 元的捐款,算下大可以助 50 名干童完成小到大的。

    Untitled

    如此伟大的作品,如此伟大的人,文章的最后,让我们一起缅怀这名程序员吧。

    15 条回复    2023-09-07 21:11:30 +08:00
    huihuiHK
        1
    huihuiHK  
       2023-09-02 22:40:42 +08:00
    最后还是 vscode 真香
    GaryLz
        2
    GaryLz  
       2023-09-02 22:52:41 +08:00 via iPhone
    说的应景的话 先生千古 R.I.P
    israinbow
        3
    israinbow  
       2023-09-03 00:31:32 +08:00 via Android
    vim 学会就可以换 helix 再学一个, 或者把自己的人生浪得在 nvim 客制化 (
    equationzhao
        4
    equationzhao  
       2023-09-03 01:54:23 +08:00
    RIP
    CodFrm
        5
    CodFrm  
       2023-09-03 16:18:45 +08:00
    花大功夫配置好 nvim 之后,还是用 idea/vscode+vim 插件写


    izzy27
        6
    izzy27  
    OP
       2023-09-03 18:43:10 +08:00
    @CodFrm 和你一样
    aigonna
        7
    aigonna  
       2023-09-03 21:40:05 +08:00 via iPhone
    好学呀
    LavaC
        8
    LavaC  
       2023-09-04 09:47:47 +08:00
    最近我也在入门,但是功夫不到家,有时候用急眼就会把 vim 模式关了。
    wipbssl
        9
    wipbssl  
       2023-09-04 10:01:53 +08:00
    最近刚入门,不过我没怎么折腾 nvim 本身,主要是在 vscode+vim 插件配合使用,浏览器也安装了 vimium C 插件,大部分时间能代替鼠标了。不过 vimium C 有一些 bug ,有些按扭没法点,比如 V2EX 的感谢,这种时候用触控板很舒服,但在台式上用鼠标是就很麻烦
    vcfvct
        10
    vcfvct  
       2023-09-04 22:42:26 +08:00 via Android
    @wipbssl 建议试试 surfingkeys, 功能强大,可扩展性强,感觉比 vimium 强,而且还是国人开发
    wipbssl
        11
    wipbssl  
       2023-09-05 11:18:34 +08:00
    @vcfvct 试用过,感觉默认键位用起来不如 vimium C 舒服
    martin0330
        12
    martin0330  
       2023-09-07 07:34:37 +08:00 via Android
    @CodFrm 这个是啥皮肤,好好看,求告知
    CodFrm
        13
    CodFrm  
       2023-09-07 09:55:43 +08:00
    @martin0330 palenight

    chaorenguilai198
        14
    chaorenguilai198  
       2023-09-07 19:49:58 +08:00
    国外大神都在盛赞 vim 和 EMACS 的高效,但都忽略了一个默认前提的声明:熟练的键盘盲打能力。英文键盘的盲打能力是使用 vim 的前提,各种命令的记忆都是第二位的。
    国内的广大程序员,首先应该加强的应该是盲打能力。
    izzy27
        15
    izzy27  
    OP
       2023-09-07 21:11:30 +08:00
    @chaorenguilai198 是的,盲打的能力非常重要,推荐一个练习网站: https://typing.io/lessons
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2609 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:20 PVG 14:20 LAX 23:20 JFK 02:20
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86