11

这与SuperUser 上的问题相同,但我觉得它有更好的机会在这里得到回答,所以......

在 Vim 中,我有四个分割 - 两个两个 - 左上角一个 netrw 是打开的。有没有办法从 netrw 在右下拆分、左下等打开文件?

4

3 回答 3

15

这里有一些提示https://superuser.com/questions/377501/keep-cursor-in-netrw-window-when-browsing-files-in-vim

把它放在你的 .vimrc 中,

let g:netrw_preview = 1

配置垂直预览拆分,然后当光标位于所需文件上时,键入p以打开预览窗口。要关闭窗口,请键入CtrlWz

vim 中使用的术语是“预览窗口”。要了解有关此的更多信息,请参阅

:help netrw-preview
:help CTRL-W_z

要不就

:help netrw

并浏览目录以获取其他浏览命令和其他 netrw 功能。

于 2012-08-26T23:40:40.667 回答
3

您可以设置g:netrw_chgwin变量以使 netrw 在特定窗口中打开文件。看:

:h netrw-C

因此,要使当前窗口成为 netrw 的目标,请在该窗口中输入:

:let g:netrw_chgwin = winnr()

另一种方法是在目标窗口 ( :E) 中启动 netrw,点击C选择它进行编辑并用 关闭 netrw <c-o>

于 2013-05-28T19:35:25.407 回答
2

将以上答案结合在一起,得到一些启发:我将以下窗口配置与 netrw 一起使用(连同 :let g:netrw_liststyle = 2):

    -------------------------------- ...
    Netrw-split:左上溢出
    -------------------------------- ...
             | | |
    工作| 工作| 工作|
    窗口 1 | 窗口 2 | 窗口 3 | ...
             | | |

因此,我可以从其他每个窗口直接进入 Netrw-split。然后我把我的.vimrc:

    augroup netrw
        自动命令!
        autocmd WinLeave * if &ft !=# "netrw" | 让 g:netrw_chgwin = winnr() | 万一
        autocmd 文件类型 netrw 调用 Netrw_mappings()
    augroup 结束

WinLeave 命令将全局 g:netrw_chgwin 变量设置为刚刚左边的窗口(除非我们在 netrw 窗口中)。因此 netrw 将在我访问它的窗口中打开任何文件,并且由于窗口布局,我可以从任何其他窗口访问 netrw。

autocmd 'filetype' 还用于在我访问 netrw 的窗口中创建一个新文件。对于这个 netrw 的 '%' 命令必须被覆盖:

    功能!Netrw_mappings()
        noremap <缓冲区>% :call CreateInLastWindow()<cr>
    结束功能

使用在窗口 g:netrw_chgwin 中创建新文件的函数:

    功能!CreateInLastWindow()
        let l:filename = input("新文件名:")
        让 l:netrwdir = b:netrw_curdir
        执行 g:netrw_chgwin 。“wincmd w”
        执行“编辑”。l:netrwdir.'/'.l:文件名
    结束功能

于 2019-06-29T11:12:13.930 回答