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

我的 Vim 学习之路

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

    谨以此文缅怀 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   ·   实用小工具   ·   2674 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.