Tôi đã thấy các giải pháp từng phần trên internet nhưng không có gì thực sự hài lòng với tôi: tôi phải đặt gì vào .vimrc (lý tưởng là tôi không muốn có cơ hội nào cú pháp/*. tệp vim) sao cho trong tất cả các tệp .c/cpp/h mà tôi mở, tôi nhận được tự động gấp các phần #ifdef ... #endif
?Tự động điền #ifdef .. # endif trong vim qua .vimrc
Trả lời
Nếu loại duy nhất của gấp mà bạn muốn là #ifdef
phần, cách dễ nhất là để tạo ra một tập tin ~/.vim/after/ftplugin/c.vim
(bạn cũng có thể cần phải làm điều này trong cpp.vim
, tôi không chắc chắn) với nội dung sau:
set foldmarker=#ifdef,#endif
set foldmethod=marker
Nếu bạn thực sự muốn đặt nó trong .vimrc
hơn là sử dụng cấu trúc ~/.vim/after/
, bạn có thể làm một cái gì đó như thế này:
autocmd FileType *.[ch]{,pp} call FoldPreprocessor()
function! FoldPreprocessor()
set foldmarker=#ifdef,#endif
set foldmethod=marker
endfunction
bạn cũng có thể muốn xem xét u hát:
set foldmarker=#if,#endif
Như sẽ bắt #if defined(...)
, #ifdef
, #ifndef
, #if 0
vv cũng như #ifdef
.
Làm điều này với cú pháp gấp là khó khăn hơn vì bạn sẽ phải thay đổi đặc tả cú pháp vì nó không hỗ trợ tiêu chuẩn này.
Bạn biết rằng bạn có thể điều hướng các khối điều kiện tiền xử lý bằng phím %?
Ngoài ra, [# và ] # điều hướng lên/xuống.
Vì vậy, bạn có thể đi đến sự bắt đầu của một khối có điều kiện (có lẽ với /^#
Nhập), sau đó
zf% -- fold to next conditional directive
v2]#zf -- fold to second next directive (e.g. #else... #endif)
zd
để thả các lần.
Có lẽ bạn có thể đưa ra một kịch bản nhỏ xung quanh khái niệm này. Tôi không chắc chắn liệu sẽ có sự tương tác (bất lợi) với cú pháp cú pháp thông thường hay không, vì tôi không có thói quen sử dụng nó. Tôi thường sử dụng gấp indent với thao tác gấp thủ công như thế này.
- 1. Vim vundle colorschemes - vimrc
- 2. Tự động mở NERDTree trong vim
- 3. Tự động điền tự động điền jQuery không giữ lại
- 4. Tự động cập nhật hộp tự động điền trong Android?
- 5. Vim tự động tạo ctags
- 6. Tự động điền tự động Emacs
- 7. đâu là nơi tốt nhất để đặt #ifdef __cplusplus extern "C" {#endif
- 8. Làm cách nào để làm cho các emacs đối xử với #ifdef và #endif như '{' và '}'?
- 9. #ifdef trong C#
- 10. .vimrc cho plugin vim của IntelliJ Idea
- 11. tập tin vim cụ thể .vimrc
- 12. Vim tạm dừng nếu echo trong tập tin .vimrc
- 13. Thực hiện Tự động điền trong iOS
- 14. Tiện ích tự động điền trong yii
- 15. Tự động điền biến tĩnh trong PHP
- 16. Tự động hoàn thành Vim + Đề xuất?
- 17. Số tiền tự động điền
- 18. Cài đặt màu sắc hoàn hảo vim (Pmenu) trong vimrc không hoạt động
- 19. Chỉ tự động điền tên tệp với bash khi chạy vim?
- 20. Cách thực hiện lệnh Vim trong một tệp, như .vimrc?
- 21. Thời gian tải lại chậm hơn .vimrc
- 22. Cách thêm điều kiện 'hoặc' trong #ifdef
- 23. Insert bình luận tự động trong Vim
- 24. Tự động phát hiện HTML5 trong vim
- 25. Chạy vim mà không tải .vimrc nhưng tải các plugin
- 26. làm thế nào để gỡ lỗi vim config (vimrc)
- 27. cách viết tệp vimrc (tự động) chỉ áp dụng cho một thư mục cụ thể
- 28. Không có vimrc, gvimrc và .vim trên mac
- 29. Vim tự động hoàn toàn
- 30. Tự động điền ngày vào bảng oracle
Bạn đang sử dụng phương pháp đo độ rộng nào? Cú pháp gấp? –
Có, cú pháp gấp (nhưng tôi đoán tôi có thể làm điều này nếu điều này giúp giảm gấp tự động) – dcn