Чтобы объединить ответы, приведенные выше, некоторые источники вдохновения: я использую следующую конфигурацию окна вместе с netrw (вместе с: let g: netrw_liststyle = 2):
-------------------------------- ...
Netrw-split: topleft spilt
-------------------------------- ...
| | |
working | working | working |
window 1 | window 2 | window 3 | ...
| | |
Таким образом, я могу перейти непосредственно к Netrw-splitиз любого другого окна.Затем я помещаю в свой .vimrc:
augroup netrw
autocmd!
autocmd WinLeave * if &ft !=# "netrw" | let g:netrw_chgwin = winnr() | endif
autocmd filetype netrw call Netrw_mappings()
augroup END
Команда WinLeave устанавливает глобальную переменную g: netrw_chgwin в только что левое окно (кроме случаев, когда мы находимся в окне netrw).Таким образом, netrw откроет любой файл в окне, из которого я получил к нему доступ, и благодаря разметке окна я могу получить доступ к netrw из любого другого окна.
autocmd 'filetype' используется также для создания нового файла вокно, из которого я получил доступ к netrw.Для этого команда netrw '%' должна быть перезаписана:
function! Netrw_mappings()
noremap <buffer>% :call CreateInLastWindow()<cr>
endfunction
С помощью функции, создающей новый файл в окне 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