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

时间:2014-06-29 11:03:46

标签: vim netrw

我喜欢Netrw。它相当不错/功能强大,它有现货Vim。

但是我使用正常的光标导航模式进入Netrw的生产力问题很小。我做的最重要的活动是/安装使用导航光标,因为我知道我会寻找什么。

  1. 是否可以/进入Netrw,即搜索模式? I.e任何Netrw缓冲区默认为/并按Enter键 应该把它带到简单的光标导航模式?
  2. 如何制作另一个' /'应该只输入当前第一个搜索突出显示的目录吗?
  3. 模糊搜索会更精彩,但有关如何实现的任何想法?
  4. 任何想法如何做到这一点? Vim非常易于组合,因此这应该是可能的。任何想法如何实现这一目标?当然我使用CtrlP等,而Netrw已经变得多余,但有时需要导航FS。如果你认为它有点像Emacs中的ido模式,但是我在想如何添加一个使用Netrw的图层但是以不同的方式处理它添加该图层的挑战是什么以及有什么指示来理解这些特殊的缓冲?

2 个答案:

答案 0 :(得分:1)

我会使用原始映射来处理您的第一个要求:

:nnoremap <key> :Explore<CR>/

并查看确实是否需要更复杂。

你的第二个要求听起来不太可能,因为这意味着/被用于两个截然不同的动作在同一模式下,听起来非常不像vim一样。在我看来,<CR>更清晰,更直观。

Vim不进行模糊搜索,因此您需要编写自己的算法或将其从其他人的插件中提取出来。 set incsearch可能是一个足够好的临时解决方案(对我来说肯定是这样)。

答案 1 :(得分:0)

autocmd FileType netrw call feedkeys("/\<c-u>", 'n')使其对netrw缓冲区保持不变。

使用这样的映射:

map <silent> <C-E> :call ToggleVExplorer()<CR>
cmap <C-E> <C-\><C-N>:call ToggleVExplorer()<CR>

如果你有一个像ToggleVExplorer那样打开和关闭的切换功能:

"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