20 个 Vim 实用技巧

我是 Vim 的忠实用户,从开始编程起,就使用 Vim 作为编辑器。在我看来,Vim 的强大之处有三:

  1. 快速定位;
  2. 宏;
  3. 不计其数的插件。

在使用 Vim 的过程中,我从社区学习到很多有用的技巧,自己也总结和掌握了一些。正是这些技巧让我得以在个人的编程经验中,还算得心应手地使用 Vim。本文是我对自己平常使用的一些用法技巧的分享,这些技巧不借助任何插件,全部是 Vim 本身提供的功能。(当然这绝不是在否定插件的作用,只是说,编辑器本身可以提供或者达到的效果,则尽管用,keep it simple。)

Read more

理解 JavaScript 闭包

在 JavaScript 中,原型(prototype)和闭包(closure) 可以说是这门语言的精髓,也是不太容易理解和掌握的地方。比如 Eric Elliott 就认为这两个概念是 JavaScript 的 两大支柱。前者是 JavaScript 的 OOP 实现,后者是函数式编程的关键所在。本文尝试探讨一下闭包的形成原理以及它的作用。

First-class function

和所有的函数式编程语言一样,JavaScript 的函数也是 First-class function,这意味着函数可以:

  • 赋值给一个变量;
  • 作为参数传递给其他函数;
  • 作为返回值从其他函数中返回;

就像其他所有的对象(object)一样。这是闭包得以存在的最基本的条件,因为本质上来讲,闭包就是函数,一种特殊的函数。

Read more