Dive Into Vim
တီဗွီကြော်ငြာဆန်တဲ့ စကားလုံးတွေသုံးထားပေမယ့် ဒါအမှန်ပဲဆိုတာ အတွေ့အကြုံရှိတဲ့ Programmer တိုင်း သိပါတယ်။ :D
ကျွန်တော်အနေနဲ့လည်း Text Editor တော်တော်များများကို စမ်းသုံးဖူးပါတယ်။ Vim အကြောင်းမသွားခင် Text Editor အများကြီး စမ်းဖြစ်ခဲ့တဲ့ အကြောင်းရင်းကို ဇာတ်စုံခင်းချင်ပါသေးတယ်။ ဇာတ်လမ်းက DHH ရဲ့ Build a Blog in 15 Minutes ဆိုတဲ့ Ruby on Rails Tutorial Screencast ကို ကြည့်ဖြစ်တာက စပါတယ်။ ကြာပါပြီ၊ လွန်ခဲ့တဲ့ (၄) နှစ်လောက်ကပါ။
အဲ့ဒီ Rails Demonstration Screencast မှာ Textmate ကိုသုံးပြီး Snippet တွေအလိုအလျှောက်ထည့်သွားတာတွေ၊ File တစ်ခုနဲ့တစ်ခု ပြောင်းဖို့ Click နှိပ်ပြီးရှာနေစရာမလိုပဲ အလွယ်လေးကူးလို့ရတာတွေ၊ သပ်ရပ်တဲ့ Color Scheme လေးတွေကိုတွေ့ပြီး Textmate သုံးချင်စိတ် အသည်းအသန် စပြီးပေါ်လာခဲ့ပါတယ်။ ပြဿနာက Textmate က Mac မှာပဲ အလုပ်လုပ်ပါတယ်။ ကျွန်တော်သုံးနေတာက Ubuntu Linux ပါ။ Rails Website မှာ Mac မဟုတ်တဲ့ OS တွေအတွက် Vim နဲ့ Netbeans ကို Recommend လုပ်ထားတာကိုတွေ့ရတဲ့အတွက် အဲ့ဒီနှစ်ခုကိုလည်း စမ်းကြည့်ဖြစ်ပါတယ်။
Vim ကို စမ်းကြည့်တော့ အတော်လေးလန့်သွားပါတယ်။ ကျွန်တော်နားလည်ထားတာက၊ Text Editor ဆိုတာ ဖွင့်ပြီးရင် စာ စရိုက်လို့ရပြီလို့ပဲ ယူဆထားတာပါ။ Vim မှာက မရသေးပါဘူး။ Keyboard ကနေ တစ်ခုခုရိုက်တဲ့အခါ ပေါ်ချင်ရင်ပေါ်တယ် မပေါ်ချင်ရင်မပေါ်ဘူး။ သူ့အလိုလိုနေရာရွေ့ချင်ရွေ့ကုန်တယ်၊ ပျောက်ချင်ရင် ပျောက်ကုန်တယ်ဆိုတော့ တစ်ကယ်ပဲ အတော်လန့်သွားတာပါ။ ဘာကြီးလဲပေါ့။ ကွန်ပျူတာအခုမှကိုင်ဖူးတဲ့လူတစ်ယောက် ဟိုလျှောက်နှိပ်ဒီလျှောက်နှိပ်လုပ်ကြည့်ရင်း ဘာတွေပေါ်လာမှန်းနားမလည်တဲ့အခါ ချွေးပြန်သလို ကျွန်တော်လည်း ခံစားလိုက်ရတာပါ။ Vim သုံးတက်အောင်ဆိုရင် အတော်လေ့လာယူရဦးမယ်လို့ နောက်တော့မှ နားလည်လိုက်ပါတယ်။
ဒါနဲ့ Vim ကို လက်လျှော့ပြီး Netbeans ကို စမ်းကြည့်ဖြစ်ပါတယ်။ Textmate လောက်မကြိုက်ပေမယ့် ကိုယ်လိုချင်တဲ့ Feature အတော်များများကို Netbeans မှာရတော့ အဆင်ပြေတယ်လို့ ပြောရပါမယ်။ အဲ့ဒီနောက်ပိုင်း Netbeans ပဲ သုံးဖြစ်နေပေမယ့်၊ စိတ်တိုင်းကတော့ မကျေသေးပါဘူး။ Linux နဲ့ Windows အတွက် Textmate လောက်ကောင်းတဲ့ Text Editor တစ်ခု ရှိကိုရှိရမယ်ဆိုပြီး အင်တာနက်မှာလိုက်ရှာပါတယ်။ သူများတွေပြောသမျှကို တစ်ခုပြီးတစ်ခု စမ်းကြည့်ဖြစ်ခဲ့ပါတယ်။ စမ်းကြည့်ဖြစ်သမျှ Text Editor တွေကိုသာ တစ်ခုနဲ့တစ်ခု နှိုင်းယှဉ်ပြရမယ်ဆိုရင် ကိုရီးယားကားဖြစ်သွားနိုင်ပါတယ်။
Notepad++, E-Text Editor နှစ်ခုကို Windows ပေါ်မှာ စမ်းသုံးကြည့်ဖြစ်ပါတယ်။ မဆိုးပါဘူးလို့ပြောရပါမယ်။ နှစ်ခုလုံးကောင်းပါတယ်။ အခုထိလည်း Windows အတွက်ဆိုရင် Notepad++ ကိုပဲ Recommend ပေးပါတယ်။ Notepad++ က Free လည်းရပါတယ်။ E-Text Editor က တော့ Textmate နဲ့တူ အောင်လိုက်လုပ်ထားလို့ တော်တော်ကောင်းတယ်လို့ ပြောနိုင်ပေမယ် လိုင်စင်ဝယ်သုံးဖို့လိုပါတယ်။ 30 Days Trial ကို လိုင်စင်ဝယ်စရာမလိုအောင် Registry ထဲမှာ ပြင်ပြီးသုံးမယ်ဆိုရင်တော့ သုံးလို့ရပါတယ်။ ဒါပေမယ့် Code ရေးနေတုန်း လိုင်စင်၀ယ်ပါဆိုတဲ့ Message Box ကြီးတက်တက်လာတော့၊ အဆင်မပြေပါဘူး။ သူများညီမကို အစ်ကိုတွေမသိအောင် ခိုးပြီးချိမ်းတွေ့နေရသလိုပဲ။ တစ်ချက်ချက် လန့်လန့်သွားပါတယ်။
တစ်ခြား Notepad2 တို့ EditPad တို့လည်း စမ်းကြည့်ဖြစ်ပေမယ့် မကြိုက်ပါဘူး။ Intype ဆိုတာလေးတော့ မဆိုးပါဘူး။ ဒါပေမယ် နောက်ပိုင်း Active မဖြစ်တော့လို့ ဆက်မစမ်းကြည့်ဖြစ်တော့ဘူး။
Linux ပေါ်မှာကတော့ Kate, jEdit, Komodo Edit, BlueBird စတာတွေကိုစမ်းကြည့်ဖြစ်ပြီး IDE အနေနဲ့ Netbeans, Eclipse, phpEdit, Apatana, KDevelop, Mono Develop တို့ကို စမ်းကြည့်ဖြစ်ပါတယ်။ အကုန်လုံး သူဟာနဲ့သူ တစ်မျိုးစီကောင်းပေမယ့် တစ်ခုခုလိုလိုနေပါတယ်။ တစ်ခြား မမှတ်မိတော့တာတွေလည်း အများကြီး ရှိပါသေးတယ် (Emacs တော့ တစ်ခါမှ မစမ်းဖူးသေးပါဘူး)။ အဲ့ဒီထဲမှာ နောက်ဆုံးမှစမ်းကြည့်ပြီး စိတ်ကြိုက်ဖြစ်ခဲ့တာက Gnome ရဲ့ Default Text Editor ဖြစ်တဲ့ Gedit ပါ။ Gedit ကို စိတ်ကြိုက် Setup လုပ်ပြီးတဲ့နောက်မှာ “အမေကျော်ဒွေးတောလွမ်းမိလေခြင်း” လို့တောင်ဖြစ်မိပါတယ်။ Gedit လည်း Plugin တွေနဲ့ သေချာ Setting လုပ်ထားမယ်ဆိုရင် တော်တော်ကောင်းပါတယ်။
Intel အတွက် Mac ဆိုပြီးထွက်လာတော့၊ PC မှာ Mac OS တင်ပြီး Textmate ကို စမ်းကြည့်ဖြစ်ခဲ့ပါသေးတယ်။ ဒါပေမယ့် ကိုယ်အမှန်တစ်ကယ်အလုပ်လုပ်ချင်တဲ့ Environment က Linux ဖြစ်လို့ Mac ပေါ်မှာ ကြာကြာမနေနိုင်ပါဘူး။ Git Install လုပ်ဖို့ကို (၂) ရက်လောက်ကြာသွားလို့ Linux ဘက်ပဲ ပြန်ကူးခဲ့ရပါတယ် (Mac အစစ်မဟုတ်ပဲ PC ပေါ်မှာသုံးနေလို့ ခက်နေတာလည်း ဖြစ်နိုင်ပါတယ်)။ ပြီးတော့ မသုံးဖြစ်ခင်က Textmate Textmate နဲ့ဖြစ်နေပေမယ့် တစ်ကယ်သုံးကြည့်တော့ ကိုယ်သေချာ Setting လုပ်ထားတဲ့ Gedit ထက် ဘာမှထူးပြီးပိုမကောင်းတာကို တွေ့ရလို့လည်း ပါပါတယ်။ ဘာပဲပြောပြော Textmate ကြောင့် Text Editor ပေါင်း သောင်းခြောက်ထောင် စုံအောင် စမ်းဖြစ်သွားပါတယ်။
အဲ့ဒီလိုနဲ့ Gedit ကို အဓိက Programming Text Editor နဲ့ သုံးနေရင်း၊ ကြိုကြားကြိုကြားမှာ ဟိုလူက Vim သာလျှင်အကောင်းဆုံးပြောလိုက်၊ စမ်းကြည့်လိုက်၊ Vim သာလျှင် Productive အဖြစ်ဆုံးပြောလိုက်၊ စမ်းကြည့်လိုက် လုပ်ဖြစ်ပါတယ်။ စမ်းကြည့်တိုက်လည်း၊ Ctrl+S နှိပ်ပြီး Save လုပ်လို့မရလိုက် လက်လျှော့လိုက်၊ Ctrl+Z နဲ့ Undo လုပ်မရလို့ လက်လျှော့လိုက်နဲ့ အကြိမ်ကြိမ် လက်လျှော့ဖြစ်ခဲ့ပါတယ်။ Vim သုံးတော့မယ်ဆိုရင် Text Editing Mindset ကို လုံးလုံးပြောင်းပစ်ဖို့ လိုနိုင်တယ်လို့ တစ်ဖြည်းဖြည်း နားလည်လာပါတယ်။
ဆရာ့ဆရာများကတော့ “Vim သုံးရင်း၊ တစ်ခြားတစ်ခု ပြောင်းသုံးဖို့ကို စဉ်းတောင်စဉ်းစားမှမဟုတ်တော့ဘူး” လို့ ရပ်ခံပြီးပြောကြပါတယ်။ သူတို့ဒီလောက်ပြောနေတော့လည်း၊ အမှန်တစ်ကယ် ကြီးကျယ်တဲ့အရာတစ်ခု ဖြစ်လိမ့်မယ်လို့တော့ လက်ခံထားပါတယ်။ ဒါကို လေ့လာရမှာပျင်းတာတစ်ခုနဲ့ လက်လွတ်သွားမှာကိုလည်း စိုးရိမ်မိလို့ “တစ်ချိန်ချိန်တော့ သေချာပြန်လေ့လာဦးမယ်” လို့ တေးထားဖြစ်ခဲ့ပါတယ်။
Developer Conference ရဲ့ ဒုတိယနေ့မှာ ကိုခွန်သာထက်နဲ့ Text Editor အကြောင်း စကားစဖြစ်ရကနေ၊ Rails Development အတွက် သူကတော့ Vim ပဲသုံးတယ်လို့ ပြောပြပါတယ်။ ပြီးတော့ သူလက်တွေ့အလုပ်လုပ်နေပုံကို Laptop ဖွင့်ပြီးပြပါတယ်။ နဂိုအခံရှိနေတဲ့အချိန်မှာ ဒီလိုလက်တွေ့သုံးပြတာကို တွေ့လိုက်ရတော့ Motivation တစ်ခုရသွားပြီး နောက်နေ့ကစပြီး Vim ကို အသေအချာ ပြန်စမ်းကြည့်ဖြစ်ပြန်ပါတယ်။ အချိန်ကိုက်ပဲ YouTube လေးကလည်းပွင့်နေတော့ တစ်ညအချိန်ပေးပြီး Tutorial Screencast တွေကို စိတ်ရှည်လက်ရှည်ထိုင်ကြည့်ဖြစ်ပါတယ် (ခုတော့ YouTube ပြန်ပိတ်သွားပြန်ပြီထင်တယ်)။ ဒီလိုအချိန်ပေးလိုက်တယ်ဆိုရင်ပဲ အမှန်တစ်ကယ်အသုံးပြုဖို့ အသင့်ဖြစ်သွားပါတယ်။ သူများတွေပြောနေတာ ဟုတ်သား၊ တော်တော်မိုက်တယ်လို့လည်း တွေးမိပါတယ်။
ဘာနဲ့တူလည်းဆိုတော့ Command Line မသုံးတက်သူနဲ့တူပါတယ်။ မသုံးတက်ခင်တော့ GUI နဲ့လုပ်လည်းရတာပဲ၊ ဘာလို့အချိန်ကုန်ခံပြီး Command တွေမှတ်နေမလဲလို့ တွေးပါတယ်။ သုံးတက်သွားတော့မှ CLI ရဲ့ အားသာချက်တွေကိုသိသွားသလိုပါပဲ။ Vim မှာလည်း Command လေ့လာရ၊ မှတ်ရပါတယ်။ အရင်က ဒါတွေမှတ်နေရတာ အလုပ်ရှုပ်တယ်တွေးပေမယ့် သိသွားတော့မှ တစ်ကယ်အသုံးဝင်မှန်း နားလည်သွားတာပါ။
4 Stages of Competence ဆိုတာရှိပါတယ်။ နည်းပညာနဲ့ အရည်အချင်းအသစ်တစ်ခုလေ့လာတိုင်း ကြုံရလေ့ရှိတဲ့အဆင့်တွေပါ။ ပထမအဆင့်မှာ နည်းပညာအရည်အချင်းရဲ့အသုံးဝင်မှု့ကို လျစ်လျူရှုရာကနေ ဒုတိယအဆင့်မှာ အသုံးဝင်မှုကို သိလာပါတယ်။ တတိယအဆင့်မှာတော့ အဲ့ဒီအရည်အချင်းကိုလည်း အင်တိုက်အားတိုက် လေ့လာအသုံးချလာပါပြီ။ နောက်ဆုံးအဆင့်မှာတော့ ကျွမ်းကျင်အဆင့်ဖြစ်သွားလို့ ဒီအရည်အချင်းကိုယ့်မှာရှိပါတယ်လို့တောင် ပြောစရာမလိုတော့ပါဘူး။ ဒါကိုအရည်အချင်းတစ်ခုလိုတောင် သဘောမထားတော့ပဲ ကိုယ့်ရဲ့ Second Nature လိုဖြစ်သွားတဲ့သဘောပါ။ Vim နဲ့ ပက်သက်ရင် လက်ရှိကျွန်တော့်အခြေအနေက ဒုတိယအဆင့်ကိုကျော်ပြီး တတိယအဆင့်ထဲကို ဝင်ဖို့ ကြိုးစားနေတာဖြစ်ပါတယ်။
ဒီ Post မှာ နောက်လူတွေ လေ့လာတဲ့အခါ အချိန်တိုတိုနဲ့ ပိုမိုလွယ်ကူစွာလေ့လာနိုင်စေဖို့ ကျွန်တော်လေ့လာသိရှိထားတာတွေကို အတက်နိုင်ဆုံး ရှင်းလင်းဖော်ပြပေးသွားပါမယ်။
Installation
Vim ကို Windows, Linux နဲ့ Mac အပါဝင် OS အတော်များများမှာ အသုံးပြုနိုင်ပါတယ်။ Vim ဟာ Text Interface နဲ့လာတဲ့ Command Line Editor တစ်ခုဖြစ်ပါတယ်။ ဒါပေမယ့် အသုံးများတဲ့ Command တွေကို Menu တွေ Toolbar တွေအဖြစ် ဖန်တီးပေးထားတဲ့ GUI Version တွေကိုသုံးဖို့ အကြံပြုလိုပါတယ်။ Windows နဲ့ Linux အတွက် gVim ကို အသုံးပြုနိုင်ပြီး Mac အတွက်တော့ MacVim ရှိပါတယ်။ လက်ရှိ Version က Version 7 ဖြစ်ပြီး Installer တွေကို Vim Download Page မှာ ရယူနိုင်ပါတယ်။
Ubuntu Linux မှာ တော့ ဒီလို အလွယ်တစ်ကူ Install လုပ်ယူနိုင်ပါတယ်။
Gvim ကို Install လုပ်ပြီးပြီးချင်း Run ကြည့်လိုက်ရင် အခုလိုမျိုးတွေ့ရမှာဖြစ်ပါတယ်။

အမှန်တော့ Vim ချည်းသက်သက်ဆိုရင် မပြည့်စုံသေးပါဘူး။ လိုအပ်တဲ့ Plugins တွေထပ်ထည့်ဖို့လိုပါသေးတယ်။ လောလောဆယ်တော့ Vim အကြောင်းကိုပဲ ဆက်ကြည့်ပါမယ်။
Editing and Manipulating
Vim မှာ Mode တွေ အမျိုးမျိုး ရှိပါတယ်။ အားလုံးပထမဦးဆုံးပြဿနာတက်တာကလည်း ဒီ Mode မှာဖြစ်ပါတယ်။ တစ်ခြား Text Editor တွေမှာ Mode က တစ်ခုပဲရှိပါတယ်။ ဖွင့်လိုက်ရင် စာရိုက်လို့ရတယ်ဆိုတဲ့ Insert Mode ဖြစ်ပါတယ်။ Vim မှာတော့ Mode တွေအမျိုးမျိုးရှိနေပါတယ်။ အဲ့ဒီထဲက အဓိကကျတဲ့ (၃) မျိုးကတော့ -
- Normal Mode
- Insert Mode
- Visual Mode
တို့ပဲဖြစ်ပါတယ်။
Normal Mode ကို Command Mode လို့လည်းခေါ်နိုင်ပါတယ်။ ဒီ Mode က အဓိက ဖြစ်ပြီး Text File ကို Command တွေနဲ့ စီမံဖို့ သုံးရတဲ့ Mode ဖြစ်ပါတယ်။ တစ်ခြား Text Editor တွေက Text တွေ ရိုက်ထည့်တဲ့အပိုင်းကို အဓိကထားပြီး Vim ကတော့ စီမံတဲ့အပိုင်းကို အဓိကထားတယ်လို့ ပြောနိုင်ပါတယ်။ Command Mode မှာ သုံးလို့ရတဲ့ Command တွေထဲက ပထမဦးဆုံး မှတ်ထားရမယ့် သုံးခုက i, a, o တို့ဖြစ်ပါတယ် (အခုချိန်ကစပြီး လက်တွေ လိုက်လံစမ်းသပ်ကြည့်ဖို့ အကြံပြုလိုပါတယ်)။
- i – Insert Mode ကို ပြောင်းတဲ့ Command ဖြစ်ပါတယ်။
- a – Insert Mode ကို ပြောင်းတာပါပဲ။ Append ဆိုတဲ့အဓိပ္ပါယ်ပါ။ A အကြီးလဲသုံးလို့ရပါတယ်။ i, a နဲ့ A ဘာကွာလဲဆိုတာကို ကိုယ်တိုင်စမ်းကြည့်လိုက်တာ ပိုမြင်ပါလိမ့်မယ်။
- o – Insert Mode ကို ပြောင်းတာပါပဲ။ Cursor ကို အောက်လိုင်းအသစ်တစ်ခုမှာ နေရာချပေးပါတယ်။ O အကြီးဆိုရင်တော့ Cursor ကို လက်ရှိလိုင်းရဲ့ အပေါ်မှာ တစ်လိုင်းတိုးပြီး နေရာချထားပေးပါတယ်။
Normal Mode ကို Esc နဲ့ ပြန်ပြောင်းရပါတယ်။
ပုံမှန်ဆိုရင် Text File ထဲမှာ အပေါ်အောက် ရှေ့နောက် သွားချင်တဲ့အခါ Arrow Key တွေကိုသုံးကြပါတယ်။ Vim မှာလည်း Arrow Key တွေကိုပဲ သုံးလို့ရပါတယ်။ ဒါပေမယ့် ဆရာ့ဆရာတွေကတော့ h, j, k, l တို့ကိုသုံးတာ ပိုပြီး Productive ဖြစ်တယ်လို့ ပြောကြပါတယ်။
- h – Left Arrow နဲ့တူပါတယ်
- j – Down Arrow နဲ့တူပါတယ်
- k – Up Arrow နဲ့တူပါတယ်
- l – Right Arrow နဲ့တူပါတယ်
ကျွန်တော်ကတော့ အကျင့်ပါနေပြီဖြစ်တဲ့ Arrow Key တွေကိုပဲသုံးပါတယ်။ h, j, k, l က ပိုမြန်တယ်ပြောပေမယ့် ဒီကိစ္စကို အလေ့အကျင့်လုပ်နေဖို့ အချိန်မပေးချင်သေးပါဘူး။ တစ်ခြားလေ့လာစရာတွေ ရှိနေပါသေးတယ်။
နောက်ထပ်အခြေခံကျတဲ့ Command တွေကတော့ Copy, Paste, Undo စသည်တို့အတွက်ဖြစ်ပါတယ်။
- u – Undo
- Ctrl+r – Redo (Ctrl+r ကို Vim သမားတွေက လို့ ဖော်ပြလေ့ရှိပါတယ်)
- y – Copy (yank)
- yy – Copy Current Line
- p – Paste
- d – Delete
- dd – Delete Current Line (or) Cut Current Line
Text File ထဲမှာ ဟိုဟိုဒီဒီ လျှောက်သွားဖို့အတွက် အသုံးဝင်တဲ့ Command လေးတွေရှိပါသေးတယ်။ အဲ့ဒါတွေကတော့ -
- 0 – Zero ဖြစ်ပါတယ်။ လိုင်းရဲ့ ရှေ့ဆုံးကို သွားဖို့သုံးပါတယ်။ Home Key နဲ့ တူပါတယ်။
- ^ – သူလည်းပဲ လိုင်းရဲ့ ရှေ့ဆုံးကို သွားဖို့ပါပဲ။ အတူတူပဲလို့ထင်ရပေမယ့် နည်းနည်တော့ကွာပါတယ်။ ဘာကွာလဲဆိုတာကိုတော့ ကိုယ်တိုင်စမ်းကြည့်မှ ပိုမြင်ပါမယ်။
- $ – လိုင်းအဆုံးကို သွားချင်တဲ့အခါ သုံးပါတယ်။ End Key နဲ့ တူပါတယ်။ Regular Expression သိသူတွေကတော့ ^ နဲ့ $ ရဲ့ အဓိပ္ပါယ်ကို ချက်ချင်း သဘောပေါက်မှာပါ။
- % – Matching Bracket ကို သွားချင်တဲ့အခါ သုံးပါတယ်။
- :n – n နေရာမှာ သွားချင်တဲ့ လိုင်းနံပါတ်ကို ထည့်ပါ။ nG လည်းသုံးလိုရပါတယ်။ n နေရာမှာ Line Number ထည့်ပါ။ ဥပမာ – 21G ဆိုရင် လိုင်း 21 ကို ရောက်သွားမှာပါ။
နောက်ထပ် အသုံးဝင်တဲ့ Command လေးတစ်ချို့ကတော့ -
- . – Dot command က နောက်ဆုံးလုပ်ခဲ့တဲ့ Command ကို ပြန်လုပ်စေချင်ရင် သုံးပါတယ်။
- n[command] – n နေရာမှာနံပါတ်ထည့်ပြီး နောက်က Command ထည့်ရင် n ကြိမ် အလုပ်လုပ်ပါတယ်။ ဥပမာ – 2dd ဆိုရင် နှစ်လိုင်း Delete လုပ်ပါတယ်။ dd က Line Delete ပါ။
Search and Replace အတွက် သိထားရမယ့် Command တွေကတော့ -
- * – လက်ရှိ Cursor ရှိနေတဲ့စာလုံးနဲ့တူတဲ့ နောက်စာလုံးကို သွားချင်တဲ့အခါ သုံးပါတယ်။
- # – လက်ရှိ Cursor ရှိနေတဲ့စားလုံးနဲ့တူတဲ့ ရှေ့စာလုံးကို သွားချင်တဲ့အခါ သုံးပါတယ်။ (* နဲ့ # က အတော်လေးအသုံးဝင်ပါတယ်)
- /[pattern]<enter> – ရှေ့ဆုံးက / ခံပြီး [pattern] နေရာမှာ ရှာချင်တဲ့စာလုံးကို ထည့်ပေးရပါတယ်။

n ကို Find Next အနေနဲ့သုံးနိုင်ပြီး N ကိုတော့ Find Previous အနေနဲ့သုံးပါတယ်။ Replace ကတော့ နည်းနည်းခက်ပါတယ်။ Regular Expression နားလည်ဖို့ လိုပါတယ်။ Regular Expression နားလည်ရင်တော့ အများကြီးလုပ်လို့ရပါတယ်။ နားမလည်ရင်လည်း ဒီ Command လေးကို ပုံသေမှတ်ထားလို့ရပါတယ်။
- :%s/[search]/[replace]/gc<enter>
[search] နေရာမှာ ရှာချင်တဲ့စာလုံးကိုထည့်ပါ။ [replace] နေရာမှာ အစားထိုးချင်တဲ့စာလုံးကိုထည့်ပါ။ နမူနာပုံတွေ ထည့်ပေးထားပါတယ်။ Command အသုံးပြုပုံ နမူနာဖြစ်ပါတယ်။

အောက်မှာဖော်ပြထားတာကတော့ Replace Command သုံးလိုက်တဲ့အခါ gVim က လာမေးတဲ့ Confirmation နမူနာဖြစ်ပါတယ်။ y က Yes, n က No, a က Search and Replace All ဖြစ်ပြီး q ကတော့ Quit Search and Replace ဖြစ်ပါတယ်။ နောက်က (၃) ခုကတော့ ကျွန်တော်ကိုယ်တိုင်လည်း မသိသေးပါဘူး။

သိပ်ခက်တယ်ထင်ရင် gVim မှာ ပါတဲ့ Edit Menu ထဲက Search and Replace GUI ကိုလည်း အသုံးပြုနိုင်ပါတယ်။
Auto Complete နဲ့ပက်သက်ပြီး ဆက်ကြည့်ပါမယ်။ Auto Complete ဆိုတာ Code တွေရေးနေရင်း သုံးမှာဖြစ်လို့ Insert Mode ထဲမှာ သုံးရမယ့် Command အမျိုးအစားဖြစ်ပါတယ်။
Ctrl+p ကို Word Complet အတွက် အသုံးပြုနိုင်ပါတယ်။ တစ်ကြိမ်ရိုက်ပြီးသားစာလုံးရှိရင် Auto Complete လုပ်ပေးနိုင်ပါတယ်

Ctrl+x နဲ့ Ctrl+l တစ်ခုပြီးတစ်ခု ဆက်တိုက်နှိပ်ရင်တော့ Line Complete ဖြစ်ပါတယ်။

ဆက်လက်ပြီး File Open, Save နဲ့ Close တို့ကို ကြည့်ပါမယ်။
- :w<enter> – Save File (Write)
- :e /path/to/file<enter> – Open File… နောက်က /path/to/file နေရာမှာ File Path အပြည့်အစုံထည့်ပေးရပါတယ်။
- :saveas /path/to/file<enter> – File Save As… နောက်က /path/to/file နေရာမှာ File Path အပြည့်အစုံထည့်ပေးရပါတယ်။
- :q<enter> – Quit
- :wq<enter> – Save and Quit
- :q!<enter> – Quit without Save
ဆက်လက်ပြီး Buffer တွေစီမံနိုင်မယ့် Command တွေကို ကြည့်ပါမယ်။ Buffer ဆိုတာ အပြိုင်ဖွင့်ထားတဲ့ File တွေကို ပြောတာပါ။ Buffer ပြောင်းတဲ့ Command တွေ အမျိုးမျိုးရှိပေမယ့် ပထမဦးဆုံးဖော်ပြထားတဲ့တစ်ခုလောက် မှတ်ထားရင်ရပါတယ်။
- :bn<enter> - Next Buffer ဆိုတဲ့ အဓိပ္ပါယ်ပါ။ ဖွင့်ထားတဲ့ Buffer တွေ တစ်ခုကနေတစ်ခု ပြောင်းချင်တဲ့အခါ သုံးပါတယ်။
- :buffers<enter> – ဖွင့်ထားသမျှ Buffer စာရင်းကို ကြည့်ချင်တဲ့အခါ သုံးပါတယ်။
- :b n<enter> – n နေရာမှာ သွားချင်တဲ့ Buffer နံပါတ်ကို ထည့်ပေးပြီးသွားလို့ရပါတယ်။

အတော်လေးစုံသွားပါပြီ။ ထပ်မံဖြည့်စွက်ချင်တာတစ်ခုကတော့ External Command ပါ။ System Command တွေကို Vim ကနေ လှမ်း Run တဲ့သဘောဖြစ်ပါတယ်။
- :![command]<enter> – [command] နေရာမှာ Run လိုတဲ့ Command ကို ထည့်ပေးရမှာပါ။

အခုပြောခဲ့တဲ့ Command တွေက Vim အမှန်တစ်ကယ်လုပ်နိုင်တာရဲ့ 2% လောက်ပဲ ရှိပါလိမ့်ဦးမယ်။ ဒါပေမယ့် ဒါတွေကို တစ်ခုမကျန် အကုန်မှတ်နေဖို့ မလိုပါဘူး။ Insert Mode ကို i နဲ့ပြောင်းရတယ်။ Normal Mode ကို Esc နဲ့ပြောင်းရတယ်ဆိုတာလောက် သိရင်ကို စသုံးလို့ရနေပါပြီ။ လက်တွေ့အသုံးပြုရင်းနဲ့ ဖြည်းဖြည်းချင်း ပိုပိုပြီး သိလာပါလိမ့်မယ်။
Command တွေကို မှတ်မိနေပြီဆိုရင် တွဲသုံးလို့ရတယ်ဆိုတာကိုလည်း သိထားသင့်ပါတယ်။ ဥပမာ 0y$ ဆိုရင်၊ (0) လိုင်းအစကိုသွားပါ၊ (y) Copy ကူးပါ၊ ($) လိုင်းအဆုံးထိ။ အဓိပ္ပါယ်ကတော့ လိုင်းအစကနေအဆုံးထိ Copy ကူးပါလို့ ခိုင်းလိုက်တာပါပဲ။
ကျွန်တော်ပြောသွားတဲ့အထဲမှာ ကျန်နေတာကတော့ Visal Mode အကြောင်းဖြစ်ပါတယ်။ Visual Mode ကို ပြောင်းဖို့ v ကို command အနေနဲ့ သုံးရပါတယ်။ Visual Mode က Text တွေကို Select လုပ်ဖို့အတွက်သုံးပါတယ်။ gVim မှာ Mouse ကိုသုံးပြီးတော့လည်း Select လုပ်လို့ ရနေတဲ့အတွက် Visual Mode အကြောင်းကို ထည့်ရှင်းပြမနေတော့ပါဘူး။ လောလောဆယ် Select လုပ်ဖို့အတွက်တော့ Mouse ကိုပဲသုံးပါ။ အဲ.. တစ်ခုလောက်တော့ မှတ်သင့်ပါတယ်။ Visual Mode ကို Ctrl+v နဲ့လည်း ပြောင်းလို့ရပါတယ်။ Ctrl+v နဲ့ပြောင်းမယ်ဆိုရင် Text တွေကို Column Select လုပ်လို့ရမှာ ဖြစ်ပါတယ်။ Column Select ဆိုတာ ပုံကိုကြည့်ပါ။

မပြီးသေးပါဘူး၊ နည်းနည်းတော့တောင့်ထားလိုက်ပါဦး။ နောက်ထပ် သိသင့်တာလေးတွေ ကျန်နေပါသေးတယ်။ Editor Setting နဲ့ပက်သက်တဲ့ Command လေးတစ်ချို့ မှတ်ထားသင့်ပါတယ်။
- :set ai<enter> – Set Automatic Indent
- :set nu<enter> – Toggle Line Number
- :set hlsearch<enter> – Search Hilight
အမှန်တော့ ဒီ Setting တွေကို Menu ကနေတစ်ဆင့်လည်း သတ်မှတ်လို့ ရပါတယ်။ Word Wrap တို့ Tab Width တို့လို Setting တွေလည်း ရှိပါသေးတယ်။ ဒီ Setting တွေကို Vim စဖွင့်ကတည်းက အလိုအလျှောက် သတ်မှတ်စေချင်ရင်တော့ Command တွေကို .vimrc File ထဲမှာ ထည့်ပေးထားရမှာဖြစ်ပါတယ်။ ကျွန်တော်လက်ရှိသုံးနေတဲ့ Plugin တွေနဲ့ vimrc ကို တစ်ပါတည်း Share ပေးလိုက်ပါတယ်။
Ready-Made .vimrc and .vim
Resource Zip File ကို Download လုပ်ပြီး အထဲက .vim Directory နဲ့ .vimrc File တို့ကို Home Folder အောက်မှာထားပါ (File တွေက Hidden ဖြစ်နေလို့ မမြင်ရရင် Ctrl+H နဲ့ ဖော်ကြည့်လို့ရပါတယ်။ KDE based Distro တွေမှာတော့ Alt+. ဖြစ်မယ်ထင်ပါတယ်)။ Windows မှာတော့ ကျွန် တော် မစမ်းရသေးလို့ အတိအကျမပြောနိုင်ပါဘူး။ ဒီနေရာတွေမှာ သွား ကြည့်ဖို့ လိုပါလိမ့်မယ်။
- http://www.thegeekstuff.com/2009/12/vim-editor-for-windows/
- http://superuser.com/questions/86246/where-should-the-vimrc-file-be-located-on-windows-7
- http://www.reddit.com/r/programming/comments/8sie0/how_do_i_set_up_a_vimrc_file_on_windows/
.vimrc နဲ့ .vim နှစ်ခုထည့်ပြီး gVim ကို Restart ပြန်လုပ်မယ်ဆိုရင် ခုလို တွေ့ရမှာဖြစ်ပါတယ်။

ကျွန်တော်ပေးထားတဲ့ Vim Resource Files တွေထဲမှာ Color Themes 100 ကျော်အပြင် -
စတဲ့ Plugins တွေပါ တစ်ပါတည်း ပါပြီးဖြစ်ပါတယ်။ Plugins တစ်ခုချင်းစီအကြောင်းနဲ့ အသုံးပြုပုံကို ထည့်သွင်းဖော်ပြချင်ပေမယ့် စာသိပ်ရှည်နေပြီဖြစ်လို့ ဒီအပိုင်းကိုတော့ ကိုယ်တိုင်ပဲ အင်တာနက်မှာ ရှာဖက်လိုက်ပါလို့ ပြောရင်း ကျွန်တော်တို့ရဲ့ Adventure ကြီးကို ဒီမှာပဲရပ်လိုက်ရအောင်ပါ။
ကျေးဇူးတင်ပါတယ်။
Resources
- http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
- http://blog.interlinked.org/tutorials/vim_tutorial.html
- http://net.tutsplus.com/articles/web-roundups/25-vim-tutorials-screencasts-and-resources/
- http://www.derekwyatt.org/vim/vim-tutorial-videos/
- http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me-to-use-vim-was-wrong/
- http://www.vim.org/scripts/script.php?script_id=625