آموزش ادیتور vi در لینوکس
آموزش ادیتور vi در لینوکس
ویرایشگر vi یکی از قدیمیترین و ماندگارترین ابزارهای کار با متن در سیستمعاملهای شبه یونیکس و لینوکس است. شاید در نگاه اول ظاهر ساده و محیط متنی آن کمی خشک و حتی ترسناک به نظر برسد، اما وقتی منطق کار آن را بشناسیم، متوجه میشویم که vi بر اساس یک ایده بسیار هوشمندانه ساخته شده است؛ این برنامه میخواهد بدون نیاز به ماوس و با کمترین جابهجایی دست، امکان مشاهده، جستوجو، ویرایش و ذخیره متن را فراهم کند. به همین دلیل، vi برخلاف ویرایشگرهای معمولی که در آنها هر کلیدی که میزنیم مستقیماً به متن اضافه میشود، از مفهوم «حالتهای کاری» استفاده میکند. همین موضوع مهمترین چیزی است که باید در آغاز یادگیری vi فهمیده شود، چون تقریباً تمام رفتار این ویرایشگر بر همین پایه شکل گرفته است. آموزش vi در سایت فلسک دولوپر مناسب افراد مبتدی قرار داده شده اما در انتهای متن میتوانید به جدول راهنمای جامع دستورات vi دسترسی پیدا کنید.
وقتی یک فایل را با vi باز میکنید، معمولاً در حالتی قرار دارید که به آن حالت فرمان یا حالت عادی گفته میشود. در این وضعیت، کلیدهایی که روی صفحهکلید میزنید به جای آنکه درون متن نوشته شوند، به عنوان دستور تفسیر میشوند. برای مثال با بعضی کلیدها مکاننما حرکت میکند، با بعضی کلیدها یک کلمه حذف میشود، با بعضی دیگر جستوجو انجام میشود و با دستورهای دیگر فایل ذخیره یا بسته میشود. اگر بخواهید واقعاً چیزی تایپ کنید، ابتدا باید وارد حالت درج شوید. در این حالت، vi مانند یک ویرایشگر معمولی رفتار میکند و متن تایپشده در فایل قرار میگیرد. وقتی کار تایپ تمام شد، با زدن کلید Escape دوباره به حالت فرمان برمیگردید. بسیاری از کسانی که برای اولین بار vi را باز میکنند، چون تفاوت این حالتها را نمیدانند، سردرگم میشوند و تصور میکنند برنامه خراب است یا کار نمیکند. در واقع برنامه کاملاً درست عمل میکند، فقط باید بدانید هر لحظه در کدام حالت قرار دارید.
یکی دیگر از ویژگیهای مهم vi این است که برای محیطهای متنی و سرورها بسیار مناسب است. در بسیاری از مواقع، مخصوصاً هنگام مدیریت سیستمهای لینوکسی، ممکن است فقط به یک ترمینال متنی دسترسی داشته باشید و خبری از محیط گرافیکی نباشد. در چنین شرایطی vi به دلیل سبک بودن و در دسترس بودن، بسیار کاربردی میشود. حتی در بسیاری از توزیعهای لینوکس و سیستمهای یونیکس، یکی از نسخههای vi یا ویرایشگرهای سازگار با آن به طور پیشفرض نصب شدهاند. به همین دلیل، یاد گرفتن اصول آن یک مهارت پایه برای هر کسی است که بخواهد با لینوکس، سرور یا فایلهای متنی سیستمی کار کند.
شروع کار با vi در لینوکس
برای شروع کار با vi در لینوکس، کافی است در ترمینال نام برنامه را همراه با نام فایل بنویسید. اگر فایل وجود داشته باشد باز میشود و اگر وجود نداشته باشد، vi یک فایل جدید برای ویرایش در نظر میگیرد. برای نمونه اگر بنویسید vi test.txt، فایلی به نام test.txt باز میشود. حالا شما متن فایل را روی صفحه میبینید و مکاننما روی یکی از سطرها قرار دارد. در این لحظه اگر هر حرفی را بزنید، متن اضافه نمیشود، چون هنوز در حالت فرمان هستید. برای وارد کردن متن جدید، معمولاً از کلید i استفاده میشود. این کلید شما را وارد حالت درج میکند و از آن لحظه هر چیزی که تایپ کنید داخل فایل نوشته میشود. وقتی تایپ تمام شد، با فشردن Esc از حالت درج خارج میشوید و دوباره به حالت فرمان بازمیگردید.
در vi چند راه مختلف برای ورود به حالت درج وجود دارد و این تنوع باعث میشود ویرایش متن سریعتر انجام شود. اگر i را بزنید، متن از محل فعلی مکاننما درج میشود. اگر a را بزنید، متن بعد از محل فعلی نوشته میشود. اگر o را بزنید، یک خط جدید زیر خط فعلی ایجاد میشود و شما مستقیماً میتوانید در آن تایپ کنید. این تفاوتها در ابتدا شاید کوچک به نظر برسند، اما وقتی کمی با vi کار کنید، متوجه میشوید که همین فرمانهای ساده سرعت کار را خیلی بالا میبرند.
پیمایش در متن در vi
حرکت در فایل هم در vi اهمیت زیادی دارد. در ویرایشگرهای معمولی ما اغلب از کلیدهای جهتنما استفاده میکنیم و در vi هم در بسیاری از نسخهها این کلیدها کار میکنند، اما روش سنتی و اصلی حرکت با کلیدهای h، j، k و l است. این چهار کلید به ترتیب مکاننما را به چپ، پایین، بالا و راست میبرند. دلیل استفاده از این کلیدها این است که دست کاربر از روی ردیف اصلی صفحهکلید کمتر جابهجا شود. در آغاز ممکن است عجیب به نظر برسد، اما پس از مدتی کار کردن، استفاده از آنها بسیار طبیعی میشود. علاوه بر حرکت حرف به حرف، vi امکان حرکت سریعتر هم میدهد. برای مثال میتوان به اول یا آخر خط رفت، بین کلمات جابهجا شد یا به سطرهای خاصی از فایل پرید.
وقتی میخواهید متنی را اصلاح کنید، vi فرمانهای متنوعی در اختیارتان میگذارد. اگر بخواهید یک نویسه را حذف کنید، میتوانید از x استفاده کنید. اگر بخواهید یک کلمه یا یک خط کامل را حذف کنید، دستورهای دیگری وجود دارد. یکی از معروفترین آنها dd است که کل خط فعلی را حذف میکند. اگر اشتباهی چیزی را حذف کردید، vi امکان بازگردانی هم دارد و با u میتوانید آخرین تغییر را برگردانید. این قابلیت بسیار مهم است، چون در محیط متنی ممکن است با یک فرمان چند کلمه یا حتی یک خط کامل تغییر کند. دانستن اینکه راه برگشت دارید، باعث میشود با خیال راحتتری کار کنید.
سرچ و جست و جو در vi یا vim
جستوجو در فایلهای متنی یکی از نقاط قوت vi است. اگر فایلی طولانی داشته باشید و بخواهید یک کلمه یا عبارت خاص را پیدا کنید، کافی است در حالت فرمان علامت / را بزنید و سپس عبارت مورد نظر را تایپ کنید. بعد از زدن Enter، vi اولین مورد منطبق را پیدا میکند. اگر بخواهید به نتیجه بعدی بروید، از n استفاده میشود. اگر بخواهید به نتیجه قبلی برگردید، میتوانید N را بزنید. این روش جستوجو هنگام کار با فایلهای تنظیمات، لاگها، کدها و اسناد متنی بسیار مفید است.
یکی از مهمترین بخشهای کار با vi ذخیره و خروج از برنامه است، چون بسیاری از کاربران تازهکار دقیقاً در همین قسمت دچار مشکل میشوند. در vi معمولاً دستورهای مربوط به ذخیره و خروج از طریق حالت خط فرمان اجرا میشوند. برای ورود به این بخش، در حالت فرمان علامت : را میزنید. در پایین صفحه، محلی برای تایپ دستور ظاهر میشود. اگر :w را وارد کنید، فایل ذخیره میشود. اگر :q را وارد کنید، از برنامه خارج میشوید، البته فقط زمانی که تغییری ذخیرهنشده وجود نداشته باشد. اگر بخواهید هم ذخیره کنید و هم خارج شوید، میتوانید از :wq استفاده کنید. اگر هم بخواهید بدون ذخیره تغییرات از فایل خارج شوید، دستور :q! به کار میرود. این دستور زمانی مفید است که تغییراتی دادهاید اما تصمیم گرفتهاید آنها را نگه ندارید.
گاهی لازم است بخشی از متن را جایگزین کنید یا یک کلمه را در سراسر فایل عوض کنید. vi برای این کار هم قابلیت دارد. میتوان با دستورهای جایگزینی، یک واژه را با واژهای دیگر عوض کرد. این موضوع مخصوصاً زمانی مفید است که در یک فایل چند بار یک نام، مسیر یا عبارت را اشتباه وارد کرده باشید. به جای آنکه تکتک موارد را دستی اصلاح کنید، میتوانید از قابلیت جایگزینی vi استفاده کنید و سرعت کار را بالا ببرید. البته برای کاربران مبتدی بهتر است ابتدا با ذخیره، خروج، حرکت و ویرایش ساده راحت شوند و بعد سراغ این دستورهای پیشرفتهتر بروند.
آیا باید دستورات vi را حفظ کنیم؟
نکته مهم در یادگیری vi این است که قرار نیست در روز اول همه دستورها را حفظ کنید. در واقع، هدف اصلی این است که منطق برنامه را درک کنید. اگر بدانید vi بر پایه چند حالت مختلف کار میکند و هر حالت رفتار متفاوتی دارد، بخش بزرگی از راه را رفتهاید. بعد از آن کافی است چند فرمان پرکاربرد را تمرین کنید؛ مثلاً وارد حالت درج شدن، خارج شدن از آن، حرکت در متن، حذف یک خط، ذخیره فایل و خروج از برنامه. وقتی این چند مورد برایتان عادی شود، دیگر vi نه تنها سخت به نظر نمیرسد، بلکه به ابزاری سریع و قابل اعتماد تبدیل میشود.
برای درک بهتر، تصور کنید میخواهید یک فایل ساده متنی بسازید. ابتدا در ترمینال مینویسید vi note.txt. فایل باز میشود. سپس کلید i را میزنید تا وارد حالت درج شوید. حالا متن دلخواهتان را تایپ میکنید. وقتی نوشتن تمام شد، Esc را فشار میدهید تا از حالت درج خارج شوید. بعد :wq را مینویسید و Enter میزنید. در همین چند مرحله، شما یک فایل را باز کردهاید، در آن متن نوشتهاید، آن را ذخیره کردهاید و از برنامه خارج شدهاید. اگر همین سناریوی ساده را چند بار تکرار کنید، بخش زیادی از ترس اولیه شما از vi از بین میرود.
اگر بخواهیم چند دستور پایه را در ذهن نگه داریم، بهتر است آنها را به شکل کاربردی به خاطر بسپاریم. i برای نوشتن، Esc برای برگشت به حالت فرمان، x برای حذف یک نویسه، dd برای حذف یک خط، / برای جستوجو، u برای بازگردانی آخرین تغییر، :w برای ذخیره، :q برای خروج و :wq برای ذخیره و خروج. همین مجموعه کوچک برای شروع کاملاً کافی است و بسیاری از کارهای روزمره را پوشش میدهد.
در نهایت باید گفت vi یک ویرایشگر مبتنی بر عادت است. یعنی هرچه بیشتر با آن کار کنید، طبیعیتر و سریعتر میشود. شاید در ابتدا احساس کنید که استفاده از یک ویرایشگر گرافیکی بسیار سادهتر است، اما وقتی در محیطهای سروری، سیستمهای راه دور یا شرایطی که فقط ترمینال در اختیار دارید قرار بگیرید، ارزش واقعی vi را درک خواهید کرد. این ابزار به شما کمک میکند بدون وابستگی به محیطهای سنگین، فایلهای متنی را مدیریت کنید و با سرعت مناسبی تغییرات لازم را انجام دهید. برای یک کاربر مبتدی، بهترین روش یادگیری vi این است که از چند فرمان اساسی شروع کند، آنها را در فایلهای آزمایشی تمرین کند و به تدریج فرمانهای بیشتری را یاد بگیرد.
راهنمای جامع دستورات کار با vi در لینوکس
| دستور | کاربرد | توضیح ساده |
|---|---|---|
vi filename |
باز کردن فایل | فایل را برای ویرایش باز میکند |
i |
ورود به حالت درج | تایپ از محل فعلی مکاننما شروع میشود |
a |
درج بعد از مکاننما | متن بعد از محل فعلی اضافه میشود |
o |
ایجاد خط جدید | یک خط جدید زیر خط فعلی باز میکند |
Esc |
خروج از حالت درج | بازگشت به حالت فرمان |
h |
حرکت به چپ | مکاننما یک حرف به چپ میرود |
j |
حرکت به پایین | مکاننما یک خط پایین میرود |
k |
حرکت به بالا | مکاننما یک خط بالا میرود |
l |
حرکت به راست | مکاننما یک حرف به راست میرود |
0 |
رفتن به اول خط | مکاننما به ابتدای خط فعلی میرود |
$ |
رفتن به آخر خط | مکاننما به انتهای خط فعلی میرود |
w |
رفتن به کلمه بعدی | برای حرکت سریع بین کلمات |
b |
رفتن به کلمه قبلی | حرکت به ابتدای کلمه قبل |
x |
حذف یک نویسه | کاراکتر زیر مکاننما را حذف میکند |
dd |
حذف یک خط | کل خط فعلی را حذف میکند |
yy |
کپی یک خط | خط فعلی را کپی میکند |
p |
چسباندن | متن کپی یا بریدهشده را بعد از مکاننما قرار میدهد |
u |
بازگردانی | آخرین تغییر را برمیگرداند |
/text |
جستوجوی رو به جلو | عبارت text را در ادامه فایل پیدا میکند |
?text |
جستوجوی رو به عقب | عبارت text را در بخشهای قبلی فایل پیدا میکند |
n |
نتیجه بعدی جستوجو | به مورد بعدی میرود |
N |
نتیجه قبلی جستوجو | به مورد قبلی میرود |
:w |
ذخیره فایل | تغییرات را ذخیره میکند |
:q |
خروج | در صورت نداشتن تغییر ذخیرهنشده خارج میشود |
:wq |
ذخیره و خروج | فایل را ذخیره میکند و میبندد |
:q! |
خروج بدون ذخیره | تغییرات ذخیرهنشده را نادیده میگیرد |
:%s/old/new/g |
جایگزینی در کل فایل | همه oldها را با new عوض میکند |