TL; DR: erefactor-rename-symbol-in-buffer
Bạn đang tìm kiếm một chức năng đổi tên thông minh từ vựng - một chức năng đổi tên các biến theo phạm vi của chúng, không chỉ là một tìm kiếm và thay thế ngu ngốc. Các gói như thế này tồn tại cho rất nhiều ngôn ngữ nhưng kể từ khi viết (tháng 4 năm 2019), thực tế không có nhiều lựa chọn cho Emacs Lisp. Các erefactor
gói là người duy nhất tôi biết.
erefactor-rename-symbol-in-buffer
là chức năng bạn muốn. Đó là một lệnh tìm và thay thế thông minh sẽ thay thế các ký hiệu trong phạm vi hiện tại (bao gồm cả các tài liệu). Hạn chế của lệnh này là nó sẽ không tìm kiếm bên ngoài bộ đệm hiện tại. Nó thông minh, nhưng không hoàn hảo. Nó sẽ yêu cầu bạn xác nhận từng lần để đảm bảo kết quả cuối cùng là vệ sinh.
Các chức năng đổi tên khác là erefactor-rename-symbol-in-package
. Điều này không hoạt động theo cùng một cách - nó chỉ hoạt động trên các biểu tượng toàn cầu. Nó phụ thuộc vào gói của bạn được thiết lập chính xác, với một hệ thống nhóm và tiền tố, và nó cần biến để khớp với tiền tố của gói. Nó không mạnh lắm - sẽ thất bại nếu bạn không thiết lập mọi thứ theo cách mà chức năng này mong đợi. Tôi nghĩ rằng nếu bạn đổi tên một biểu tượng toàn cầu, bạn cũng có thể sử dụng một tìm kiếm ngây thơ và thay thế vì các biểu tượng toàn cầu trong Elisp không có không gian tên. Những lợi ích của sự hiểu biết từ vựng là tối thiểu. Lệnh này quá mong manh cho sự đánh đổi. Tôi sẽ đề nghị chỉ sử dụng projectile-replace
.
Erefactor có một số lệnh Elisp khác mà bạn có thể thấy hữu ích. Một danh sách (không đầy đủ) có sẵn trong readme .
Nó không được mô tả trên trang GitHub nhưng erefactor
có sẵn trên MELPA ( M-x package-install RET erefactor
). Trang MELPA có thể được tìm thấy ở đây .