神级编辑器 Vim 使用-最后

news/2024/7/21 13:02:11 标签: vim

本文是系列笔记的最后一篇, 在这里讨论下与 vim 操作无关的事情 ^_^

vim8.png?x-oss-process=style/WaMa" alt="himg" />
himg

本系列教程共分为以下五个部分:

  1. 神级编辑器 Vim 使用-基础篇
  2. 神级编辑器 Vim 使用-操作篇
  3. 神级编辑器 Vim 使用-插件篇
  4. 神级编辑器 Vim 使用-正则操作篇
  5. 神级编辑器 Vim 使用-最后

Vim 会不会过时

Vi(m)在上世纪 80 年代左右就已经诞生了, 时至今日, 市面上流行的文本编辑器没有任意一个比 vim 更长寿(Emacs 除外). 而且, 我认为 vim 在可预见的未来内也不会过时, 原因有以下几点:

  • vim 基于终端, 可与终端中的工具无缝切换使用, 而终端中的工具有一个特点: 那就是生命力顽强, 经久不衰
  • vim 在创始人 Bram Moolenaar 的带领下始终保持着不断地迭代更新, 从 这里 可以看到
  • vim 一开始的定位就是文本编辑器, 而不是开发环境 IDE, 其只专注于文本操作, 这使得其在文本操作这个细分领域几乎无可匹敌
  • 目前有大量的 C/C++ 程序员都在使用 vim 作为其文本编辑工具, 用户量庞大

如何更高效地学习 Vim

以下是几点个人对于 vim 操作技能提升的建议

  • 如果你经常使用 hjkl 键进行连续移动, 请重新思考你使用 vim 的意义何在
  • 如果一处编辑花费了你较多的操作, 那么请停止一下, 绝对有其他操作方式让你更高效的完成编辑
  • 如果有简单的重复性的操作, 请充分考虑 . 命令
  • 如果有复杂的重复性的操作, 请考虑宏
  • 如果一种操作需要多文件使用, 以后也有可能会用到, 请考虑使用脚本文件

最后, 请将 vim 作为你的唯一编辑器用于所有文字编辑(本系列文章以及我所有笔记整理都是由 vim 来完成的), 这会让你在实践中快速进步

后续如何继续提高学习?

无论如何, 我都认为 vim 官方的帮助文档时最好的学习资料, 使用方法非常简单: normal 模式下输入 :h [command] 即可, 这可以很快速的定位到你想要了解的知识上, 而且叙述简单明了. e.g. :h netrw

在官方文档这么详细的背景下, 很多第三方插件也在插件的帮助文档中对其插件功能及可配置项进行了详细的说明, 使用方式也是 :h [command].

另外, 也有一系列的书对 vim 的一些特性进行了深入挖掘, 这里推荐:

  • Vim使用技巧(第2版) - Drew Neil
  • Vim 8 文本处理实战 - 鲁兰斯.奥西波夫

Vim 常见问题

光标移动速度慢

主要原因有两点

  1. vim 中的插件拖慢了速度

    vim 的第三方状态栏插件 air-line 插件开启后光标移动会被卡住, 改为 powerlinelightline, 效果好多了

  2. 在系统设置中将重复时间调至最短, 速度仍然不够快, 在终端中使用如下设置

    defaults write NSGlobalDomain KeyRepeat -int 1

    在系统设置中调至最快所对应的值是 2, 这里设置成 1 会变得更快. 最快的值是 0, 不过已经超出可控范围了, 因此不建议设置.

中文输入法下在 MacVim 中输入中文会导致大量重复拼音

  • 原因

    输入法没有完全截获按键

  • 解决办法

    终端下输入 defaults write org.vim.MacVim MMUseInlineIm 0

  • 原理

    将输入法针对于 MacVim 设置为单行模式

最后

本文作者 Hanley Lee, 首发于 闪耀旅途, 如果对本文比较认可, 欢迎 Follow


http://www.niftyadmin.cn/n/824632.html

相关文章

iOS 中的静态库与动态库

如果你经常困惑 iOS 开发中的静态库和动态库的作用与区别, 那么这篇文章可以为你解惑 himghimg静态库 (Static Libraries) 静态库简单的理解是多个目标文件 (object file, 以 .o 为后缀) 的打包集合. 静态库的存在形式: Mac/iOS: .a 或封装成 .frameworkLinux: .aWindows: .lib…

Rime 输入法使用

久闻 Rime 输入法的大名, 在几次浅尝辄止后, 终于被其高可定制性与简洁所吸引, 进而彻底转入 Rime 的怀抱. 由于 Rime 的安装与使用有一定的难度, 因此本文记录下相关的基础操作, 用于后来查阅. himg如果你是一个 Rime 新用户, 那么请完全根据本文的顺序进行阅读及配置, 最终将…

C/C++ 头文件路径在编译时及工具中的设置

使用 C/CPP, 避免不了要和各种头文件打交道, 系统库还好, 基本上不需要操心, 已经被自动预置入头文件列表中了. 棘手的是使用第三方库, 这时就要手动指定其头文件位置与库文件位置. 本文记录下在终端中手工编译与某些工具内编译的设置方式. 终端中使用 gcc/clang/makefile 手工…

Esensial C++学习总结

第一章 1.1 如何撰写C程序 #include <iostream> using namespace std; int main() {string user_name;cout << "Please enter your first name";cin >> user_name;cout << "\nHello, " << user_name << ".... …

C++ 之头文件声明定义

最近在学习 c, 在编译与链接过程中遇到了一些定义与声明的问题, 经过多处查阅资料, 基本解惑. 现记录与此, 希望让后面人少走些弯路. C 的头文件应该用什么扩展名? 目前业界的常用格式如下: implementation file *.cpp*.cc*.cc*.c header file *.hpp*.h*.hh*.hxx*.h 一句话…

Git Submodule 使用

himggit 的 submodule 作为一个独立的 repo, 其拥有普通 repo 全部的功能, 我们可以完全按照普通的 repo 管理命令来进入 submodule 中进行手动管理. 不过如果存在多个 submodule 位于同一 superproject 下时, 掌握一些 git submodule ... 命令就变得尤为重要了. 本文列出了常用…

UIScrollView 的相关滑动代理回调方法及属性在滑动时的变化

如题, 虽然用了很多很多次 UIScrollView, 知道它有一些滑动代理回调方法, 知道它有一些滑动状态相关的属性, 但对这些方法在每一个时间点的具体状态总是不太确定, 看官方说明文档也是一头雾水. 索性这次将所有的代理方法及属性调用一遍, 然后记录下结果. 对于这种涉及到状态变化…

Vim 之代码跟踪

这一篇聊聊我们如何通过 vim 浏览代码 代码浏览最重要的就是跟踪代码, 跟踪定义, 跟踪声明, 跟踪调用, 跟踪引用... himgvim 的跟踪通常可以通过两种方式实现: tags: 通过 ctags 工具生成 tags 文件cscope 数据库: 通过 cscope 或 gtags-cscope 生成 cscope 数据库两种方法各有…