如何使 netrw 将 .h 和 .c 文件成对列出?

wol*_*lfv 1 vim netrw

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

例如:

file1.h
file1.c
file2.h
file2.c
file3.h
file3.c
Run Code Online (Sandbox Code Playgroud)

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

file1.h
file2.h
file3.h
file1.c
file2.c
file3.c
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 5

据我了解:h netrw-sort-sequenceg:netrw_sort_sequence默认设置优先考虑.h文件.c

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

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

注:缺少.h.c扩展。

除了切换文件之外

除了使用像 netrw aka 这样的文件浏览器之外,还有很多(在我看来更好)在文件之间切换的方法:Explore。仅举几例:

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

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

插件

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

还有一些其他插件可以做类似的事情:例如altra.vim 。

香草维姆

如果插件不是你的菜,那么你可以使用%一些技巧。例如:sp %<.h

或者也许是一个快速而肮脏的映射:

nnoremap <f4> :e %:p:s,.h$,.X123X,:s,.c$,.h,:s,.X123X$,.c,<cr>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅以下 vim wiki 页面:在源文件和头文件之间轻松切换