Çok sayıda vim yavaş çalışır mı?


18

Bu gerçekten sersem bir soru gibi görünüyor, ama içinde bin basamak uzunluğunda bir sayı olan bir Python dosyası var ve bu dosya çok yavaş çalışıyor gibi görünüyor, devam eden bir tür işlem olup olmadığından emin değilim farkında değilim.

Ben sıra yukarı basın jve çok acı verici ~ 1 saniye kesin bir duraklama var!

Ben sadece Python dosyasında bu var, başkalarında olmaz.

Numarayı sildikten sonra dosya tekrar normal çalışıyor ...

İşte sayı:

number=("""7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450""")

Gerçekten bir sayı bile değil, bu bir dize.


2
Burada onaylandı; dosya ise gerçekleşmez .txt. Bazı sözdizimi, regexp modelinin yoldan saptığını vurguluyor.
Mart'ta Rmano

Bu sözdizimi vurgulama ile ilgili olduğundan, basit geçici çözüm synmaxcolsınırlı sayıda (terminalinizin genişliği gibi) olarak ayarlamak olacaktır .
Slade

Yanıtlar:


23

Bunu syntax/python.vimVim 7.4.663 ile birlikte gelenlerle çoğaltabilirim.

Kullanılıyorsa :syntime, bunun aşağıdaki sözdizimi grubu / modeli nedeniyle olduğu görülüyor:

TOTAL      COUNT  MATCH   SLOWEST     AVERAGE   NAME               PATTERN
73.870736   20     0       3.940215    3.693537  pythonNumber       \%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>

Bu sorunu koruyucusuna bildirmelisiniz (adı ve e-posta adresi komut dosyasının başlığındadır).

Bu arada, başlangıçta bunu yeniden üretemedim, çünkü buradan alternatif bir sözdizimi komut dosyası kullanıyorum . Buna geçmek (gereksinimlerinize uygunsa) da geçerli bir çözüm olacaktır.


Düzenleme: Muhtemelen neden daha fazla bakarak, bu yeni NFA tabanlı normal ifade motorunun patolojik performans nedeniyle gibi görünüyor. İle :set regexpengine=1, bu büyük yavaşlamayı görmüyorum. Dolayısıyla, olası bir geçici çözüm / düzeltme sözdizimi eşleşmesi için eski motora geçmek olacaktır; bu \%#=1, desene (cp. :help NFA) ekleyerek yapılabilir .


@Ingo, daha önce hiç bir şey rapor etmedim ama bunu yaptığım için mutluyum. Ben sözdizimi dosyası var /usr/share/vim/vim74/syntax, üst geliştirici Neil Schemenauer <nas@python.ca>. Sana sorabilir miyim; bu yüzden sözdizimi dosyalarını orijinal olarak değiştirdiniz mi? Teşekkürler
baxx

Evet bu doğru; En son sürüm 2014 Temmuz 16'dan itibaren, bu yüzden hala korunuyor ve yazardan bir cevap alacaksınız. Zaten güzel bir tekrarlanabilir örnek içerdiğinden, sorunuzu ona yönlendirebilirsiniz.
Ingo Karkat

Alternatif Python sözdizimi bir şekilde bir şekilde buldum; Python dosyalarını nadiren düzenliyorum, bu yüzden bu kadar düşünmemiştim.
Ingo Karkat

teşekkürler @Ingo, sözdizimi dosyalarını değiştirdim ve artık çok yavaş değil. Korkarım regex motorları benim anlayışımın biraz ötesinde, geliştiriciye e-posta göndereceğim, herhangi bir test yapmaktan mutluluk duyuyorum.
Baxx
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.