منبع اصلی نوشتار زیر در این لینک قرار دارد

راهنمای ویرایشگر vi – بخش نخست

تمامی سیستم عامل های شبه یونیکس (Unix-Like Operating Systems) بر اساس فایل هستند و این به این معنی است که از  پیکربندی سیستمی و  پیکربندی سرویس هایی مانند “وب سرور Apache” و دیگر سرویس ها و همچنین دیوایس های سخت افزاری همگی بر اساس فایل هایی هستند که می بایست از خط فرمان توسط ویرایشگر هایی مانند vi یا از محیط دسکتاپ توسط ویرایشگر هایی مانند gedit، باز شده و تغییرات لازم در آنها اعمال شود.vi دو مد (Mode) دارد : مُد “Command” و مُد “Insert”. اینکه چطور وارد مد Insert شوید بسه به عملی است که می خواهید انجام دهید. به هر حال وقتی با vi فایلی را باز یا فایلی را ایجاد می کنید، میان این دو مد سوییچ خواهید کرد.

باز کردن فایل ها

با دستور زیر فایلی را در مسیر مشخص باز می کنیم :

vi /path/to/file

و دستور زیر نیز فایلی جدید را برای ایجاد شدن و ویرایش و ذخیره آن باز می کند :

vi /path/to/new_file

در فایل مشخص شده در جلوی دستور vi، کاراکتر ~ در ابتدای هر خط نشانه خالی یا empty بودن آن خط است :

اگر vi را بدون مشخص مسیر هیچ فایلی و به تنهایی در خط فرمان اجرا کنید، شکل زیر را مشاهده خواهید کرد :

نسخه ویرایشگر از شکل بالا مشخص است. فلش بزرگ دستور هایی را نشان می دهد که یک علامت : در ابتدای آنها وجود دارد که نشان دهنده مد Command است. فایلی را باز کرده اید و آنرا خوانده و می  خواهید آنرا ببندید و یا تغییراتی را در آن اعمال کرده اید و می خواهید فایل را بدون اعمال تغییرات در فایل آنرا ببنید برای این کار (بستن فایل) باید وارد مد Command شوید. برای وارد شدن به مد Command کلید Esc را فشرده و سپس کلید : را کلیک و در جلوی آن دستور مورد نظر را وارد کنید.

به طور مثال از کلید q برای خروج یا quit استفاده می کنیم که باید نخست کلید Esc را فشرده و سپس کلید : را کلیک کرده و در جلوی آن کلید یا حرف q را نوشته و در نهایت Enter را بزنیم. یا برای مشاهده راهنمای ویراشگر، یا باید کلید F1 را استفاده کنیم و یا اینکه با کلیک کلید های Esc و سپس : ، عبارت help را نوشته و Enter کنیم. به هر حال برای وارد یا سوییچ به مد Command :

  • نخست کلید Esc را فشرده
  • و سپس کلید : را کلیک کرده
  • و در جلوی آن دستور مورد نظر را نوشته و Enter می کنیم. توجه کنید از کلید Esc برای خروج از یک مد و آماده شدن برای رفتن به مد دیگر استفاده می کنیم و این به این معنی است که اگر در حال حاظر در هیچ مدی قرار ندارید یعنی دستور vi را اجرا کرده اید ولی وارد هیچ مدی قرار ندارید نیازی به فشردن کلید Esc ندارید.

برای باز کردن چندین فایل در یک خط، مسیر و نام فایل ها را در جلوی دستور vi می آوریم :

vi file1 file2 file3

یا به طور مثال می خواهیم تمامی فایل هایی به txt. ختم می شوند را در زیر دایرکتوری خانگی باز کنیم :

vi ~/*.txt

و یا برای باز کردن تمامی فایل هایی که آخرین کاراکتر کارکتر آنها به یک عدد ختم می شود و تمامی آنها با رشته file آغاز می شوند :

[vi file[0-9

و یت اینکه فایل هایی که با رشته chapter آغاز و به دنبال آن تنها یک کاراکتر (و آن کارکتر هر چیزی می تواند باشد که آنرا با علامت سوال ?  مشخص کرده ایم) می آید و سپس بک نقطه و دربعد نقطه هم هر تعداد رشته دلخواه می آید.

*.?vi chapter

برای رفتن به فایل بعدی از دستور n: استفاده می کنیم (گفتیم برای رفتن از مد Insert به مد Command نخست کلید Esc و سپس کلید : را فشرده و سپس دستور را وارد می کنیم) و برای رفتن به فایل های قبلی از کلید های ^+Ctl یا Ctl+shift+6 استفاده می کنیم. در پایین پنجره دستور vi وقتی که فایلی را باز می کنید رشتهای شبیه به زیر نوشته می شود که نام فایل و خطی که نشانگر ماوس (مکان نما یا Cursor) در آن قرار دارد و فایل شامل 7 کارکتر است.

file1″ 1L, 7C”

برای باز کردن فایلی پس از اینکه دستور vi را اجرا کرده اید باید از دستور e: استفاده کنید. به طور مثال دستور vi را به تنهایی اجرا کرده اید و شکل 2 نشان داده می شود و یا اینکه در حال حاظر فایلی را باز کرده اید و می خواهید بدون بستن این فایل، فایل جدیدی را باز کنید. برای این کار

  • اگر در مد Insert هستید با کلیک کردن کلید Esc از این مد خارج شوید و سپس کلید : را نوشته و جلوی آن حرف یا دستور e را وارد کردن و با یک فاصله از e مسیر و نام فایل را وارد کنید. (چگونگی سوییچ میان آنها در بالا گفته شده است)

e /path/to/file:

در شکل زیر می بینید که فایل file1 باز شده است و می خواهیم که فایل file2 را که در دایرکتوری خانگی قرار دارد را باز کنیم، پس دستور e: و با یک فاصله مسیر منتهی به file2 را نوشته ایم و سپس Enter می زنیم.

ذخیره تغییرات

vi از دستور w: برای ذخیره (Save) کردن فایل فعلی استفاده می کند. با اجرای w: نسخه جدید بر روی نسخه پیشین از تغییرات ذخیره می شود. برای ذخیره کردن :

  • اگر در مد Insert هستید نخست کلید Esc را فشرده و سپس w: را نوشته و سپس Enter کنید.

برای اینکه vi را مجبور کنیم تا تغییرات را ذخیره کند، یک ! در اتنهای دستور w: قرار می دهیم.

!w:

می خواهید که فایلی فعلی را که باز کرده و تغییرات را در آن اعمال کرده اید و یا حتی تغییری را در آن اعمال نکرده اید را با نامی جدید ذخیره کنید. برای این کار دستور w: را وارد کرده و سپس جلوی آن و با یک فاصله نام و مسیر جدید را مشخص کنید.

w /path/to/new/file_name:

پس از اجرای دستور بالا فایل قبلی باز نگه داشته می شود، ولی شما به فایل جدید که نام و مسیر آنرا مشخص کرده اید سوییچ می شوید، و لازم است دستور w: را برای ذخیره تغییرات بر روی فایل جدید نیز اجرا کنید. توجه کنید که شما نمی توایند نام و مسیر فایل فعپلی را با w: تغییر دهید. در صورتی که از w: به تنهایی استفاده می کنید تغییرات بر روی فایل و محتوای پیشین نوشته می شود، و w: پس از اعمال تغییرات فایل را نمی بنند و آنرا باز نگه می دارد.

می خواهید که تنها بخشی از فایل را ذخیره کنید پس باید از دستور به فرمت زیر استفاده کنید :

!n,mw:

به جای n اولین خط از بخش انتخابی و m آخرین خط از بخش انتخابی است. به طور مثال n=1 و m=8 یعنی از اولین خط فایل تا خط هشنم و n=3 و m=8 یعنی از سومین خط فایل تا هشتمین خط فایل. w یعنی write و نماد ! محتوای بخشی را که انتخاب کرده اید را بر روی محتوای فعلی فایل بازنویسی می کند. و اگر بخواهید بخش انتخابی را در مسیری جدید و با نامی جدید ذخیره کنید باید مانند آنچه که در بالا گفته شد عمل کنید.

n,mw! /path/to/new/file_name:

و اگر بخواهید که محتوای فایل فعلی را در انتهای فایل دیگری ادغام کنید، باید از دستور w: که جلوی آن مسیر فایل مورد نظر آمده است را استفاده کنید. در دستور زیر << علامتی است که برای وارد کردن یک رشته به انتهای فایل بدون اینکه محتوای قبلی فایل از میان برود استفاده می شود. نماد دیگر < است که بر خلاف قبلی محتوا یا رشته جدید را با محتوای فعلی فایل بازنویسی کرده و محتوای پیشین از میان می رود.

w >> /path/to/exist/file_name:

برای ذخیره بخشی از فایل  کنونی در انتهای فایلی دیگر بی آن که محتوای فایل از میان برود (در انتهای فایل درج شود) از دستور زیر استفاده کنید که توضیح آن در بالا آمده است.

n,mw! /path/to/exist/file_name:

همانطور که گفته شد پس از اجرای w: فایل باز نگه داشته می شود، برای اینکه تغییرات ذخیره و سپس فایل بسته شود و به محیط خط فرمان بازگردیم یکی از دستور های wq: و یا x: را استفاده می کنیم. همانطور که گفته شد q: برای quit یا خروج است و w هم برای write یا نوشتن پس wq نخست بر روی فایل فعلی می نویسد و سپس از آن خارج می شود. دستور x: معادل wq: است.

گاهی مشکلاتی پیش می آید که نمی توانید از دستور به طور نرمال خارج شوید. از دستور !x: برای اعمال تغییرات و مجبور کردن به خروج و بازگشتن به خط فرمان استفاده می کنیم.

!x:

همانطور که گفته شد !w: تغییرات را به اجبار اعمال می کند ولی ماهیت w: این است که فایل را نمی بندد ولی x: تغییرات را اعمال و فایل را می بندد.

بستن فایل

فایلی را با ویراشگر vi باز می کنید و آنرا بدون اینکه تغییراتی در آن اعمال کنید می خوانید و سپس می خواهید که آنرا ببندید، باید از دستور q: استفاده کنید. حال اگر فایل را باز کرده و تغییراتی را هم در آن اعمال کرده باشید و می خواهید بدون آنکه تغییرات بر روی فایل اعمال شوند، فایل را ببندید، بازهم از دستور q: استفاده کنید. اگر در بستن فایل مشکلی باشد و بخواهید vi را مجبور کنید بدون آنکه تغییرات را اعمال کند، فایل را ببندد، باید از دستور !q: استفاده کنید.

خلاصه

در این مطلب آموزشی که بخش نخست بود با مد Command  یا Command Mode ویرایشگر vi اشنا شدید. برای سوییچ میان مد Insert به مد Coomand باید نخست کلید Esc را فشرده و سپس کلید : را زده و جلوی آن دستور مورد نظر را نوشته و Enter کنید. سوییچ و یا ورود به مد Insert بسته به عملی است که می خواهید انجام دهید که در مطلب های بعدی گفته خواهد شد.



برچسب ها : ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد