Cách giải quyết đơn giản nhất: sử dụng ciW
để chọn một từ được phân tách bằng khoảng trắng.
Vấn đề lớn hơn liên quan đến giá trị của _
ký tự trong bảng cú pháp . Vấn đề là _
theo mặc định, một thành phần biểu tượng trong bảng cú pháp và bạn muốn coi nó như một thành phần từ.
Nếu bạn đang sử dụng emacs 24.4, bạn có thể thử bật superword-mode
. Tôi đã không thử bản thân mình, vì vậy số dặm của bạn có thể thay đổi.
Một cách khác chỉ đơn giản là tự sửa đổi bảng cú pháp và nói với Emacs bạn muốn nó xử lý _
ký tự như một thành phần từ, như vậy:
(modify-syntax-entry ?_ "w")
Sau khi bạn làm điều đó, ciw
làm việc như bạn muốn, như vậy nó sẽ chọn tất cả abc_def_ghi
thay vì chỉ def
.
Tuy nhiên, làm theo cách này có thể là quá mức cần thiết, đặc biệt nếu bạn chỉ muốn _
tính là một phần của từ cho đối tượng văn bản. Thay vào đó, bạn có thể tư vấn evil-inner-word
như sau:
(defadvice evil-inner-word (around underscore-as-word activate)
(let ((table (copy-syntax-table (syntax-table))))
(modify-syntax-entry ?_ "w" table)
(with-syntax-table table
ad-do-it)))
Bây giờ, _
vẫn là một thành phần biểu tượng cho tất cả mọi thứ trừ đối tượng văn bản từ bên trong, vì vậy ciw
sẽ làm chính xác những gì bạn muốn mà không cần chạm vào chức năng của bất cứ điều gì khác.
Bạn có thể đọc thêm về sửa đổi các bảng cú pháp trên nút EmacsWiki .
w
,aw
, vv), bạn có thể làm tương tự với các chức năng sau quá:evil-forward-word-begin
,evil-forward-word-end
,evil-backward-word-begin
,evil-backward-word-end
,evil-a-word
,evil-inner-word
. Lưu ý: bạn cần thay đổiunderscore-as-word
thành các giá trị khác nhau, duy nhất (tùy ý).