如何使 netrw 列表 .h 和 .c 文件成对在一起?

how to make netrw list .h and .c files together as pairs?

netrw :E 可以成对显示 .h 和 .c 文件吗?

例如:

file1.h
file1.c
file2.h
file2.c
file3.h
file3.c

目前我的 netrw :E 按以下顺序列出文件:

file1.h
file2.h
file3.h
file1.c
file2.c
file3.c

根据我从 :h netrw-sort-sequence 了解到的情况,g:netrw_sort_sequence 设置默认将 .h 个文件优先于 .c 个文件。

您可以将以下内容添加到 vimrc 文件以更改默认行为:

let g:netrew_sort_sequence = '[\/]$,\<core\%(\.\d\+\)\=,\.[a-np-z]$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'

注意:缺少 .h.c 扩展名。

关于切换文件

除了使用像 netrw 又名 :Explore 这样的文件浏览器之外,还有很多(我认为更好的)文件切换方式。仅举几例:

  • 模糊查找器,例如CtrlP
  • Projectionist 对于结构良好的项目
  • 使用 :find'path'
  • 使用%表示当前文件。参见 :h :_%
  • 使用 <tab> 完成(以及 <c-d>)和 :e(也接受 glob)

对于 C 项目,您有一些不错的 .c <-> .h 切换选项。

插件

切换插件,如 fswitch,这是一个 C/C++ .h/.c 切换器。请参阅 :h fswitch-setup 了解更多信息。

还有一些其他插件可以做类似的事情:altr and a.vim 仅举几例。

原版 Vim

如果您不喜欢插件,那么您可以使用 % 技巧。例如:sp %<.h

或者可能是一个快速而肮脏的映射:

nnoremap <f4> :e %:p:s,.h$,.X123X,:s,.c$,.h,:s,.X123X$,.c,<cr>

有关详细信息,请参阅以下 vim 维基页面:Easily switch between source and header file