Hoàn thành mờ khi chèn các ký tự Unicode


12

Tôi chỉ phát hiện ra C-x 8 RETmột cách để chèn các ký tự Unicode bằng tên Unicode hoặc mã hex. Tôi chưa (chưa?) Ghi nhớ tất cả các tên ký tự Unicode, vì vậy tôi không luôn tìm đúng ký tự.

Ví dụ, có nhân vật "SNOW CAPPED MOUNTAIN". Nếu tôi gõ chỉ "MOUNTAIN" thì ký tự này sẽ không xuất hiện danh sách hoàn thành. Tôi cần nhớ tìm kiếm "SNOW" để xem nhân vật cụ thể này trong danh sách hoàn thành.

Là một người đã trở nên phụ thuộc vào IDO cho bất cứ điều gì liên quan đến việc hoàn thành, sự thiếu linh hoạt này là khá đáng ngại. Tôi sử dụng ido-ubiquitous-mode.

Làm cách nào tôi có thể sử dụng kết hợp giống như IDO cho đầu vào Unicode? Làm thế nào tôi có thể sử dụng hoàn thành linh hoạt cho TẤT CẢ NHỮNG ĐIỀU ?

(Tôi sẽ ổn khi từ bỏ chế độ IDO nếu có thứ gì đó tốt hơn.)


Như một cách giải quyết cho cùng một vấn đề, tôi sẽ gõ C-q SPC mountain TAB. Điều đó sẽ khớp với bất kỳ tên nhân vật nào với "ngọn núi" là từ đầu tiên.
Legoscia

1
Có một cái nhìn tại emacs.stackexchange.com/a/3139/2094 để hoàn thành dựa trên helm.
abo-abo

1
Hmm, điều này có vẻ như là một lỗi bạn có thể báo cáo tại trình theo dõi vấn đề của dự án .
wasamasa

1
Nếu bạn gõ *cap*mou TAB, sau đó bạn nhận được toàn bộ (s).
Juancho

@Juancho điều đó đúng, nhưng đó không phải là hành vi tôi muốn
rekado

Câu trả lời:


8

Như @wasamasa đề xuất, ido-ubiquitousnên chăm sóc hoàn thành khi insert-charđược sử dụng. Có một báo cáo lỗi đã bị đóng vào năm 2013 , nhưng tôi vẫn thấy hành vi này với Emacs 24.4 và ido-ubiquitousphiên bản 20140904.1547, vì vậy tôi đã nộp một báo cáo lỗi khác .

BIÊN TẬP:

Người duy trì ido-ubiquitousđã viết này:

Ok, tôi đã tìm ra vấn đề. Có rất nhiều ký tự unicode, vì vậy danh sách hoàn thành đang vượt quá ido-ubiquitous-max-itemsido-ubiquitoustự vô hiệu hóa vì lý do đó. Trên hệ thống của tôi, có gần 40k hoàn thành có sẵn và mặc định ido-ubiquitous-max-itemslà 30k. Đặt nó thành 50k cho phép tôi idohoàn thành insert-char. Vì vậy, hãy thử tùy chỉnh đó.

Thật vậy, (setq ido-ubiquitous-max-items 50000)sửa nó.


Đối với ido-completing-read+, sử dụng (setq ido-cr+-max-items 50000)để sửa lỗi này.
Bạch Liên

5

Để được snow capped mountainbao gồm khi bạn chỉ cần gõ mount, bạn có thể muốn làm:

(push '(unicode-name (styles substring)) completion-category-overrides)

Trên thực tế, có lẽ substringkiểu này nên được bật theo mặc định cho tên unicode, giống như kiểu tên đệm. Có lẽ bạn nên vận động hành lang cho nó thông qua M-x report-emacs-bug.


3

Nếu bạn sử dụng Icicles thì C-x 8 RETcho phép bạn sử dụng chuỗi con hoặc biểu thức chính quy hoặc kết hợp mờ trong khi hoàn thành. Và bạn có thể sử dụng hoàn thành lũy tiến , để phù hợp với nhiều mẫu (ví dụ đơn giản).

Ngoài ra, nếu tùy chọn icicle-read-char-by-name-multi-completion-flaglà không nil, theo mặc định, thì bạn có thể sử dụng đa hoàn thành để khớp với bất kỳ kết hợp nào trong số này:

  • tên Unicode
  • điểm mã Unicode , dưới dạng số thập lục phân
  • chính tự (như nó xuất hiện trong văn bản, không phải là số nguyên)

Các ứng cử viên hoàn thành mà bạn thấy trong bộ đệm *Completions*chứa tất cả các thành phần này - WYSIWYG.

Tại sao bạn có thể muốn phù hợp với chính nhân vật ? Để xem các điểm mã Unicode và tên ký tự tương ứng, bao gồm mọi tên cũ. Ví dụ, đối với nhân vật ` (giọng trầm trọng), bạn có được hai ứng cử viên hoàn thành này:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `

Tôi nghĩ rằng tôi thực sự nên thử Icicles một ngày. Cảm ơn câu trả lời của bạn.
rekado

0

Bạn có thể sử dụng lệnh apropos-chartrong thư viện apu.elđể hiển thị tất cả các ký tự Unicode có tên khớp với biểu thức chính quy hoặc danh sách các từ bạn nhập. Theo mặc định, các từ được khớp như các chuỗi con.

Trong danh sách các trận đấu, bạn có thể nhấn ^để chèn char hiển thị trên dòng hiện tại vào bộ đệm nơi bạn đã gọi apropos-char, tại điểm. Hoặc bạn có thể nhấn C-yđể sao chép char đó vào vòng kill (hoặc M-ysao chép nó vào vùng chọn thứ cấp ). (Nhấn RETđể xem thêm thông tin về char.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.