Làm cách nào tôi có thể sử dụng kiểm tra chính tả của Vim với 'trích dẫn thông minh'


11

Có dấu ngoặc kép "bình thường":
'"

Và bạn có những "trích dẫn thông minh" đầy góc cạnh:
''

Kiểm tra chính tả của Vim hoạt động với các trích dẫn "thẳng", nhưng không phải là trích dẫn thiên thần, vì vậy điều này được coi là "sai":
Đó là ... Monty Python

Mặc dù không phải vậy.

Ảnh chụp màn hình, trong trường hợp phông chữ của bạn không hiển thị sự khác biệt:

nhập mô tả hình ảnh ở đây

Làm thế nào để tôi sửa lỗi này? Tôi muốn làm cho nó hoạt động cho cả hai biến thể (nó và nó).

Câu trả lời:


7
$ grep "'" /usr/share/dict/words | wc -l
26226
$ grep -i python /usr/share/dict/words
Python
Python's
python
python's
pythons

Vấn đề là tất cả những từ có dấu nháy đơn này thực sự có trong tệp từ điển của bạn. Vì vậy, nếu bạn ổn với việc sửa đổi từ điển chính tả vim của bạn, thì hãy làm như vậy:

$ grep "'" /usr/share/dict/words | sed "s/'/’/g" >> ~/.vim/spell/en.utf-8.add

Điều này sẽ

  • grepđể tìm tất cả các từ trong từ điển hệ thống của bạn có dấu nháy đơn ( ');
  • sedđể thay đổi các trích dẫn thẳng thành trích dẫn thông minh (đó là s/'/’/g, trong đó trích dẫn đầu tiên là thẳng và thứ hai là thông minh); và
  • nối nó vào từ điển ngôn ngữ của bạn (thay thế bằng bất cứ ngôn ngữ nào của bạn).

Bạn sẽ cần biên dịch lại .spltệp này thành một tệp mà bạn có thể thực hiện từ Vim:

:mkspell! ~/.vim/spell/en.utf-8.add

Nếu bạn muốn sử dụng các tệp chính tả thực tế mà Vim sử dụng làm nơi bắt đầu (thay vì từ điển hệ thống của bạn), bạn có thể sử dụng :spelldumplệnh. Đầu ra sẽ bao gồm tất cả các từ mà Vim sử dụng cho hiện tại spelllang, bao gồm cả những từ đã được thêm từ .addtệp. Lưu kết quả của :spelldumpmột tệp và xóa hai dòng đầu tiên (thông tin tiêu đề), sau đó sử dụng các lệnh tương tự như trên. Bạn cũng có thể muốn chuyển nó qua uniq, để loại bỏ các mục trùng lặp. (Không cần sort; đầu ra của :spelldumpđã được sắp xếp.)


Tại sao bạn sử dụng 'snhư một mô hình? Không phải chỉ là tìm kiếm 'chính xác, asl tốt? Điều này sẽ bỏ lỡ những từ mà có ' ở một vị trí khác nhau (ví dụ như you'd, you've, vv)
Martin Tournoij

Đúng, bạn đúng. Tôi đã chỉnh sửa câu trả lời của mình.
wchargein

Cảm ơn :-) Tôi không chắc chắn nếu bạn làm điều đó với một lý do, vì vậy đã do dự để tự chỉnh sửa nó ...
Martin Tournoij

Nếu bạn chọn đi theo :mkspell!tuyến đường, bạn cũng có thể muốn lọc ra các từ dành cho các khu vực không liên quan.
Aaron Massey

1

Đến bây giờ, bạn chỉ cần tải xuống và biên dịch một tệp chính tả mới cho VIM. Các trích dẫn Unicode đã được thêm vào phiên bản hiện tại của từ điển tiếng Anh.

Các bước, dựa trên bài viết này :

  1. Tạo thư mục ~/.vim/spellvà thay đổi nó. (Đường dẫn là một phần của VIM runtimepath.)

  2. Đối với ngôn ngữ tiếng Anh, từ điển có thể được tải xuống ở đây . (Ngoài ra: từ repo LibreScript - bạn cần cả hai .dic.afftệp.)

    NB Để có kết quả tốt hơn, tôi khuyên bạn nên nhận cả en_US và en_GB. Từ điển en_GB có thể được tìm thấy trong repo LibreScript.

  3. Giải nén tệp:

    unzip -x hunspell-en_US-2017.01.22.zip
    

    Các kho lưu trữ ít nhất phải chứa các tệp này: en_US.affen_US.dic.

  4. Bắt đầu VIM (trong ~/.vim/spellthư mục) và trong VIM thực hiện lệnh::mkspell! en en_US

    Hoặc nếu bạn cũng đã tải xuống tệp en_GB: :mkspell! en en_US en_GB

  5. Thoát VIM và kiểm tra các tệp trong thư mục hiện tại. Cần có tập tin en.utf-8.splđược tạo.

  6. Làm xong!

Bây giờ, sau khi bạn bắt đầu VIM và kích hoạt kiểm tra chính tả cho ngôn ngữ tiếng Anh, trước tiên, bạn nên chọn .spltệp mới được tạo từ ~/.vim/spellđó có hỗ trợ cho các trích dẫn Unicode. Ít nhất đó là cách nó làm việc cho tôi.

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.