vim: Dastlabki tanishuv

vim: Dastlabki tanishuv

Bugundan boshlab vim haqida seriyali maqolalar ketma-ketligi joylab boriladi. Maqolani boshlashdan oldin ananaga muvofiq tarixga bir nazar tashalaymiz. vim avvaldan mavjud bo’lgan vining davomchisi ya’ni rivojlangan versiyasi sifatida ishlab chiqilgan umuman olganda vim vining ustiga qurilgan deyish mumkin. Vimning muallifi Bram Molenar u haqida qiziqqanlar uchun wikipediada batafsil maʼlumot bor. Maqolani yozish davomida bildim u vafot etgan va o’lim sababi qilib tez rivojlanuvchi kasallik keltirilgan. Ammo loyiha yakunlangani yo’q, loyihani Kristian Brabandt davom ettiradi.

Nega vimni o’rganish kerak?

vim vs vscode

Hozirgi kunda ko’plab multi qulayliklarga ega bo’lgan zamonaviy IDElar mavjud bo’lgan bir vaqtda nega tarix sirqiti bo’lgan vimni o’rganish uchun vaqt sarflashimiz kerak? Deb berilgan kecha chiqgan mutaxassislar savoliga javob oddiy, vim bu erkinlik! Oxirgi vaqtlar task managerda ortiqcha process ko’rsam asabim buziladigan bo’lib qolgan. Hozirgi mavjud bo’lgan IDElar naqt processlar galereyasini yaratadi. Umuman olganda vimni o’rganishdan birinchi maqsad shaxsan o’zimdan kelib chiqib aytsam butun boshli IDElarni shunchaki ahlat qutisiga otish bo’lgan. Demak vimni o’rganishga quyidagi sabablar bor:

  1. ortiqcha vazndan qutilish;
  2. entuziazm;
  3. vim linux kernel uchun default app;
  4. qulaylik 😉 (albatta hazil)

use vim!

Hullas vimni o’rganmaslik uchun sababdan, o’rganishlik uchun sabab ko’proq! Demak davom etish kerak.

Dastlabki ma’lumotlar

Vim xech qachon mavjud faylning o’zi bilan to’g’ridan-to’g’ri ishlamaydi uning o’rniga data bufferlardan foydalanadi ya’ni vaqtinchalik ma’lumotlarni RAMda saqlab turadi. Umuman vim quyidagi keltirilgan loop bo’yicha fayllar bilan ishlaydi.

  • bufferdan bo’lajak fayl uchun joy oladi;
  • bufferdagi ma’lumotni avvaldan mavjud bo’lgan yoki yangi yaratilishi kutilayotgan fayl ustiga yozadi;
  • bufferdagi ma’lumotni avvldan mavjud bo’lgan yoki yangi yaratilishi kutilayotgan fayl ustiga yozmasdan shunchaki bufferni tozalab dasturni yopadi;

vimda fayllarning hayotiy tsikli

vimda ikkita rejim bor (men aynan vim haqida gapirdim neovim boshqa mavzu) buyruqlar rejimi va kiritish rejimi. Nomidan ko’rinib turibdi buyruqlar rejimi buyruqlarni qabul qilish uchun ishlatiladi va o’z navbatida buyruqlar rejimi ikkiga native buyruqlar va ex buyruqlarga bo’linadi. Native buyruqlar matn bo’ylab harakatlanish uchun javobgar bo’lsa ex buyruqlar asosan buffer bilan ishlashda yoki matn ustida murakkab amallarni bajarishda ishlatiladi. Batafsilroq tushinish uchun quyidagi jadvalni ko’rib chiqing.

kiritish rejimi matn kiritishni boshlash uchun rejim
native buyruqlar rejimi matn ustidagi harakatlar, buyruqlar rejimidan kiritish rejimiga o’tish, so’ralgan qator bo’ylab sakrash, so’zlar bo’ylab sakrash
ex buyruqlar rejimi buffer ma’lumotlarini faylga yozish, butun fayl bo’ylab qidirish, dasturdan chiqib ketish

Ko’p holatlarda native buyruqlar, buyruqlar rejimidan kiritish rejimiga o’tkazib yuboradi. (istisnolar mavjud) Native buyruqlar ijrosi uchun Enter tugmasi bosilishi shart emas bo’lsa ex buyruqlar ijrosi uchun Enter bosilishi kerak. Umuman olgdan ex buyruqlar bu vimning tagida yotgan exga tegishli buyruqlar, kim sezgan bo’lsa vim ex uchun vizual ko’rinish. Avval aytganimizdek vimda asosiy ikkita rejim bor kiritish rejimi va buyruqlar rejimi, demak vimni ishga tushiramiz, vim argument sifatida mavjud matnli faylni qabul qilish yoki shunchaki bufferdan joy olib o’zi ochilishi mumkin. Demak bizga bugungi darsdan quyidagi hot keyslar qoladi.

Buyruq Turi Vazifasi
:q ex dasturdan chiqib ketish;
:q! ex dasturdan bufferdagi yangilanishlarni e’tiborga olmasdan chiqib ketish;
:w ex bufferdagi ma’lumotlarni faylga yozish;
:w! ex bufferdagi ma’lumotlarni mavjud fayl tarkibi sifatida yozish;
:pre ex bufferdagi ma’lumotlarni reserved qilish;
i native kiritish rejimiga o’tish; (cursor turgan joy bo’ylab)
I native kiritish rejimiga o’tish; (qator boshidan boshlab)
a native cursordan bitta keyindan boshlab kirtish rejimiga o’tish;
A native qator oxiridan boshlab kiritish rejimiga o’tish;
o native yangi qatordan boshlab kirtish rejimiga o’tish;
O native cursor turgan qatordan yangi qator ochish va kirtish rejimiga o’tish; (avvalgi qatorlar pastgi qatorga o’tkaziladi)

Shuningdek h, j, k, l yoki ←↑→↓ orqali cursorni matn bo’ylab harakatlantirish mumkin. Nega aynan avval arrowlar o’rniga h, j, k, l harflari foydalanilgani keng tarix shuning uchun bunga to’xtalib o’tirmayman lekin bu juda qiziq tarix. (albatta o’qib ko’ring) Demak biz endi vimda matnni tahrirlash va uni saqlashni bilamiz ammo bu vimning jami imkoniyatlari emas keyingi darslarda copy/paste/cut kabi funksiyalarni ko’rib chiqamiz.

Bonus: native buyruqlar argument sifatida raqamlarni qabul qilish mumkin misol uchun 2j yoki 2↓ cursorni ikkinchi qatorga sakratadi. Shuningdek ex buyruqlardan ham ketma-ket foydalanish mumkin, :wq — bir vaqtning o’zida bufferni faylga yozib dasturdan chiqib ketadi.

Lirik chekinish: Saytga kirib kelib WinStyle nikini ko’rdim va birdan esimga o’sha ko’pchilikni hayotida ajralmas bo’lib qolgan UzMob esimga tushdi. Shuncha qish, shuncha bahor o’tibdi. Umr o’tmoqda do’stlar, umr …

DevOps
vim: Dastlabki tanishuv