مقدمه
در این مقاله قصد داریم تا کار با ویرایشگر متنی 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” میسر میشود.
البته کلید های دیگری نیز این عمل را انجام میدهند که به اختصار در جدول زیر وجود دارند.
عمل | کاراکتر |
از ابتدای خط وارد insert mode میشود. | I |
از سمت چپ نشانگر وارد insert mode میشود. | i |
از آخر خط وارد insert mode میشود. | A |
از سمت راست نشانگر وارد insert mode میشود. | a |
یک خط جدید پایین مکان نما ایجاد کرده و از آن خط وارد insert mode میشود. | o |
یک خط جدید بالای مکان نما ایجاد کرده و از آن خط وارد insert mode میشود. | O |
برای ذخیره سازی نوشته های خود باید در host command mode قرار داشته باشیم .برای سوویچ به این حالت اگر در insert mode باشیم با زدن دکمه Esc وارد vi command mode شده و با زدن ” : ” وارد حالت host خواهیم شد. حالا با تایپ w و زدن دکمه enter متن ذخیره خواهد شد و با زدن q و فشردن enterمیتوانیم خارج شویم.دلیل این کار انتقال اطلاعات از حافظه رم به دیسک جهت ذخیره سازی است.
البته اگر قصد داشته باشیم همزمان هم خارج بشویم و هم متن را ذخیره کنیم بصورت ترکیبی هر دو دستور را اینگونه تایپ کنیم
:wq
اعمال دستور vi باعث ساخت فایل نیز میشود.با این حال، اگر قصد اضافه کردن فایل داشت باشید و آن فایل وجود نداشته باشد؛ مستقیم دستور vi را اعمال کرده و پس از ذخیره و خروج فایل متنی نیز ساخته میشود.
برای اینکه در کنار هر خط شماره خط داشته باشیم set nu: را تایپ میکنیم وبرای رفتن به یک خط خاص بعد از دو نقطه شماره خط را مینویسیم.
حرکت در متن
زمان تولد ویرایشگر 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بزرگ سمت چپ جهت نما جای گذاری خواهد کرد.این دستور نیز ضریب میپذیرد.