Debian tarqatmalari uchun takrorlanadigan paketlar talabi kuchaymoqda
Debian hamjamiyati takrorlanadigan paketlar (reproducible builds)ni majburiy qilishni ko'rib chiqmoqda – bu xavfsizlik, ishonchlilik va sifatni oshiradi.

Vi muharriri 1970‑yillarning oxirida Bill Joy tomonidan yaratilgan bo‘lib, dasturchilar orasida tezkor matn tahriri uchun standartga aylandi. Ammo uning u buyrug‘i faqat bitta darajali "undo" (orqaga qaytarish) imkonini berardi – bu zamonaviy foydalanuvchilar uchun qiyin bo‘lishi mumkin. Quyida biz bu funksiyaning rivojlanishini, turli klonlarda qanday amalga oshirilganini va eng qulay yechimni ko‘rib chiqamiz.
POSIX va Single Unix Specification vi‑ni standartga kiritganda, u buyrug‘ini "oxirgi buyrug‘ tomonidan kiritilgan o‘zgarishlarni, shu jumladan oldingi undo ni ham, bekor qilish" deb belgiladi. Bu talaba eski vi‑ning bir darajali undo mexanizmini saqlashga yo‘naltiradi. Standartga rioya qilishni tanlagan nvi, OpenBSD vi va boshqa ba’zi klonlar shu usulni saqlab qoladi.
Vim (Vi IMproved) POSIX talabini e’tiborsiz qoldiradi va ko‘p darajali undo/redo tizimini joriy qiladi. u buyrug‘i faqat bekor qilish uchun, lekin bir necha marta takrorlansa, bir nechta o‘zgarishlarni orqaga qaytaradi. Redo uchun Ctrl‑r ishlatiladi – bu ham ko‘p darajali. Bundan tashqari, u va Ctrl‑r buyrug‘lariga son (masalan, 10u) berish orqali bir vaqtning o‘zida 10 ta o‘zgarishni bekor yoki tiklash mumkin.
nvi POSIX talabini saqlab qoladi, ammo ko‘p darajali undo imkoniyatini u.. kabi ketma‑ketik . (dot) buyrug‘i orqali beradi. Masalan, u.. uchta oxirgi o‘zgarishni bekor qiladi. Biroq, bu usulda bir vaqtning o‘zida bir nechta undo bajarish uchun maxsus hisoblagich (count) qo‘llab‑quvvatlanmaydi, shuning uchun foydalanuvchi har bir u yoki . ni alohida bosishi kerak. Shuningdek, undo yoki redo jarayonida kursorni harakatlantirish ba’zan ketma‑ketikni buzadi.
Emacs uchun vi‑emulator Evil ham GNU Emacs’ning ko‘p darajali undo tizimini meros qilib oladi. Unda u va Ctrl‑r buyrug‘lari mos ravishda undo va redo vazifasini bajaradi. Ammo Evil‑da undo ketma‑ketigiga kursor harakati aralashganda ba’zi noaniqliklar paydo bo‘lishi mumkin, bu esa vi yoki Vim bilan solishtirganda foydalanuvchi tajribasini pasaytiradi.
BusyBox‑ning minimal vi implementatsiyasi ham u buyrug‘ini qo‘llab‑quvvatlaydi, lekin ko‘p darajali undo faqat u ni takroriy chaqirish orqali amalga oshiriladi, redo esa umuman yo‘q. Bu kichik tizimlarda, masalan, yo‘qotish xavfi kam bo‘lgan embedded qurilmalarda, yetarli bo‘lishi mumkin.
Ko‘pgina foydalanuvchilar uchun Vim‑ning ko‘p darajali undo/redo tizimi eng insonparvar variant hisoblanadi. Undo va redo buyrug‘larini boshqa harakatlar (kursor harakati, qidiruv, yanking) bilan aralashtirish mumkin, bu esa matnni tahrir qilish jarayonini yanada erkin qiladi. nvi yoki Evil kabi usullar maxsus “undo rejimi”ga kirishni talab qiladi, bu esa tezkor tahrirda noqulaylik tug‘diradi.
Ctrl‑r bilan redo.u.. bilan ko‘p darajali, lekin cheklangan.Umuman olganda, zamonaviy dasturchilar va texnik yozuvchilar uchun Vim yoki uning klonlari (Neovim, etc.) eng maqbul tanlovdir. Ular POSIX talablari bilan mos kelmasligi mumkin, lekin foydalanuvchi qulayligi va samaradorlik nuqtai nazaridan afzallik beradi.