Skip to content

Terminal matn muharrirlari: Nano va Vim

Serverda grafik interfeys ko‘pincha bo‘lmaydi. SSH orqali konfiguratsiyadagi bitta qiymatni tuzatish, cron yozuvini ko‘rish yoki vaqtinchalik fayl tayyorlash uchun terminal muharriri kerak bo‘ladi. Nano tez o‘rganiladi; Vimning modal ishlash usuli esa ko‘p fayl va takroriy tahrirda samaraliroq. Aslida qaysi muharrirni tanlashdan ham muhimrog‘i — bitta odat: tahrirdan oldin backup olish, so‘ng fayl mazmuni va faqat rejalashtirgan o‘zgarishni tekshirish.

Misollarni fayl va kataloglar maqolasidagi ~/lab test muhitida bajaring. $ promptini yozmang.

Tahrirdan oldingi xavfsiz ish oqimi

Muharrir sintaksisni bilmaydi: u noto‘g‘ri yozilgan Nginx direktivasini ham bemalol saqlab qo‘yaveradi. Shuning uchun avval laboratoriya faylini yarating:

mkdir -p ~/lab/editor
nano ~/lab/editor/app.conf

Nano ichida server_name=demo, port=8080 va mode=test qatorlarini alohida yozing. Ctrl+O, Enter, keyin Ctrl+X bilan saqlab chiqing. Shundan so‘ng tahrirdan oldingi nusxani oling:

cp -a ~/lab/editor/app.conf ~/lab/editor/app.conf.bak
ls -l ~/lab/editor/app.conf*

Tahrirdan keyin umumiy tekshiruv:

cat ~/lab/editor/app.conf.bak
cat ~/lab/editor/app.conf

Hozircha ikkala fayl mazmunini ketma-ket ko‘rib, qaysi qator o‘zgarganini o‘zingiz solishtiring. Farqni avtomatik topadigan vositalarni keyingi matn va qidiruv mavzularida o‘rganamiz. Muhim qoida esa o‘zgarmaydi: backup tahrirdan oldin olinadi, tahrirdan keyin faqat rejalashtirgan qatorlar o‘zgarganini tekshirasiz.

Warning

/etc ostidagi real konfiguratsiyani birinchi mashq sifatida tahrirlamang. VM snapshot va fayl backupisiz ishlamang. Rootga tegishli fayl uchun sudo kerak bo‘lishi mumkin, ammo yuqori huquq muharrirdagi xatodan himoya qilmaydi.

Nano: sodda va ko‘rsatmali muharrir

Ubuntu Serverda Nano o‘rnatilgan bo‘lsa, faylni quyidagicha oching:

nano ~/lab/editor/app.conf

Ekranning pastki ikki qatorida tezkor tugmalar ko‘rsatib turiladi. U yerdagi ^ belgisi Ctrlni, M- esa Meta tugmasini anglatadi; odatda Meta Alt bilan ishlaydi. Masalan, ^O — bu Ctrl+O; uni ^ va O belgilarini ketma-ket yozish deb tushunmang.

Kundalik Nano tugmalari

Amal Tugma
yordam Ctrl+G
qidirish Ctrl+W
keyingi moslik Alt+W
joriy faylga yozish Ctrl+O, so‘ng Enter
joriy qatorni kesish Ctrl+K
kesilgan matnni qo‘yish Ctrl+U
bekor qilish / qaytarish Alt+U / Alt+E
qator va ustunga o‘tish Alt+G
chiqish Ctrl+X

Ctrl+Odan keyin Nano fayl nomini tasdiqlashni so‘raydi. Nomni tasodifan o‘zgartirmaganingizga ishonch hosil qilib, Enter bosing. Agar saqlanmagan o‘zgarish bilan Ctrl+X bossangiz, Nano saqlashni so‘raydi: Y — ha, N — yo‘q, Ctrl+C — chiqishni bekor qilish.

Faylni qator raqamlari bilan ochish va aniq qatorga o‘tish:

nano -l +2,1 ~/lab/editor/app.conf

Bu faylni 2-qator, 1-ustunda ochadi. Parametrlar Nano versiyasiga qarab farq qilishi mumkin, shuning uchun o‘z tizimingizda nano --help va man nano bilan tekshirib oling.

Nano bilan kichik mashq

  1. port=8080ni port=9090ga o‘zgartiring.
  2. Ctrl+W bilan modeni toping.
  3. mode=testni mode=stagingga aylantiring.
  4. Ctrl+O, Enter, Ctrl+X orqali saqlab chiqing.
  5. Terminalda tekshiring:

    cat ~/lab/editor/app.conf
    

Vim: rejimlarga asoslangan muharrir

vi — POSIX muharriri an’anasi, vim esa uning kengaytirilgan varianti (Vi Improved). Ubuntuning minimal o‘rnatmasida vi o‘rnida soddaroq Vim yoki boshqa mos muharrir bo‘lishi mumkin. Avval nimasi borligini tekshiring:

command -V vi
command -V vim
vim --version

vim topilmasa, bu maqola uchun paket o‘rnatish shart emas: mavjud vini ishlating yoki Nano bilan davom eting. Paket boshqaruvi alohida mavzuda o‘tiladi.

vim ~/lab/editor/app.conf

Uch asosiy rejim

Vimdagi chalkashliklarning aksariyati aynan rejimni bilmaslikdan kelib chiqadi:

  • Normal rejim — yurish, o‘chirish, nusxalash va buyruqlar uchun; muharrir shu rejimda ochiladi.
  • Insert rejim — matn kiritish uchun; i, a, o kabi tugmalar bilan kiriladi.
  • Command-line rejim — saqlash, chiqish va sozlash uchun; Normal rejimdan : bilan boshlanadi.

Qaysi rejimda ekaningizga ishonchingiz bo‘lmasa, Esc bosing: u odatda sizni Normal rejimga qaytaradi. So‘ng kerakli amalni bajaring.

Normal --i/a/o--> Insert
Insert --Esc----> Normal
Normal --:------> Command-line --Enter/Esc--> Normal

Minimal Vim buyruqlari

Normal rejimda:

Amal Buyruq
chap, past, yuqori, o‘ng h, j, k, l
keyingi / oldingi so‘z w / b
qator boshi / oxiri 0 / $
insert / qator oxiridan insert i / A
pastda yangi qator o
qatorni o‘chirish dd
qatorni nusxalash va qo‘yish yy, keyin p
bekor qilish / qaytarish u / Ctrl+R
oldinga qidirish /matn, keyin Enter
keyingi / oldingi moslik n / N

Command-line rejimda:

  • :w — saqlash;
  • :q — o‘zgarish bo‘lmasa chiqish;
  • :wq — saqlab chiqish;
  • :q! — saqlanmagan o‘zgarishni tashlab chiqish;
  • :set number — qator raqamlarini yoqish;
  • :15 — 15-qatorga o‘tish;
  • :help :write:write haqida ichki yordam.

Note

:w! ruxsat muammosini sehrli tarzda hal qilib bermaydi. Faylga yozish uchun processda tegishli huquq bo‘lishi shart. Muharrirni boshidan sudo bilan ochish esa plugin va konfiguratsiyalarni root huquqida ishga tushirib yuborishi mumkin; productionda jamoaning tasdiqlangan usuliga amal qiling.

Vim bilan nazoratli tahrir

cp -a ~/lab/editor/app.conf.bak ~/lab/editor/vim.conf
vim ~/lab/editor/vim.conf

Muharrir ichida:

  1. /port va Enter bilan kerakli satrni toping.
  2. 0 bilan satr boshiga, w bilan qiymatga yaqinlashing.
  3. cw9090, so‘ng Esc bosing (cw so‘zni almashtirishni boshlaydi).
  4. :set number bilan qatorlarni ko‘ring.
  5. :wq bilan saqlab chiqing.

Tekshiruv:

cat ~/lab/editor/vim.conf
cat ~/lab/editor/app.conf.bak

Ikki natijani ko‘zdan kechirib, port qatoridan boshqa, rejalashtirilmagan qatorlar o‘zgarmaganiga ishonch hosil qiling.

Vimni xavfsiz o‘rganishning eng qulay yo‘li — vimtutor dasturi. U sizni nusxa fayl ustida mashq qildiradi:

vimtutor

Faqat o‘qish va parallel tahrir

Konfiguratsiyani tasodifan o‘zgartirib qo‘ymasdan ko‘rish uchun oldin o‘tilgan cat kichik faylda yetarli:

cat ~/lab/editor/app.conf

Vimda faqat o‘qish niyatini bildirish:

view ~/lab/editor/app.conf
# yoki
vim -R ~/lab/editor/app.conf

Bu mutlaq xavfsizlik chegarasi emas: ayrim holatlarda yozishni majburan amalga oshirish mumkin. Kichik faylni faqat ko‘rish uchun cat eng sodda tanlov; katta matnni sahifalab ko‘rishni keyingi maxsus maqolada o‘rganamiz.

Bir fayl boshqa sessiyada ochilgan bo‘lsa, Vim swap fayl haqida ogohlantirishi mumkin. Bu ogohlantirishni ko‘r-ko‘rona chetlab o‘tmang: boshqa terminalda shu fayl ochiq qolmaganini, shuningdek recovery kerakmi (vim -r <fayl>) degan savolni tekshiring. Eski swapni faqat faol sessiya yo‘qligiga va tiklanadigan o‘zgarish qolmaganiga ishonch hosil qilgach olib tashlash mumkin. Shubha bo‘lsa, faylni o‘zgartirmasdan chiqish xavfsizroq.

Production ssenariysi: konfiguratsiyadagi bitta qiymat

Muammo: service porti o‘zgarishi kerak. Haqiqiy service nomi va validatori dasturga bog‘liq, shuning uchun laboratoriyada umumiy oqimni bajaramiz.

  1. Holat va backup:

    config="$HOME/lab/editor/app.conf"
    ls -l "$config"
    cp -a -- "$config" "$config.before-port-change"
    cat "$config.before-port-change"
    
  2. Nano yoki Vimda faqat port qatorini tahrirlang.

  3. Backup va yangi faylni ketma-ket ko‘rib chiqing:

    cat "$config.before-port-change"
    cat "$config"
    
  4. port qiymati faqat raqamlardan iboratligini va boshqa qatorlar rejasiz o‘zgarmaganini tekshiring. Haqiqiy productionda servicega xos validator ishlatiladi; u tegishli service mavzusida alohida o‘rganiladi. Validatsiya muvaffaqiyatsiz tugasa, service’ni reload qilmang.

  5. Rollback:

    cp -a -- "$config.before-port-change" "$config"
    cat "$config"
    

Bu oqim muharrirdan mustaqil ishlaydi: backup va taqqoslash “nima o‘zgardi?”, validator “fayl qabul qilinadimi?”, service tekshiruvi esa “o‘zgarish ishladimi?” degan savolga javob beradi.

Ko‘p uchraydigan xatolar

  • Vimda matn yozolmay qolish: ehtimol Normal rejimdasiz; i bilan Insert rejimga o‘ting.
  • :q chiqarmasligi: saqlanmagan o‘zgarish bor; saqlab chiqish uchun :wq, ataylab tashlab chiqish uchun :q!.
  • Nano pastidagi ^Oni oddiy harflar deb yozish: bu aslida Ctrl+O tugmalar birikmasi.
  • faylni sudo bilan ochib, backup va validatsiyani unutish: huquqning oshishi xavfsiz ish oqimini almashtirmaydi.
  • tahrirdan keyin faqat fayl ochilishini tekshirish: uni backup bilan solishtiring va keyin dasturga xos validatorni ishlating.
  • Vim swap ogohlantirishida darhol delete tanlash: avval boshqa sessiya va recovery ehtimolini tekshiring.
  • tab va bo‘shliqni ko‘rinishidan bir xil deb qabul qilish: YAML, Python va Makefile kabi formatlarda bu farq muhim.

Amaliy mashqlar

  1. Nanoda besh qatorli test fayli yarating, qidirish orqali uchinchi qatorni toping va saqlang.
  2. Vimda shu faylning nusxasida qator raqamlarini yoqing, bir qatorni yy/p bilan ko‘paytiring, u bilan bekor qiling.
  3. Ikkala natijani cat bilan ketma-ket ko‘ring va aynan qaysi qatorlar farq qilishini yozib chiqing.
  4. Ataylab noto‘g‘ri port=abc yozing, qiymat formatini ko‘zdan kechiring va backupdan rollback qiling. So‘ng faylni yana ochib, oldingi to‘g‘ri qiymat qaytganini tasdiqlang.

Tekshiruv mezoni: asl backup o‘zgarmagan, yangi faylda faqat rejalashtirgan satrlar almashgan va noto‘g‘ri qiymat backupdan qaytarilgach yo‘qolgan bo‘lsin. Har bir natijani faylni qayta ochib isbotlang.

Xulosa

Nano bir martalik, tez tahrir uchun qulay; Vim esa rejimlari o‘zlashtirilgach takroriy terminal ishlarini tezlashtiradi. Ikkalasi ham faqat vosita: productiondagi ishonchlilik backup, minimal o‘zgarish, sintaksis validatsiyasi va tekshiruvdan keladi. Keyingi matn va qidiruv mavzularida faylni umuman ochmasdan uning mazmunini ko‘rish va kerakli qatorni topishni o‘rganamiz.

Manbalar