Vim, kelime karakterleri olarak ek yerleri almaz


9

abücdÖrneğin ve dwöndeki gibi bir şey içeren bir Almanca metin yazdığımda , yalnızca kelime karakteri olarak abyorumlanmadığı için silinecektir ü.

ReStructuredText'i düzenlediğimde,

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

Bu, umlautların neden işaretlenmediğini açıklıyor, ancak bunun nereden geldiğini anlamıyorum. Sadece gVim'i açtığımda bu

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

Bu nereden geliyor olabilir?


3
Put set encoding=utf-8Sepetinde .vimrc.
cuonglm

Bu zaten benim içimde .vim/vimrcve :set enc?bana veriyor utf-8. İle aynı fenc. Yine de çalışmıyor.
Martin Ueding

Sonra :set iskeyword&olduğu ühala bir kelimenin bir parçası olarak tanınmayan?
ryuichiro

Anahtar kelimeniz olarak gösterin ( set iskeyword). "@,48-57,_,128-167,224-235"Veya gibi bir şey olmalı "@,48-57,_,192-255". Vim veya Vi mu kullanıyorsunuz? (Vi ( "@,48-57,_") içindeki varsayılan değer ü tanımıyor;
Vim'deki

1
GVim kullanıyorum ve var iskeyword=@,48-57,_,192-255. Şimdi sihirli bir şekilde yeni bir Vim örneğinde çalışıyor. Bu garip, bunu daha dikkatli gözlemlemeliyim.
Martin Ueding

Yanıtlar:


5

İçindeki @karakter (C işlevi) TRUE iskeywordolan tüm karakterleri içerir isalpha(); modern (son 20 yıl) libc uygulamalarında bu aynı zamanda unicode karakterleri de arar.

İkinci iskeywordkullanımınız 97-122(az) ve 64-90(AZ) 'yi kullanır .

Yani çözüm değiştirmektir 97-122ve 64-90birlikte @.

Bu korkak iskeywordLISP sözdizimi dosyasından gelir; rstsözdizimi dosya kod blokları vurgulamak için diğer sözdizimi dosyaları bir demet içerir.

Neyse ki, g:rst_syntax_code_listdeğişkene hangi dillerin ekleneceğini ayarlayabilirsiniz . Varsayılan değer:

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

ReStructuredText dosyanızda LISP sözdizimi vurgulamasına ihtiyacınız olması olası olmadığından, muhtemelen kaldırabilirsiniz. Sadece vimrc dosyanızda herhangi bir yere ekleyin, eğer tanımlanmışsa, sözdizimi dosyası kendi değerini tanımlamak yerine bu değeri kullanır.

Bence, muhtemelen kullanmak istersiniz:

let g:rst_syntax_code_list = []

Kim diğer sözdizimi dosyalarının neden korkak yan etkilerini bilen çünkü ...


Oh, teşekkürler! Şimdiye kadar Ubuntu'da bu olmadı, sadece Fedora 22'de oldu. Muhtemelen sözdizimi dosyaları biraz farklı. Şu an çalışıyor.
Martin Ueding

@Alfasayısal karakterler için yapılan ipucu gerçekten yardımcı oldu.
Zelphir Kaltstahl

1

Örneğin, markdown dosyalarındaki diğer dillerden dilbilgisi satırları içeriyorsa, bu dillerin ayarları markdown sözdizimi ayarlarını geçersiz kılıyor gibi görünüyor. Bir durum kullanarak durum olup olmadığını kontrol edebilirsiniz:

:verbose set iskeyword?

Bunu düzeltmek için, bir işaretleme dosyasına her girdiğinde (ve muhtemelen diğer dillerde de) çalıştırılacak bir otomatik komut tanımlanabilir:

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

Bunu benim tarafıma koymak .vimrcsorunu benim için düzeltti. Ben kullanıyordum vim-pandocsözdizimi hem de satır içi diller de dahil olmak üzere racket, python, shve bazı. Markdown dosyalarını bırakmak için bir otomatik komut tanımlamak gerekli olmadığını düşünüyorum, çünkü diğer dillerdeki dosyaları girdiğinizde, sözdizimi dosyaları doğru anlarsam anahtar kelimelerini ayarlamalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.