2011-09-26 42 views
7

Tôi có tệp UTF-8 chứa một số ký tự Unicode như LEFT-TO-RIGHT OVERRIDE (U + 202D) mà tôi muốn xóa khỏi tệp. Trong Emacs, chúng được ẩn đi (mặc định là hành vi đúng?) Theo mặc định. Làm cách nào để tôi có thể hiển thị các ký tự unicode "kỳ lạ" (trong khi không thay đổi hiển thị các ký tự unicode "thông thường" như tiếng Nga)? Và làm thế nào để thay thế chúng sau đó (ví dụ: replace-string. C-X 8 Ret không hoạt động cho isearch/replace-string).Đánh dấu và thay thế các ký tự unicode không in được trong Emacs

Trong Vim, khá dễ dàng: Các ký tự này được hiển thị với biểu diễn hex của chúng theo mặc định (đây có phải là lỗi hoặc thiếu tính năng không?) Và bạn có thể dễ dàng xóa chúng với ví dụ :%s/\%u202d//g. Điều này có thể xảy ra với Emacs?

Trả lời

9

Bạn có thể làm M-x find-file-literally thì bạn sẽ thấy các ký tự này.

Sau đó, bạn có thể loại bỏ chúng bằng cách sử thông thường string-replace

+1

Tôi nhận được kết quả tương tự cho các ký tự với 'bật-bật-nhiều byte-ký tự', nhưng vấn đề là, rằng tôi không muốn thấy tất cả, chỉ là những" kỳ lạ ". Tuy nhiên, tôi không biết cách thay thế chúng (tôi không thể nhập chúng vào chuỗi thay thế). – Christian

4

Làm thế nào về điều này:

Đặt nhân vật U + 202d bạn muốn kết hợp ở phía trên cùng của vòng kill bằng cách gõ M:(kill-new "\u202d"). Sau đó, bạn có thể giật chuỗi đó vào các lệnh tìm kiếm khác nhau, với C-y (ví dụ: query-replace) hoặc M-y (ví dụ: isearch-forward).

(Edited để thêm :)

Bạn cũng có thể chỉ cần gọi lệnh không tương tác, mà không trình bày những khó khăn bàn phím đầu vào tương tự như các cuộc gọi tương tác. Ví dụ, gõ M: và sau đó:

(replace-string "\u202d" "") 

này có phần tương tự như phiên bản Vim của bạn. Một điểm khác biệt là nó chỉ thực hiện các thay thế từ vị trí con trỏ đến cuối tệp (hoặc vùng bị thu hẹp), vì vậy bạn cần đi tới đầu tệp (hoặc vùng bị thu hẹp) trước khi chạy lệnh để thay thế tất cả kết quả phù hợp.

+1

Tác phẩm này, cảm ơn bạn. Nhưng nó rất bất tiện, đặc biệt là kể từ khi các nhân vật được tìm thấy (trong tìm kiếm hoặc thay thế) sẽ không được đánh dấu. Có lẽ có một số khả năng khác .. – Christian

Các vấn đề liên quan