Tùy Chỉnh vim-grepper: Tối Ưu Hóa Trải Nghiệm Tìm Kiếm Mã Nguồn Trong Vim

Giới thiệu về vim-grepper

vim-grepper là một plugin Vim mạnh mẽ giúp lập trình viên tra cứu từ khóa trong mã nguồn nhanh chóng. Thay vì phụ thuộc vào một công cụ cố định, nó cho phép tích hợp nhiều trình tìm kiếm dòng lệnh như git, ag, rg, mang lại một giao diện đồng nhất để quét qua tệp hiện tại, thư mục dự án, hoặc toàn bộ kho mã nguồn.

Cài đặt và Khởi tạo

Bạn có thể cài đặt plugin này thông qua trình quản lý plugin của Vim hoặc sao chép trực tiếp kho lưu trữ về máy:

git clone https://gitcode.com/gh_mirrors/vi/vim-grepper ~/.vim/pack/vendor/start/vim-grepper

Sau khi cài đặt, toàn bộ hành vi của tiện ích có thể được tinh chỉnh thông qua biến toàn cục g:grepper trong tệp cấu hình .vimrc hoặc init.vim.

Tùy chỉnh Hành vi Tìm kiếm

Thay vì gán từng biến rời rạc, bạn có thể nhóm các cấu hình lại bằng một từ điển (dictionary) để quản lý logic rõ ràng hơn. Đoạn mã dưới đây thiết lập ripgrep làm công cụ mặc định, bật chế độ làm nổi bật kết quả và hiển thị thanh bên (sidebar):

" Khởi tạo danh sách công cụ ưu tiên
let s:search_tools_priority = ['rg', 'ag', 'git', 'grep']

" Cấu hình tập trung cho vim-grepper
let g:grepper = {
    \ 'tools': s:search_tools_priority,
    \ 'highlight': 1,
    \ 'quickfix': 1,
    \ 'open': 1,
    \ 'jump': 0,
    \ 'side': 1,
\ }

Ánh xạ Phím tắt (Keybindings)

Để gọi lệnh tìm kiếm nhanh hơn, bạn có thể tạo các phím tắt tùy chỉnh. Thay vì sử dụng các phím mặc định, ví dụ dưới đây gán tổ hợp <leader>f cho cả chế độ thông thường (normal) và chế độ trực quan (visual):

" Kích hoạt tìm kiếm trong chế độ Normal
nnoremap <leader>f <plug>(GrepperOperator)

" Tìm kiếm nội dung đang bôi đen trong chế độ Visual
xnoremap <leader>f <plug>(GrepperOperator)

Tìm kiếm theo Phạm vi (Scope)

Tiện ích này hỗ trợ giới hạn phạm vi tìm kiếm thông qua các cờ (flags) dòng lệnh:

  • -buffer: Chỉ quét trong bộ đệm (buffer) hiện tại.
  • -buffers: Tìm trong tất cả các bộ đệm đã tải.
  • -dir: Xác định thư mục tìm kiếm (hỗ trợ các giá trị như cwd, file, repo).

Ví dụ khi cần tìm một biến cụ thể trong toàn bộ kho git repository:

:Grepper -dir repo "ten_bien_can_tim"

Xử lý Sự cố Thường gặp

1. Không nhận diện được công cụ tìm kiếm

Nếu hệ thống báo lỗi thiếu rg hoặc ag, bạn cần cài đặt chúng trên hệ điều hành:

# Hệ điều hành Ubuntu/Debian
sudo apt-get install ripgrep

# macOS thông qua Homebrew
brew install ripgrep

2. Lỗi hiển thị font chữ (Encoding)

Trường hợp kết quả trả về bị vỡ mã, hãy đảm bảo Vim đang sử dụng bộ mã UTF-8 bằng cách thêm vào cấu hình:

set encoding=utf-8
set fileencodings=utf-8,ucs-bom,gb18030

Thẻ: Vim vim-grepper ripgrep neovim Vimscript

Đăng vào ngày 22 tháng 10 lúc 16:40