مقدمه
در این مقاله قصد داریم تا کار با ویرایشگر متنی vi را بیاموزیم.vim در حقیت نسخه بهبود یافته (improve) ویرایشگر vi است . vi از دیرباز بروی سیستم عامل گنو/لینوکس با توزیع های مختلف نصب میباشد.
سوالی که احتمالا در ذهنتان نقش میبندد این است : چرا تا زمانی که با دستور echo و عملگر forward میتوانیم یک فایل را متنی را ساخته و متن مورد نظر را ذخیره کنیم از ویرایشگر بهره ببریم؟
در جواب باید گفت: پس از نوشتن متن مورد نظر با دستور echo و ذخیره متن،اگر قصد اعمال تغییر روی متن را داشته باشیم این امر امکان پذیر نیست ، مگر آنکه متن را مجدداً تایپ کنیم.اما با وجود ویرایشگر های متن (text editor) می توانیم هر زمان که بخواهیم روی متن خود تغییر اعمال میکنیم.
Modeهای مختلف در Vi
این ویرایشگر دارای حالت های مختلفی است اما ۳ حالت کاربردی تر آن شامل :
- Insert (edit) mode
- Vi command mode
- Host command mode
میباشد.
بصورت پیش فرض کاربر در command mode وارد خواهد شد.برای اعمال تغیرات باید به insert mode سوییچ کنیم که این کار با فشردن کلید “i” میسر میشود.
برای ذخیره سازی نوشته های خود باید در host command mode قرار داشته باشیم .برای سوویچ به این حالت اگر در insert mode باشیم با زدن دکمه Esc وارد vi command mode شده و با زدن ” : ” وارد حالت host خواهیم شد. حالا با تایپ w و زدن دکمه enter متن ذخیره خواهد شد و با زدن q و فشردن enterمیتوانیم خارج شویم.دلیل این کار انتقال اطلاعات از حافظه رم به دیسک جهت ذخیره سازی است.
البته اگر قصد داشته باشیم همزمان هم خارج بشویم و هم متن را ذخیره کنیم بصورت ترکیبی هر دو دستور را اینگونه تایپ کنیم
:wq
اعمال دستور vi باعث ساخت فایل نیز میشود.با این حال، اگر قصد اضافه کردن فایل داشت باشید و آن فایل وجود نداشته باشد؛ مستقیم دستور vi را اعمال کرده و پس از ذخیره و خروج فایل متنی نیز ساخته میشود.
برای اینکه در کنار هر خط شماره خط داشته باشیم :set num را تایپ میکنیم وبرای رفتن به یک خط خاص بعد از دو نقطه شماره خط را مینویسیم.
حرکت در متن
زمان تولد ویرایشگر vi کیبوردها استاندارد ۷۰ کلیدی داشتند و فاقد کلیدهای جهت نما بودند. برای جابجایی مکان نما(cursor) بین متن ، از کلید h برای جهت سمت چپ، از کلید j برای جهت پایین، از کلید k برای جهت بالا و از کلید L برای جهت راست استفاده میکنیم.
با زدن H به اولین خط مانیتور میرویم. با زدن L به آخرین خط مانیتور خواهیم رفت . اگر قصد کاوش در خطوط یک فایل را داشته باشیم با زدن gg به اولین خط در فایل و با زدن G به آخرین خط در فایل میرویم .
با زدن w به یک لغت جلوتر میرویم و با زدن b به یک لغت عقب تر خواهیم رفت.
علامت caret (^) مارا به اولین نوشته در یک خط خواهد برد و علامت $ما را به آخر خط خواهد برد.
برای رفتن به ۱ صفحه بالاتر ctrl+f را بصورت ترکیبی فشار خواهیم داد.
برای رفتن به ۱ صفحه پایین تر ctrl+b را به صورت ترکیبی فشار خواهیم .
حذف متن در ویرایشگرvi
با فشردن x حروف سمت راست مکان نما حذف خواهند شد و برای حذف حروف سمت چپ متن با فشردن Xاین کار انجام خواهد شد.
دکمه های ترکیبی نیز برای انجام این کار وجود دارند مثلا s یک کاراکتر از سمت راست را حذف کرده و وارد حالت insert mode میشود(البته دستور xiنیز همین عمل راانجام خواهدد داد)
S بزرگ کل خط را پاک کرده و بعد وارد insert mode میشود.
انتقال متن در ویرایشگر vi
کافیست تا d را قبل از کلید های جهت نما که در بالا اشاره کردم اضافه کنیم.
برای مثال :
d5l
یعنی ۵ کاراکتر به سمت راست را انتقال بده.
برای انتقال کل یک خط از دستور dd استفاده خواهیم کرد.اگر به این دستور ضریب بدهیم تعداد خط های بیشتری را انتقال خواهد داد.
اگر به جای d از حرف c استفاده کنیم همین کار را انجام میدهیم با این تفاوت که پس از انجا عمل cut وارد حالت insert خواهیم شد.
کپی کردن متن
برای انجام این کار از لغت y استفاده میکنیم .برای مثال
y100j
۱۴۵ خط به پایین را کپی کن.
yy کل خط را برای ما کپی میکند.
جایگذاری متن
اگر بخواهیم متن های انتقال پیدا کرده یا کپی شده که اکنون در clip board قرار دارند را جای گذاری کنیم از p کوچک برای جای گذاری در سمت راست جهت نما و Pبزرگ سمت چپ جهت نما جای گذاری خواهد کرد.این دستور نیز ضریب میپذیرد.