To bring above answers together some inspirations: I use the following window configuration together with netrw (together with :let g:netrw_liststyle = 2):
-------------------------------- ...
Netrw-split: topleft spilt
-------------------------------- ...
| | |
working | working | working |
window 1 | window 2 | window 3 | ...
| | |
Thus I can go directly to Netrw-split from every other window. Then I put to my .vimrc:
augroup netrw
autocmd!
autocmd WinLeave * if &ft !=# "netrw" | let g:netrw_chgwin = winnr() | endif
autocmd filetype netrw call Netrw_mappings()
augroup END
The WinLeave command sets the global g:netrw_chgwin variable to the window just left (except if we are in the netrw-window). Thus netrw will open any file in the window from which I accessed it and due to the window layout I can access netrw from any other window.
The autocmd 'filetype' is used to also create a new file in the window from which I accessed netrw. For this netrw's '%' command has to be overwritten:
function! Netrw_mappings()
noremap <buffer>% :call CreateInLastWindow()<cr>
endfunction
With a function creating the new file in window g:netrw_chgwin:
function! CreateInLastWindow()
let l:filename = input("new file's name: ")
let l:netrwdir = b:netrw_curdir
execute g:netrw_chgwin . "wincmd w"
execute 'edit ' . l:netrwdir.'/'.l:filename
endfunction