anchor.diff:               (line-end end)
                (let ((eob (not (character-offset end 1))))
                  (kill-region start end)
  +               (kill-append "" nil '(:vi-line))
                  (if eob
                      (unless *vi-clear-recursive*
                        (delete-previous-char))
  
positive.code:              (unless (continue-flag :kill)
                 (kill-ring-new))
               (kill-push (get-output-stream-string out))
               (unless (visual-line-p)
                 (kill-append "" nil '(:vi-nolf))))
             (vi-visual-end))
            (t
             (let ((command (loop with uarg = nil
  
negative.code:                        (when (point/= start end)
                           (cond
                             ((same-line-p start end)
                              (copy-region start end))
                             (t
                              (line-start start)
                              (line-end end)
                              (character-offset end 1)
                              (copy-region start end)
                              (kill-append "" nil '(:vi-line))))))))
                   (move-point (current-point) start))))))))
  
  (define-command vi-paste-after () ()
    (multiple-value-bind (string type)
        (lem::current-kill-ring)
      (declare (ignore string))
      (if (eql type :vi-line)
          (progn
            (line-end (current-point))
            (or (character-offset (current-point) 1)
                (insert-character (current-point) #\Newline)))
          (character-offset (current-point) 1))
      (yank)
      (character-offset (current-point) -1)
      (when (eql type :vi-line)
        (line-start (current-point)))))
  
  (define-command vi-paste-before () ()
    (multiple-value-bind (string type)
        (lem::current-kill-ring)
      (declare (ignore string))
      (when (eql type :vi-line)
        (line-start (current-point)))
      (yank)))
  
  