这是与on SuperUser相同的问题,但我觉得它有更好的机会在这里得到解答,所以......
在Vim中,我有四个分裂 - 两个两个 - 在左上角有一个netrw是打开的。有没有办法从netrw中打开右下角,左下角等文件?
答案 0 :(得分:9)
这里有一些提示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功能的目录。
答案 1 :(得分:2)
您可以设置g:netrw_chgwin
变量以使netrw在特定窗口中打开文件。参见:
:h netrw-C
所以当你在那个窗口时,让当前窗口成为netrw类型的目标:
:let g:netrw_chgwin = winnr()
另一种方法是在目标窗口(:E
)中启动netrw,点击C
选择它进行编辑,然后用<c-o>
关闭netrw。
答案 2 :(得分:0)
将以上答案汇总为一些启发:我将以下窗口配置与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的“文件类型”也用于在我访问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