Chuyển đổi giữa src và bao gồm các tệp trong vim


3

Tôi đang viết một thư viện được tổ chức thành hai thư mục src / và bao gồm / thư mục tương ứng chứa các tệp .cpp và .h tương ứng. Trình chỉnh sửa yêu thích của tôi là vim, nhưng tôi vẫn chưa tìm thấy một cách tốt để nhanh chóng chuyển đổi giữa các tệp nguồn và tiêu đề một cách nhanh chóng. Ví dụ, tôi có thể thấy mình chỉnh sửa

~ / không gian làm việc / myproject / bao gồm / myproject / core / utils / coolutil.h

và quyết định bây giờ tôi cần thực hiện một thay đổi nhỏ để

~ / không gian làm việc / myproject / src / myproject / core / utils / coolutil.cpp.

Có cách nào thuận tiện và thuận tiện để xử lý các công tắc như vậy một cách nhanh chóng trong (g) vim không? Cách tiếp cận hiện tại của tôi là giữ hai NERDTrees mở, một cho src / và một cho bao gồm /, mặc dù tôi cảm thấy như phải có một cách tiếp cận ít rườm rà hơn.


Câu trả lời:


1

Chức năng này có thể làm những gì bạn muốn. Đặt nó trong ~ / .vimrc của bạn hoặc trong một plugin. Nó giả định rằng tất cả các tệp .cpp và .h của bạn nằm trong các thư mục song song như trong ví dụ của bạn.

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>

Khi bạn mở tệp .cpp hoặc .h, gõ ,osẽ mở tệp khác trong cửa sổ chia.


3

Các plugin thay thế a.vim giải quyết điều này. Đó là điều bắt buộc khi lập trình bằng C hoặc bằng C ++.


a.vim dường như chỉ muốn chuyển đổi giữa các tệp nguồn và tiêu đề trong cùng một thư mục. Làm cách nào tôi có thể định cấu hình nó để sử dụng các cây thư mục nguồn / bao gồm song song của mình?
RCv

3
Bạn phải thiết lập g:alternateSearchPathvới các biểu thức chính xác. ví dụ: let g:alternateSearchPath = 'reg:#\<src\>$#include#,reg:#\<include\>$#src#'để chuyển đổi giữa path/to/source/includepath/to/source/src
Luc Hermitte
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.