Открытие файла из .netrw в указанном разделении - PullRequest
5 голосов
/ 06 декабря 2011

Это тот же вопрос, что и в SuperUser , но я чувствую, что здесь больше шансов получить ответ, поэтому ...

В Vim,У меня есть четыре разделения - два на два - и в левом верхнем углу открыт один netrw.Есть ли способ открыть файл из netrw в нижнем правом разделении, нижнем левом и т. Д .?

Ответы [ 3 ]

9 голосов
/ 27 августа 2012

здесь есть несколько подсказок https://superuser.com/questions/377501/keep-cursor-in-netrw-window-when-browsing-files-in-vim

Поместите это в ваш .vimrc,

let g:netrw_preview = 1

, чтобы настроить вертикальное разбиение предварительного просмотра, затем, когда курсор находится над нужным файлом,введите p , чтобы открыть окно предварительного просмотра.Чтобы закрыть окно, введите Ctrl W z .

Термин, используемый в vim для окна, которое открывается без перемещения курсора к нему.это окно предварительного просмотра.Чтобы узнать больше об этом, см.

:help netrw-preview
:help CTRL-W_z

или просто

:help netrw

и просмотрите оглавление для других команд просмотра и других функций netrw.

2 голосов
/ 28 мая 2013

Вы можете установить переменную g:netrw_chgwin, чтобы заставить netrw открывать файлы в определенном окне. См:

:h netrw-C

Таким образом, чтобы сделать текущее окно целью netrw, введите это, пока вы находитесь в этом окне:

:let g:netrw_chgwin = winnr()

Другой способ - запустить netrw в целевом окне (:E), нажать C, чтобы выбрать его для редактирования, и закрыть netrw с помощью <c-o>.

0 голосов
/ 29 июня 2019

Чтобы объединить ответы, приведенные выше, некоторые источники вдохновения: я использую следующую конфигурацию окна вместе с 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

...