缘起性空
EarthWorm

Termite

HexEdit

Friends

RSS

分享一个 Hex 编辑插件,顺便聊一聊VI/VIM

16 Nov 2019 TAGS : [ MacOS 环境配置 VIM VIMScript Hexedit ]

构思很久了

一直想给 VIM 写个方便 Hex 编辑的插件,总是不确定能否实现, 所以想了好几年,前阵子恶补了一下 VIMScript 的帮助, 发现这个引擎自身语法还是挺完备的,虽然提供的接口很零散, 直觉上绕几个圈还是有机会的。

一鼓作气完成后,发个开源项目 vim-HexEdit给感兴趣的筒子们用着玩吧。

不过呢,本文却不是为了介绍插件的,而是聊一下我对 VIM 和 VIMScript 的理解。

如何理解 VI/VIM

在程序员的圈子里一直流传着把 VIM 变成 IDE 的各种绝学,越传越神,越看越帅。 萌新们照猫画虎的塞了一大堆插件,塞完后才发现,关文件找不到按钮,开文件慢的要死, 新鲜劲一过,留了一句这玩意学习曲线太陡,又回去拥抱 IDE 了。

其实是一些故作高深的人把 VIM 神话了,它就是个文本编辑器, 如果它真能完美替代 IDE,那就不会出现那么多现代 IDE 了。

其实 VIM 的历史想必大家都听过,它是从 VI 继承过来的。项目在 VIM 本以为是个很大的项目,结果主程序员只有一个人。 代码发过去后,由他亲自测试提交。

VIM 真正的优势其实是大部分操作系统都会内置它,而且具有超强跨平台能力, 比如你家里的智能路由器上都可能有它的影子,这样的能力是 Eclipse/VS 等 IDE 无法超越的。

相当于你学会了使用 VIM 后,可以在任何环境下写代码,所以作为一个靠技术吃饭的 攻城狮,VIM 其实是非常值得学习的技能,虽然学习起来慢一些,但掌握它确实可以获益。

使用 VIM 的时候要注意,现代的工程目录越来越复杂,已经复杂到 VIM 插件也很难 完全兼顾的状态。对于这种情况去找专业的 IDE 吧,时间是有限的,少跳一个坑是一个坑。

如果你有一天想认真的学习 VIM 的时候,我私藏的配置项目 Vimhone可能会是一个不错的开始。 这套基础配置我用了好多年了,期间微调很多次,近两年才逐步固定下来。 在它的帮助下我写过 C/Python/Go/Shell/VIMScript 等等不同类型语言的代码。 可以说是很耐用的基础配置,最近简单装修了一下,加了个帮助文档,祝萌新们上手愉快。

如何理解 VIMScript

掌握 VIMScript 是开发 VIM 插件的基础,它能够同 VIM 无缝联动。当熟练使用 VIM 后, 对 VIM 产生新要求后,就是到了该掌握 VIMScript 的时候了,想要快速掌握 VIMScript, 要抓住三个关键点:

1. 正则表达式。在VIM中,很多操作都是基于正则表达式来提速的。好在这东西是
    程序员经常用到的知识,应该还好。记得经常查阅 `:help pattern-overview\<CR>`
2. 理解 VIM 的事件触发机制。VIMScript 的很多逻辑是基于事件触发来实现的。
    VIMScript 本身不具有入口函数的概念,它更像是由很多回调函数组成的,
    VIM 在切换到某一状态之前或之后,会发出一个事件,而这个事件会触发调用 
    VIMScript 中的相关函数。多多测试 `:help autocmd-events\<CR>` 
    里面的各种事件,总会找到一款适合你。
3. 了解内置函数。VIM 提供了丰富的内置函数支持,界面交互,光标控制,缓冲区控制,
    进制转换等等一系列的函数。`:help functions\<CR>` 多去逛逛没坏处。

嘻嘻

本博客停更了 2 年多,是因为伤心了。有些小伙伴应该知道,这域名在 Google 安全情报 中被标黑了两年,浏览器打开时会被警告为恶意页面,本以为无救了,近期偶然发现似乎 解封了,可能是我之前做的一些抢救机制终于生效了吧。No matter what, it’s clean, I’m happy. 一种 “我胡汉三又回来了” 的兴奋感。

TAGS : [ MacOS 环境配置 VIM VIMScript Hexedit ]