Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vim-Netrw中更轻松地进行文件系统导航_Vim_Netrw - Fatal编程技术网

如何在Vim-Netrw中更轻松地进行文件系统导航

如何在Vim-Netrw中更轻松地进行文件系统导航,vim,netrw,Vim,Netrw,我喜欢Netrw。它相当好/有力量,而且有库存 然而,我在使用普通光标导航模式进入Netrw时遇到了一个小的生产力问题。我做的最重要的活动是/安装使用导航光标,因为我知道我将要寻找什么 是否可以在/即搜索模式下进入Netrw?即,任何Netrw缓冲区默认为/并按Enter键 是否应将其设置为简单光标导航模式 如何使另一个“/”只需输入当前第一个搜索突出显示下的目录 模糊搜索会更加精彩,但你知道如何实现吗 有什么办法吗?Vim是相当可组合的,因此这应该是可能的。有什么办法可以做到这一点吗?当然,我

我喜欢Netrw。它相当好/有力量,而且有库存

然而,我在使用普通光标导航模式进入Netrw时遇到了一个小的生产力问题。我做的最重要的活动是
/
安装使用导航光标,因为我知道我将要寻找什么

  • 是否可以在
    /
    即搜索模式下进入Netrw?即,任何Netrw缓冲区默认为/并按Enter键 是否应将其设置为简单光标导航模式
  • 如何使另一个“/”只需输入当前第一个搜索突出显示下的目录
  • 模糊搜索会更加精彩,但你知道如何实现吗

  • 有什么办法吗?Vim是相当可组合的,因此这应该是可能的。有什么办法可以做到这一点吗?当然,我使用CtrlP等,Netrw已变得多余,但有时需要导航FS。如果你认为它有点像Emacs中的ido模式,那么我在想如何添加一个使用Netrw但处理方式不同的层,添加该层有什么挑战,以及理解这些特殊缓冲区的一些要点是什么

    我将使用粗略的映射来处理您的第一个需求:

    :nnoremap <key> :Explore<CR>/
    
    :nnoremap:Explore/
    
    看看它是否真的需要更复杂

    您的第二个需求听起来不太可能,因为这意味着
    /
    在同一模式下用于两个截然不同的操作,这听起来非常不像vim<代码>在我看来更清晰、更直观


    Vim不做模糊搜索,所以您需要编写自己的算法或从其他插件中提取算法
    set incsearch
    可能是一个足够好的临时解决方案(对我来说的确如此)。

    autocmd文件类型netrw call feedkeys(“/\”,'n')
    使其持久化到netrw缓冲区

    使用如下映射:

    map <silent> <C-E> :call ToggleVExplorer()<CR>
    cmap <C-E> <C-\><C-N>:call ToggleVExplorer()<CR>
    
    "Toggle Vexplore with Ctrl-E
    function! ToggleVExplorer()
      if exists("t:expl_buf_num")
          let expl_win_num = bufwinnr(t:expl_buf_num)
          if expl_win_num != -1
              let cur_win_nr = winnr()
              exec expl_win_num . 'wincmd w'
              close
              exec cur_win_nr . 'wincmd w'
              unlet t:expl_buf_num
          else
              unlet t:expl_buf_num
          endif
      else
          exec '1wincmd w'
          Vexplore
          let t:expl_buf_num = bufnr("%")
      endif
    endfunction