Cambiar entre src e incluir archivos en vim

3

Estoy escribiendo una biblioteca que está organizada en dos directorios src / e include / paralelos y bastante profundos que contienen mis archivos .cpp y .h respectivamente. Mi editor favorito es vim, pero aún no he encontrado una buena manera de cambiar rápidamente entre los archivos de origen y de cabecera rápidamente. Por ejemplo, puedo encontrarme editando

~ / workspace / myproject / include / myproject / core / utils / coolutil.h

y decido que ahora necesito hacer un pequeño cambio para

~ / workspace / myproject / src / myproject / core / utils / coolutil.cpp.

¿Existe una manera conveniente y ergonómica de manejar tales interruptores rápidamente en (g) vim? Mi enfoque actual es mantener abiertos dos árboles NERDTrees, uno para src / y otro para include /, aunque siento que debe haber un enfoque menos engorroso.

rcv
fuente
stackoverflow.com/questions/17170902/…
Ciro Santilli 新疆 改造 中心 996ICU 六四 事件

Respuestas:

1

Esta función puede hacer lo que quieras. Póngalo en su ~ / .vimrc o en un complemento. Se supone que todos sus archivos .cpp y .h están en directorios paralelos como en su ejemplo.

function! OpenOther()
    if expand("%:e") == "cpp"
        exe "split" fnameescape(expand("%:p:r:s?src?include?").".h")
    elseif expand("%:e") == "h"
        exe "split" fnameescape(expand("%:p:r:s?include?src?").".cpp")
    endif
endfunction

nmap ,o :call OpenOther()<CR>

Cuando tiene abierto el archivo .cpp o .h, al escribir ,ose abrirá el otro en una ventana dividida.

garyjohn
fuente
3

El complemento alternativo a.vim resuelve esto. Es imprescindible al programar en C o en C ++.

Luc Hermitte
fuente
Parece que a.vim solo quiere cambiar entre los archivos de origen y de encabezado en el mismo directorio. ¿Cómo puedo configurarlo para usar mi fuente paralela / incluir árboles de directorio?
rcv
3
Tienes que configurar g:alternateSearchPathcon las expresiones regulares correctas. por ejemplo, let g:alternateSearchPath = 'reg:#\<src\>$#include#,reg:#\<include\>$#src#'para cambiar entre path/to/source/includeypath/to/source/src
Luc Hermitte