【问题标题】:Netrw open files into tabs in opposite vertical windowNetrw 在对面的垂直窗口中将文件打开到选项卡中
【发布时间】:2016-07-23 07:24:26
【问题描述】:

想象一下我在启动 vim 后有:Vex。我希望能够按t 并将选项卡附加到对面的窗口而不是 Netrw 窗口。这可能吗?

如果我按P,我可以将文件打开到拆分窗口中,但我希望能够在垂直拆分中的文件之间切换,同时让我的 Netrw 窗口可见 - 就像 Sublime 或 Komodo 一样。

可能吗?

是的,我已经搜索了:h netrw

【问题讨论】:

    标签: vim netrw


    【解决方案1】:

    通过一些 .vimrc 重新映射和选项几乎可以做到。

    看起来像这样http://i.imgur.com/rUf19SF.png

    用法:

    1. 运行 vim。
    2. 点击shift enter。这会将 netrw 作为侧边栏打开(右侧的一个小拆分窗口)并聚焦它。
    3. 像往常一样浏览并点击enter打开一个文件。这将默认在左侧窗口中打开它并聚焦它。
    4. 点击control-w control-w。这将再次聚焦 netrw。
    5. 像往常一样浏览,但这次点击control-enter 打开文件。这将在一个新选项卡中打开它,该选项卡还包含 netrw 侧边栏。

    .vimrc 配置:

    " netrw magic
    " enable mouse usage. makes it easier to browse multiple tabs
    set mouse=a
    " hide netrw top message
    let g:netrw_banner=0
    " tree listing by default
    let g:netrw_liststyle=3
    " hide vim swap files
    let g:netrw_list_hide='.*\.swp$'
    " open files in left window by default
    let g:netrw_chgwin=1
    " remap shift-enter to fire up the sidebar
    nnoremap <silent> <S-CR> :rightbelow 20vs<CR>:e .<CR>
    " the same remap as above - may be necessary in some distros
    nnoremap <silent> <C-M> :rightbelow 20vs<CR>:e .<CR>
    " remap control-enter to open files in new tab
    nmap <silent> <C-CR> t :rightbelow 20vs<CR>:e .<CR>:wincmd h<CR>
    " the same remap as above - may be necessary in some distros
    nmap <silent> <NL> t :rightbelow 20vs<CR>:e .<CR>:wincmd h<CR>
    

    注意事项:

    每个选项卡中的netrw“侧边栏”是独立的,这意味着一个选项卡中的当前目录可能与另一个选项卡中的不同。建议?曾考虑在每个“侧边栏”窗口中使用 netrw 缓冲区,但 netrw 在更改目录时使用新缓冲区。

    【讨论】:

    • 是否可以在 vim 加载时打开这个侧边栏? autocmd VimEnter * :Vexplore给不同的netrw。
    • @Lanti 是的,只需将 autocmd 拆分为两行 autocmd VimEnter * rightbelow 20vs,然后在其下方 autocmd VimEnter * e .
    • 谢谢,点赞!效果很好!此代码是最好的 netrw 解决方案之一! 1. 还有一件事让我烦恼的是,如果我在新选项卡中打开一个新文件,它仍然会打开一个 netrw 本身。当您使用 ENTER 或 CTRL+ENTER 打开文件时,是否可以在每个新选项卡上设置不打开新的 netrw? 2. 是否可以创建快捷方式在后台打开新文件?在没有 netrw 的情况下在后台打开非常快的一堆文件会很有用。
    • @Lanti 要在没有 netrw 的新选项卡中打开文件,只需点击 t。要在同一选项卡中打开文件并自动关闭 netrw,您将需要一个新地图。像nmap &lt;silent&gt; b &lt;CR&gt;:wincmd l&lt;CR&gt;:q&lt;CR&gt; 这样的东西,然后点击b。我不知道如何在“背景”中打开文件......也许映射到将当前选项卡编号保存在变量中的函数,在新选项卡中打开文件然后移回原始选项卡会做。
    【解决方案2】:

    您似乎将 Vim 的“选项卡”与几乎在所有其他程序中都可以找到的“选项卡”混淆了。

    与其他实现不同,Vim 的选项卡不绑定到缓冲区。在 Vim 中,“选项卡”的行为类似于您所说的“工作区”:它们旨在将一个或多个窗口保持在一起。这些窗口可以显示任何缓冲区,您最终可以在多个选项卡的多个窗口中显示相同的缓冲区!

    考虑到这一点,按你的意愿使用它们是非常错误的。 “标签”不代表文件,跳转到另一个“标签”根本不等同于跳转到另一个文件

    :Vex创建的窗口是一个普通窗口。像所有其他窗口一样,它包含在“选项卡”中,不能位于“选项卡”之外。而且你不能在窗口内有“标签”。

    所以,基本上,你问的是不可能的。

    如果您使用的是 Mac,并且这个“类似其他编辑器的功能”对您真的很重要(比接受 Vim 方式更重要),您可以尝试 this MacVim fork它在缓冲区/窗口/选项卡三重奏的外部添加了一个“常规”文件浏览器。你也可以试试PIDA,它试图围绕 Vim 构建一个 IDE;包括一个单独的文件浏览器。

    【讨论】:

      【解决方案3】:

      正如 romainl 所说,选项卡不是文件(或缓冲区)。因此,如果我将您的问题重新解释为:“我想按 t 并让 files 出现在对面的窗口中......”。然后我建议阅读 :help netrw-C。如果您确实是指“追加”而不是“出现”,那么这将更加复杂,在我努力弄清楚如何做之前,我想知道这就是您的真正意思。最新的 netrw(截至今天,即 v153f)具有我在上面提供的帮助参考中提到的其他选项。

      【讨论】:

        猜你喜欢
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        • 2014-02-02
        • 1970-01-01
        • 2013-11-01
        相关资源
        最近更新 更多