anchor.diff:                  #:with-jump-motion))
   (in-package :lem-vi-mode.ex-command)
   
  -(defun ex-write (range filename)
  +(defun ex-write (range filename touch)
     (case (length range)
       (0 (if (string= filename "")
  -           (lem:save-buffer)
  +           (lem:save-buffer touch)
              (lem:write-file filename)))
       (2 (lem:write-region-file (first range) (second range)
                                 (if (string= filename "")
  
positive.code:                                   (lem:buffer-directory))))
  
  (define-ex-command "^(w|write)$" (range filename)
    (ex-write range filename))
  
  (define-ex-command "^update$" (range filename)
    (when (lem:buffer-modified-p (lem:current-buffer))
      (ex-write range filename)))
  
  (define-ex-command "^wq$" (range filename)
    (ex-write-quit range filename nil))
  
  (define-ex-command "^wq!$" (range filename)
    (ex-write-quit range filename t))
  
  (define-ex-command "^q$" (range argument)
    (declare (ignore range argument))
  
negative.code:     (otherwise (syntax-error))))
  
  (defun ex-write-quit (range filename force)
    (ex-write range filename touch)
    (lem-vi-mode.commands:vi-quit force))
  
  (define-ex-command "^e$" (range filename)
  