Cấu hình Vim code C/C++ như thế nào?

Em có google một thời gian nhưng vẫn chưa có được .vimrc có đủ tính năng để sử dụng, xin các bác chia sẻ cách config Vim để code C/C++ với ạ. Các feature em mong muốn như sau:

  1. auto format/indent source code.
  2. recommend code (em có cài Coc-vim clangd nhưng nó không trỏ vào các element của nested struct).
  3. Jump to definition. (Em gg mãi không ra, e tính dùng grep để search r tự mở ^^).
  4. NERDTree em đã tự cài được, nhưng xin các bác bộ key-binding để học hỏi.

Xin các bác chỉ giáo cho, em gg thấy trên này có vài bài nói về vim rồi mà k biết các bác dùng cho C/C++ sao. Em xin cảm ơn :smiley:

Mục 1, 2, 3 mình thấy visual studio có hỗ trợ. Mình đọc các topic liên quan đến Vim thì thấy mọi người cho rằng nó giúp lập trình nhanh và hiệu quả hơn, bạn có thể cho mình hỏi là nó có các ưu điểm gì so với VS được ko ạ?

2 Likes
  1. Vim có rất nhiều custom extension thú vị và cộng đồng cuồng nhiệt
  2. Vim loại bỏ chuột và làm cho người code cảm giác cool ngầu hơn, và nếu thành thạo thì tốc độ edit nhanh hơn vs code
  3. Vim có thể index và tìm kiếm string/variable/function trong các files nhanh, kể cả trong trường hợp làm việc với remote repo (ví dụ qua ssh). Bạn chỉ có thể cảm nhận sự khác biệt khi phải làm project có hơn 1 triệu file hoặc file hơn 10 triệu dòng. Bản thân mình đã gặp trường hợp mà vs code search không ra string vì file có kích thước quá lớn và search rất chậm vì project có quá nhiều file.
  4. Khi làm việc với embedded linux, vim/vi là editor nhẹ và sẵn có, trong một số trường hợp, bạn không thể cài thêm 1 chương trình nào khác vào máy tính embedded linux đó cả (ví dụ như debug trên 1 con router).

PS: Mình là fan của VS Code và không thích dùng Vim/Vi. Mình không biết xài và cấu hình Vim.

7 Likes

Mình code một thời gian thì thấy lười dùng chuột. Cảm giác phải di chuyển tay từ bàn phím qua chuột mất thời gian.
Mình hiện tại code trên máy server và sài docker để switch môi trường build. Chính vì thế, mình muốn thao tác code luôn trong docker nên mình nghĩ vim là nhanh nhất.

6 Likes

các cao nhân chỉ em với :frowning:

Thay vì coc.nvim, bạn consider dùng hàng built-in nvim-lspconfig và plugin nvim-cmp, sau đó setup thêm clangd language server.

  1. Code format nên dùng theo language server, nếu language server không có thì khi đó mới dùng plugin ngoài. Hàm format code là vim.lsp.buf.format.
  2. Code inspection/analyzation cũng là do language server, clangd có nếu mình nhớ không nhầm, còn nếu không thì không có plugin nào làm được.
  3. Đa số language server có hỗ trợ, hàm vim.lsp.buf.definition.

Bạn có thể tạo keymap để gọi các hàm LSP trên, e.g. suggested nvim-lspconfig configuration.

Nếu dùng nvim-cmp, khi setup language server, cần pass thêm default capabilities của nvim-cmp, tham khảo nvim-cmp-config.lua nếu bạn có dùng.

3 Likes

cảm ơn ạ, giờ e vẫn chưa đến level phải tối ưu việc typing như thế, việc tạo tài liệu có khi còn tốn thời gian gấp mấy lần việc code.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?