"Ask Haskell or Scheme programmers, and they'll tell
you that functions are the most important feature of any serious
programming language. Ask C or Perl programmers, and they'll tell
you exactly the same thing. Functions provide two essential
benefits to the serious programmer:
"They enable complex computational tasks to be subdivided into
pieces small enough to fit comfortably into a single human
brain.
"They allow those subdivided pieces to be given logical and
comprehensible names, so they can be competently manipulated by a
single human brain.
"Vimscript is a serious programming language, so it naturally
supports the creation of user-defined functions. Indeed, it
arguably has better support for user-defined functions than Scheme,
C, or Perl. This article explores the various features of Vimscript
functions, and show how you can use those features to enhance and
extend Vim's built-in functionality in a maintainable way."