My solution doesn't involve tweaking path or a custom command (which isn't as scalable to other forms of :edit, like :split): I use a command-line mapping on %% to insert the directory. It goes like this:
cnoremap <expr> %% bk#filename#command_dir('%%')
where bk#filename#command_dir is an autoloaded function:
" Get the directory of a file
" - On Ex command lines, returns the directory of the file ('./' for new files)
" - On other command lines (/,?) returns the keymap used to trigger it
function! bk#filename#command_dir(keymap) abort
let l:command_type = getcmdtype()
if l:command_type isnot# ':'
return a:keymap
endif
let l:dir = expand('%:h')
if empty(l:dir)
let l:dir = '.'
endif
return l:dir . (has('win64') || has('win32') || has('win32unix') ? '\' : '/')
endfunction
Now I type :edit %%file, :vsplit %%, or other variants when I need to (actually I have mappings that insert that automatically).