Editors (Vim)
အင်္ဂလိပ် စာသားများ ရေးသားခြင်းနှင့် ကုဒ် (Code) ရေးသားခြင်းတို့သည် အလွန် ကွဲပြားသော လုပ်ဆောင်ချက်များ ဖြစ်ကြသည်။ ပရိုဂရမ်းမင်း ရေးသားသည့်အခါ စာသားများ အများအပြား ဆက်တိုက် ရေးသားခြင်းထက် ဖိုင်များအကြား ကူးပြောင်းခြင်း၊ စာဖတ်ခြင်း၊ လမ်းကြောင်းရှာခြင်းနှင့် ကုဒ်များကို ပြင်ဆင်ခြင်းတို့တွင် အချိန်ပိုမို ကုန်လွန်လေ့ရှိသည်။ ထို့ကြောင့် အင်္ဂလိပ်စာ ရေးသားရန် ပရိုဂရမ်များနှင့် ကုဒ် ရေးသားရန် ပရိုဂရမ်များ ကွဲပြားနေခြင်းမှာ အလွန် သဘာဝကျပါသည် (ဥပမာ Microsoft Word နှင့် Visual Studio Code)။
Programmer များအနေဖြင့် ကျွန်ုပ်တို့သည် အချိန်အများစုကို ကုဒ် ပြင်ဆင်ရေးသားရာတွင် ကုန်လွန်ကြရသဖြင့်၊ မိမိ လိုအပ်ချက်နှင့် ကိုက်ညီသော Editor တစ်ခုကို ကျွမ်းကျင်အောင် လေ့လာခြင်းသည် အလွန် တန်ဖိုးရှိပါသည်။ Editor အသစ်တစ်ခုကို လေ့လာနည်းမှာ အောက်ပါအတိုင်း ဖြစ်သည်-
- သင်ခန်းစာမှ စတင်ပါ (ဤ သင်ခန်းစာ နှင့် ကျွန်ုပ်တို့ ညွှန်းဆိုထားသော အရင်းအမြစ်များ)
- စတင်ချိန်တွင် ပိုမို နှေးကွေးနိုင်သော်လည်း မိမိ စာသား ပြင်ဆင်မှု အားလုံးအတွက် ထို Editor ကိုပင် ဆက်လက် အသုံးပြုပါ
- လေ့လာရင်း ရှာဖွေပါ: ပိုမို ကောင်းမွန်သော နည်းလမ်း ရှိသင့်သည်ဟု ထင်မြင်ပါက အမှန်တကယ် ပိုမို ကောင်းမွန်သော နည်းလမ်း ရှိနေတတ်ပါသည်။
Editor အသစ်တစ်ခုကို အသုံးပြုရာတွင် ပထမ ၁ နာရီ သို့မဟုတ် ၂ နာရီအတွင်း ဖိုင် ဖွင့်ခြင်း၊ ပြင်ဆင်ခြင်း၊ သိမ်းဆည်းခြင်း/ထွက်ခြင်း စသည့် အခြေခံများကို တတ်မြောက်မည် ဖြစ်သည်။ နာရီ ၂၀ ခန့် အသုံးပြုပြီးပါက ယခင် Editor ကဲ့သို့ပင် မြန်ဆန်လာမည် ဖြစ်ပြီး၊ ထိုနောက်ပိုင်းတွင် ယင်း၏ အကျိုးကျေးဇူးများကို စတင် ခံစားရမည် ဖြစ်သည်—Editor အသစ်ကို အသုံးပြုခြင်းဖြင့် အချိန်များစွာ အသက်သာစေမည် ဖြစ်သည်။
မည်သည့် Editor ကို လေ့လာမလဲ? (Which editor to learn?)
ယနေ့ခေတ် လူကြိုက်များသော Editor များအနက် Visual Studio Code သည် လူကြိုက်အများဆုံး Editor ဖြစ်ပြီး၊ Vim သည် Command-line အခြေပြု လူကြိုက်အများဆုံး Editor ဖြစ်သည်။
Vim
ဤသင်တန်း၏ သင်ကြားသူ အားလုံးသည် Vim ကို အသုံးပြုကြသည်။ Vim သည် Vi editor (1976) မှ စတင်ခဲ့ပြီး ယနေ့ထက်တိုင် တိုးတက်လျက် ရှိသည်။ Vim တွင် အလွန် ကောင်းမွန်သော အတွေးအခေါ်များ ပါဝင်သဖြင့် Tool အများအပြားက Vim Mode ကို ပံ့ပိုးပေးထားကြသည်။ Vim ၏ လုပ်ဆောင်ချက် အားလုံးကို မိနစ် ၅၀ အတွင်း သင်ကြားပေးရန် မဖြစ်နိုင်သော်လည်း၊ Vim ၏ အတွေးအခေါ်နှင့် အခြေခံများကို ရှင်းလင်း သင်ကြားပေးသွားမည် ဖြစ်ပါသည်။
Vim ၏ အတွေးအခေါ် (Philosophy of Vim)
ပရိုဂရမ်းမင်း ရေးသားရာတွင် အချိန်အများစုကို စာသားအသစ် ရေးသားခြင်းထက် ဖတ်ရှုခြင်းနှင့် ပြင်ဆင်ခြင်းတို့တွင် ကုန်လွန်ကြသည်။ ထို့ကြောင့် Vim သည် Modal editor ဖြစ်သည်—စာသား ထည့်သွင်းခြင်းနှင့် စာသား ပြင်ဆင်ခြင်းတို့အတွက် ကွဲပြားသော Mode များကို အသုံးပြုထားသည်။ Vim ၏ Interface ကိုယ်တိုင်သည် ပရိုဂရမ်းမင်း ဘာသာစကားတစ်ခုကဲ့သို့ အလုပ်လုပ်သည်—ခလုတ်များ နှိပ်ခြင်း (Keystrokes) သည် Command များ ဖြစ်ကြပြီး ယင်း Command များကို ပေါင်းစပ် အသုံးပြုနိုင်ပါသည်။ Vim သည် Mouse နှင့် Arrow Key များ အသုံးပြုခြင်းကို ရှောင်ရှားထားသဖြင့် မိမိ တွေးခေါ်သည့် အရှိန်အတိုင်း ရေးသား ပြင်ဆင်နိုင်စေမည် ဖြစ်သည်။
Modal editing (Mode မျိုးစုံဖြင့် ပြင်ဆင်ခြင်း)
Vim တွင် လုပ်ဆောင်ချက် Mode မျိုးစုံ ပါရှိပါသည်-
- Normal: ဖိုင်အတွင်း သွားလာရန်နှင့် ပြင်ဆင်ရန်
- Insert: စာသားများ ထည့်သွင်းရန်
- Replace: စာသားများကို အစားထိုးရန်
- Visual (plain, line, or block): စာသား အစိတ်အပိုင်းများကို ရွေးချယ်ရန်
- Command-line: Command များကို Run ရန်
မူလအစတွင် Vim သည် Normal mode ၌ ရှိနေမည် ဖြစ်သည်။ မည်သည့် Mode မှမဆို Normal mode သို့ ပြန်လည် ရောက်ရှိရန် <ESC> (Escape key) ကို နှိပ်ရမည်။ Normal mode မှနေ၍ Insert mode သို့ ဝင်ရောက်ရန် i၊ Replace mode သို့ ဝင်ရောက်ရန် R၊ Visual mode သို့ ဝင်ရောက်ရန် v၊ Visual Line mode သို့ ဝင်ရောက်ရန် V၊ Visual Block mode သို့ ဝင်ရောက်ရန် <C-v> (Ctrl-V)၊ နှင့် Command-line mode သို့ ဝင်ရောက်ရန် : တို့ကို နှိပ်ရမည် ဖြစ်သည်။
အခြေခံများ (Basics)
စာသား ထည့်သွင်းခြင်း (Inserting text)
Normal mode မှနေ၍ i ကို နှိပ်ပါက Insert mode သို့ ရောက်ရှိမည် ဖြစ်ပြီး အခြား Text Editor များကဲ့သို့ စာသားများ ရိုက်ထည့်နိုင်မည် ဖြစ်သည်။ <ESC> နှိပ်ပါက Normal mode သို့ ပြန်လည် ရောက်ရှိမည် ဖြစ်သည်။
Buffers, tabs, နှင့် windows
Vim သည် ဖွင့်လှစ်ထားသော ဖိုင်များကို “Buffers” ဟု ခေါ်ဆိုသည်။ Vim Session တစ်ခုတွင် Tab များစွာ ပါဝင်နိုင်ပြီး Tab တစ်ခုစီတွင် Window (ခွဲထားသော Pane) များစွာ ပါဝင်နိုင်သည်။ Window တစ်ခုစီသည် Buffer တစ်ခုကို ပြသပေးသည်။ Buffer တစ်ခုတည်းကို Window အများအပြားတွင် ပြိုင်တူ ဖွင့်လှစ် ကြည့်ရှုနိုင်ပါသည်။
Command-line
Normal mode တွင် : ရိုက်ထည့်ပါက Screen အောက်ခြေရှိ Command line သို့ ရောက်ရှိမည် ဖြစ်သည်-
:qထွက်ရန် (Window ပိတ်ရန်):wဖိုင် သိမ်းဆည်းရန် (“write”):wqဖိုင် သိမ်းဆည်းပြီး ထွက်ရန်:e {name of file}ပြင်ဆင်လိုသော ဖိုင်ကို ဖွင့်ရန်:lsဖွင့်ထားသော Buffer များကို ပြသရန်:help {topic}အကူအညီ ဖွင့်ရန်
Vim Interface သည် ပရိုဂရမ်းမင်း ဘာသာစကားတစ်ခု ဖြစ်သည် (Vim’s interface is a programming language)
လမ်းကြောင်းရှာခြင်း (Movement)
Normal mode တွင် သွားလာလှုပ်ရှားရန် Command များကို အသုံးပြုသည်-
- အခြေခံ ရွှေ့လျားမှု:
hjkl(ဘယ်၊ အောက်၊ အထက်၊ ညာ) - စကားလုံးများ:
w(နောက် စကားလုံး)၊b(စကားလုံး အစ)၊e(စကားလုံး အဆုံး) - စာကြောင်းများ:
0(စာကြောင်း အစ)၊^(ပထမဆုံး စာသား)၊$(စာကြောင်း အဆုံး) - ဖန်သားပြင်:
H(အထက်)၊M(အလယ်)၊L(အောက်) - Scroll:
Ctrl-u(အထက်)၊Ctrl-d(အောက်) - ဖိုင်:
gg(ဖိုင် အစ)၊G(ဖိုင် အဆုံး) - စာကြောင်း နံပါတ်:
:{number}<CR>သို့မဟုတ်{number}G - ရှာဖွေခြင်း:
/{regex}၊ match များအကြား သွားလာရန်n/N
စာသား ပြင်ဆင်မှုများ (Edits)
Vim ၏ ပြင်ဆင်မှု Command များမှာ-
iInsert mode သို့ ဝင်ရောက်ရန်o/Oအောက် / အထက် တွင် စာကြောင်းအသစ် ဖွင့်ရန်d{motion}{motion} အတိုင်း ဖျက်ရန် (ဥပမာdwသည် စကားလုံး ဖျက်ရန်၊d$သည် စာကြောင်း အဆုံးအထိ ဖျက်ရန်)c{motion}{motion} အတိုင်း ပြောင်းလဲရန် (ဥပမာcwသည် စကားလုံး ပြောင်းလဲရန်)xစာလုံး တစ်လုံး ဖျက်ရန် (dlနှင့် တူညီသည်)uပြန်ပြင်ရန် (undo)၊<C-r>ပြန်လုပ်ရန် (redo)yစာသား ကူးယူရန် (yank)pစာသား ကူးထည့်ရန် (paste)
အရေအတွက် ပေါင်းစပ်ခြင်း (Counts)
3wစကားလုံး ၃ လုံး ရှေ့သို့ ရွှေ့ရန်5jစာကြောင်း ၅ ကြောင်း အောက်သို့ ရွှေ့ရန်7dwစကားလုံး ၇ လုံး ဖျက်ရန်
Modifiers (အထူး ပြုပြင်မှုများ)
ci(လက်ရှိ ကွင်းစကွင်းပိတ်()အတွင်းမှ စာသားကို ပြောင်းလဲရန်ci[လက်ရှိ လေးထောင့်ကွင်း[]အတွင်းမှ စာသားကို ပြောင်းလဲရန်da'Single quote အပါအဝင် အတွင်းမှ စာသားကို ဖျက်ရန်
Demo (လက်တွေ့ ပြသမှု)
အောက်ပါ ဖျက်ဆီးထားသော Fizz Buzz ကုဒ်ကို Vim အသုံးပြု၍ ပြင်ဆင်ပြသထားသည်-
def fizz_buzz(limit):
for i in range(limit):
if i % 3 == 0:
print('fizz')
if i % 5 == 0:
print('fizz')
if i % 3 and i % 5:
print(i)
def main():
fizz_buzz(10)
Vim ကို စိတ်ကြိုက် ပြင်ဆင်ခြင်း (Customizing Vim)
Vim ကို ~/.vimrc ဖိုင် (Vimscript command များ ပါဝင်သော ဖိုင်) ဖြင့် စိတ်ကြိုက် ပြင်ဆင်နိုင်ပါသည်။ ကျွန်ုပ်တို့ ပြင်ဆင်ထားသော မူလ Config ကို ဤနေရာတွင် (/2020/files/vimrc) ဒေါင်းလုဒ်ဆွဲ၍ ~/.vimrc အဖြစ် သိမ်းဆည်း အသုံးပြုနိုင်ပါသည်။
Vim ကို တိုးချဲ့ခြင်း (Extending Vim)
Vim 8.0 မှ စတင်၍ Plugin များကို ~/.vim/pack/vendor/start/ Directory အတွင်း သို့ ထည့်သွင်း၍ တိုက်ရိုက် အသုံးပြုနိုင်ပါသည်။
ထင်ရှားသော Plugin အချို့မှာ-
- ctrlp.vim: ဖိုင်များ ရှာဖွေရန်
- ack.vim: ကုဒ် ရှာဖွေရန်
- nerdtree: ဖိုင်တွဲများ ကြည့်ရှုရန်
- vim-easymotion: လျင်မြန်စွာ သွားလာရန်
အခြား ပရိုဂရမ်များတွင် Vim Mode အသုံးပြုခြင်း
- Bash တွင်
set -o vi - Zsh တွင်
bindkey -v - Environment variable:
export EDITOR=vim
အဆင့်မြင့် Vim (Advanced Vim)
- Search and replace:
%s/foo/bar/g - Multiple windows:
:sp/:vsp - Macros:
q{character}ဖြင့် Macro Record လုပ်ပြီး@{character}ဖြင့် ပြန်လည် Run ရန်။
အရင်းအမြစ်များ (Resources)
vimtutor- Terminal တွင်vimtutorဟု ရိုက်ထည့်၍ လေ့လာနိုင်သော သင်ခန်းစာ- Vim Adventures - Vim လေ့လာနိုင်သော ဂိမ်း
- Vim Tips Wiki
- Vi/Vim Stack Exchange
လေ့ကျင့်ခန်းများ (Exercises)
၁။ vimtutor ကို ပြီးစီးအောင် လေ့လာပါ။
၂။ ကျွန်ုပ်တို့၏ အခြေခံ vimrc ကို ဒေါင်းလုဒ်လုပ်၍ ~/.vimrc အဖြစ် သိမ်းဆည်း အသုံးပြုပါ။
၃။ ctrlp.vim plugin ကို ထည့်သွင်း စမ်းသပ်ပါ။
၄။ သင်ခန်းစာပါ Demo ကို မိမိ စက်ပေါ်တွင် ကိုယ်တိုင် ပြန်လည် ပြုလုပ်ကြည့်ပါ။
၅။ ရှေ့လာမည့် ၁ လအတွင်း စာသား ပြင်ဆင်မှု အားလုံးအတွက် Vim ကို သီးသန့် အသုံးပြုပါ။
Licensed under CC BY-NC-SA.