Çok büyük sayıların komutların önekini kullanmasını nasıl önleyebilirim (veya en azından onaylamanız istenir)?


9

Düşündüğünüz kadar sık ​​olmaz, ama bazen olur ve benim bir kedim bile yok.

Temel olarak, sayı satırını veya sayısal tuş takımını ezip sonra tekrarlanabilir bir komutu tetikleyen bir tuş takımına basarsanız, Vim'e yanlışlıkla birkaç bin, milyon hatta milyar kez bir görev gerçekleştirmesi için komut vermek mümkündür. Bu kolayca kontrolden çıkar ve veri kaybına neden olabilir.

Bu yüzden bir tür yapılandırma veya kaynak kodunda bu tür DoS'yi önlemek için bir sağlık kontrolü olarak hizmet etmek üzere değiştirebileceğimiz bir şey olup olmadığını merak ediyorum.


4
Sorunuzu anladığımdan emin olmak için: düzenli olarak yanlışlıkla bir sıra yazıyor 144477@@veya 99999.sayı çok büyük olduğunda bu yürütmeleri durdurmak mı istiyorsunuz? Haklı mıyım? (Sormak zorundayım çünkü bu bana biraz garip geliyor, bu problemi hiç yaşamadım)
statox

3
Neden… ne yaptığınıza dikkat etmiyorsunuz?
romainl

3
@statox evet, bu doğru. romainl'in de geçerli bir noktası var, ancak soru ile ilgisiz görünüyor. Soru kalır ve diğer sorular kadar "ciddi" olmayabilir, ancak yine de bir sorudur. Yanlışlıkla hizmet reddini önlemek için bu konuda bir üst sınır belirleyebilmenin mantıklı olduğunu düşünüyorum. Dengesizliklerle ilgili öneriye gelince, evet, bu taşma tamponu da geri alırsa ilgili olabilir, ben de düşünmemiştim. (Çok iyi olmayan bir örnek -% 60'lık bir klavyem var, üst kenarlık sırası sayılar.
Steven Lu

4
set showcmdSağ alt köşeye yazdığınız tuşları göstermek için kullanabilirsiniz .
Martin Tournoij

1
@Carpetsmoker Sanırım ekranda göründüğü için bir "onay istemi" olarak nitelendirilir. Bir cevap olarak eklemenizi tavsiye ederim (muhtemelen varsayılan bir seçenek olarak nasıl ekleneceği ile birlikte .vimrc, bu yüzden cevap tamamen kendi kendine
Wildcard

Yanıtlar:


2

Genellikle bir SIGINT ( Ctrl+C) göndererek tekrarlama işlemini kesintiye uğratabildiğinizi görüyorum . Bazı vimscript gerçekten uzun bir iç döngü çalıştırmadığı sürece DoS sorunu yoktur.

Bkz burada girilen numara ile ilgili olarak döngüler bir fonksiyon da ihtiva edebilirler bir eklenti bir örnek için.

Hemen hemen tüm niyet ve amaçlar için, bu konu varsayımsal bir konudur.


4
“bu konu varsayımsal bir konudur” ... Hayır, değil. 2G bağlantıları üzerinden telefonumda SSH üzerinde çalışmak zorunda kaldım, burada yanlışlıkla bir tuş vuruşunu kaçırdım veya beklerken yazarken birden fazla tuş vuruşu yaptım ve çok benzer durumlara neden oldum (belki 99999 değil, daha küçük sayılar evet).
muru

Harika, evet yavaş bir terminal emülatörü (vim uyguladığı değişiklik miktarına bağlı olarak) istemci tarafında işleme gecikmesi ekleyerek sorunları daha da kötüleştirebilir. Ctrl + C'ye çabucak gitmelisin!
Steven Lu

1
Sadece kullanabilirsiniz <Esc>, kullanmanıza gerek yok <C-c>. Aradaki fark, <C-c>Vim'in yaptığı her şeyi (örneğin bir işlevi çalıştırmak gibi) durdurması ve <Esc>yapmamasıdır. Bir <C-c>şeyi "öldürmek" istemedikçe neredeyse hiç kullanmak istemezsiniz.
Martin Tournoij
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.