anchor.diff:  (defun empty-line (point)
     (zerop (length (line-string point))))
   
  +;; Vim word
  +;; See http://vimdoc.sourceforge.net/htmldoc/motion.html#word
  +;; word = a sequence of letters, digits and underscores
  +(defun vi-word-char-p (char)
  +  (and (characterp char)
  +       (or (alphanumericp char)
  +           (char= char #\_))))
  +
   (define-command vi-move-to-beginning-of-line/universal-argument-0 () ()
     (if (mode-active-p (current-buffer) 'universal-argument)
         (universal-argument-0)
  
positive.code:   (forward-word-begin (current-point) n nil))
  
  (define-command vi-backward-word-begin (&optional (n 1)) ("p")
    (backward-word-begin (current-point) n nil))
  
  (define-command vi-forward-word-begin-broad (&optional (n 1)) ("p")
    (forward-word-begin (current-point) n t))
  
negative.code:   (backward-word-begin (current-point) n t))
  
  (define-command vi-forward-word-end (&optional (n 1)) ("p")
    (when (< 0 n)
      (let ((p (current-point)))
        (cond
          ((vi-word-char-p (character-at p 1))
           (loop
             while (and (not (eolp p)) (vi-word-char-p (character-at p 1)))
             do (vi-forward-char)))
          ((eolp p)
           (vi-next-line)
           (vi-move-to-beginning-of-line)
           (vi-forward-word-end n))
          (t
           (loop until (or (eolp p) (vi-word-char-p (character-at p 1)))
                 do (vi-forward-char)))))
      (vi-forward-word-end (1- n))))
  
  (define-command vi-forward-word-end-broad (&optional (n 1)) ("p")
    (forward-word-end (current-point) n t))
  