anchor.diff:             (with-point ((start (current-point))
                           (end (current-point)))
                (line-start start)
  -             (line-offset end (1- n))
  -             (line-end end)
  +             (line-offset end n)
  +             (line-start end)
                (copy-region start end)
                (throw tag t)))
             ((visual-p)
  
positive.code:            (with-point ((start (current-point))
                          (end (current-point)))
               (line-start start)
               (line-offset end (1- n))
               (line-end end)
               (kill-region start end)
               (unless *vi-clear-recursive*
                 (delete-next-char)))
             (throw tag t))
            ((visual-p)
             (with-output-to-string (out)
  
negative.code:       (lem::current-kill-ring)
      (declare (ignore string))
      (if (eql type :vi-nolf)
          (character-offset (current-point) 1)
          (progn
            (vi-next-line)
            (line-start (current-point))))
      (yank)
      (character-offset (current-point) -1)
      (unless (eql type :vi-nolf)
        (line-start (current-point)))))
  
  (define-command vi-paste-before () ()
    (yank))
  
  (define-command vi-replace-char (c)
  