Vim không lấy ô làm ký tự từ


9

Khi tôi viết một văn bản tiếng Đức có chứa một cái gì đó như abücdví dụ và dwở phía trước, nó sẽ chỉ xóa abvì nó không diễn giải ünhư một ký tự từ.

Khi tôi chỉnh sửa reSturationuredText, tôi có

iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_

Điều đó giải thích tại sao các ô không được đánh dấu, nhưng tôi không hiểu nó đến từ đâu. Khi tôi chỉ mở gVim, nó được đặt thành

iskeyword=@,48-57,_,192-255

Điều này có thể đến từ đâu?


3
Đặt set encoding=utf-8trong của bạn .vimrc.
cuonglm

Điều đó đã có trong tôi .vim/vimrc:set enc?mang lại cho tôi utf-8. Tương tự với fenc. Tuy nhiên, nó không hoạt động.
Martin Uting 6/11/2015

Sau khi :set iskeyword&được üvẫn không được coi là một phần của một từ?
ryuichiro 7/11/2015

Hiển thị dưới dạng từ khóa của bạn ( set iskeyword). Nó nên là một cái gì đó như "@,48-57,_,128-167,224-235"hoặc "@,48-57,_,192-255". Bạn đang sử dụng Vim hay Vi? (giá trị mặc định trong Vi ( "@,48-57,_") không nhận ra ü; giá trị mặc định trong Vim vẫn ổn)
JJoao

1
Tôi sử dụng gVim và có iskeyword=@,48-57,_,192-255. Nó hoạt động kỳ diệu trong một ví dụ Vim mới. Điều đó thật kỳ lạ, tôi phải quan sát điều đó cẩn thận hơn.
Martin Uting 7/11/2015

Câu trả lời:


5

@tự trong iskeywordbao gồm tất cả các ký tự mà isalpha()(hàm C) là TRUE; trong các triển khai libc hiện đại (20 năm qua), điều này cũng tìm kiếm các ký tự unicode.

Lần iskeywordsử dụng thứ hai của bạn 97-122(az) và 64-90(AZ), không bao gồm tất cả các biến thể với các dấu phụ khác nhau (chẳng hạn như umlaut / diaeresis / trema).

Vì vậy, giải pháp là thay thế 97-12264-90với @.

Funky iskeywordnày đến từ tệp cú pháp LISP; các rsttập tin cú pháp bao gồm một loạt các tập tin cú pháp khác để làm nổi bật các khối mã.

May mắn thay, bạn có thể đặt ngôn ngữ để bao gồm với g:rst_syntax_code_listbiến. Mặc định là:

let g:rst_syntax_code_list = ['vim', 'java', 'cpp', 'lisp', 'php', 'python', 'perl']

Vì không chắc là bạn cần tô sáng cú pháp LISP trong tệp reSturationuredText của mình, nên bạn có thể chỉ cần xóa nó. Chỉ cần thêm nó vào bất cứ đâu trong tệp vimrc của bạn, nếu được xác định, tệp cú pháp sẽ sử dụng giá trị đó thay vì xác định chính nó.

Theo tôi, có lẽ bạn muốn sử dụng:

let g:rst_syntax_code_list = []

Bởi vì ai biết được những tác dụng phụ thú vị nào mà các tệp cú pháp khác gây ra ...


Thật tuyệt, cảm ơn bạn! Điều này đã không xảy ra với tôi trên Ubuntu cho đến nay, nó chỉ xảy ra ở đây trên Fedora 22. Có lẽ các tệp cú pháp của họ hơi khác một chút. Nó hoạt dộng bây giờ.
Martin Uting

Gợi ý với cách viết @cho các ký tự chữ và số thực sự hữu ích.
Zelphir Kaltstahl

1

Nếu một trong số các ngữ pháp từ các ngôn ngữ khác trong các tệp đánh dấu ví dụ, thì cài đặt của các ngôn ngữ đó dường như ghi đè cài đặt cho cú pháp đánh dấu. Người ta có thể kiểm tra nếu đó là trường hợp sử dụng:

:verbose set iskeyword?

Để khắc phục điều này, người ta có thể xác định lệnh tự động được chạy mỗi khi nhập vào tệp đánh dấu (và có thể cả các ngôn ngữ khác):

autocmd BufEnter,BufNewFile *.md set iskeyword=38,42,43,45,47-58,60-62,_,@

Đặt điều này trong tôi đã .vimrckhắc phục vấn đề cho tôi. Tôi đã sử dụng vim-pandoccú pháp và ngôn ngữ inlined bao gồm racket, python, shvà một số. Tôi nghĩ rằng không cần thiết phải xác định lệnh tự động để rời khỏi các tệp đánh dấu, bởi vì khi bạn nhập các tệp của các ngôn ngữ khác, các tệp cú pháp của chúng sẽ đặt từ khóa của chúng, nếu tôi hiểu chính xác.

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.