code: def do_edit(self, line):
          
          if len(line) == 0:
              print_err("Must provide a filename")
              return
          filename = resolve_path(line)
          dev, dev_filename = get_dev_and_path(filename)
          mode = auto(get_mode, filename)
          if mode_exists(mode) and mode_isdir(mode):
              print_err("Unable to edit directory '{}'".format(filename))
              return
          if dev is None:
              # File is local
              os.system("{} '{}'".format(EDITOR, filename))
          else:
              # File is remote
              with tempfile.TemporaryDirectory() as temp_dir:
                  local_filename = os.path.join(temp_dir, os.path.basename(filename))
                  if mode_exists(mode):
                      print('Retrieving {} ...'.format(filename))
                      cp(filename, local_filename)
                  old_stat = get_stat(local_filename)
                  os.system("{} '{}'".format(EDITOR, local_filename))
                  new_stat = get_stat(local_filename)
                  if old_stat != new_stat:
                      self.print('Updating {} ...'.format(filename))
                      cp(local_filename, filename)
docs: edit FILE
  
             Copies the file locally, launches an editor to edit the file.
             When the editor exits, if the file was modified then its copied
             back.
  
             You can specify the editor used with the --editor command line
             option when you start rshell, or by using the VISUAL or EDITOR
             environment variable. if none of those are set, then vi will be used.