۵.۸ ویرایش فایل با کمک vi
در سیستم عامل لینوکس، ابزارهای مختلفی برای ویرایش فایلهای متنی در اختیار کاربر خواهد بود. بعضی از این ابزارها در محیط خط فرمان، بعضی در محیط میزکار (محیط گرافیکی) و بعضی در هر دو حالت قابل استفاده میباشند.
از ویرایشگرهای تحت خط فرمان میتوان nano ، pico ، vi ، vim ، emacs را نام برد. و از ویرایشگرهای تحت محیط گرافیکی میتوان به gedit (ویرایشگر پیشفرض گنوم)، kedit ، kate ، gvim اشاره کرد.
ویرایشگر متنی تحت محیط خط فرمان - vi :¶
اگرچه در حالت گرافیکی بواسطه استفاده از موس و گرافیک کار ویرایش بسیار راحت است، ولی در سیستمهای فاقد گرافیک که فقط در محیط خط فرمان کار میکنند، تنها از کیبورد میتوان استفاده کرد. ازینرو، ویرایشگر vi در چندین حالت (مد) قابل استفاده است.
حالت نرمال : noraml :¶
شما در ابتدای ورود به ویرایشگر، در حالت نرمال هستید و در صورت ورود به حالتهای دیگر، با استفاده کلید " escape " به حالت نرمال باز خواهید گشت.
حالت ویرایش : insert :¶
برای ورود به حالت ویرایش، در محیط نرمال، کلید " i " را وارد میکنیم.
حالت فرمان : command :¶
با استفاده از کلید " : " میتوان وارد محیط فرمان شد. درصورتی که بخواهید بر روی فایل، عملیات خاصی را اعمال کنید، باید به این محیط وارد شوید. بعنوان مثال برای ذخیره فایل، از حالت ویرایش، وارد حالت فرمان میشویم و فرمان ذخیره فایل را وارد میکنیم.
حالت visual :¶
با فشردن کلید " v " وارد محیط visual میشویم. در این حالت میتوان بخشهایی از متن را برای انجام یک عملیات انتخاب کرد. همچنین با استفاده از گزینه " control+v " وارد حالت visual block میشویم و در این حالت، قادر خواهیم تا قسمتهای مختلفی از یک خط را جهت انجام عملیات مورد نظر انتخاب کنیم.
همانطور که پیشتر اشاره شد، در سیستم عامل لینوکس هر چیزی بصورت فایل خواهد بود و در این بین تعداد بسیاری از فایلها را انواع فایلهای اسکریپتی، تنظیمات، ثبت وقایع و ... تشکیل میدهند. لذا وجود یک ویرایشگر متن ساده ولی کارآمد و قوی بخصوص در محیط خط فرمان از الزامات است. وجود ویرایشگر متن در محیط خط فرمان ازین رو حائز اهمیت است که در بسیاری از سرورها، سامانه فاقد محیط گرافیکی است و کلیه امور تحت محیط خط فرمان انجام میپذیرد.
یکی از این ویرایشگرها که بصورت پیشفرض روی اکثر توزیعهای سیستم عامل لینوکس نصب شده، ویرایشگر وی (vi) است که با استفاده از دستوری با همین نام از طریق خط فرمان در دسترس است.
$ vi
چنانچه بخواهید با استفاده از این برنامه فایلی متنی ایجاد و ویرایش نمایید، میتوانید از دستور زیر استفاده کنید :
$ vi test_file.txt
اگر در محیط خط فرمان، در مسیری که قرار دارید، فایلی که نام آنرا پس از دستور وی قرار میدهید موجود باشد، وی آنرا فراخوانی نموده و محتویات آنرا به شما نمایش خواهد داد. ولی در صورت عدم وجود فایل مورد نظر، وی اجرا شده و بصورت موقت یک فایل متنی خام برای ویرایش در اختیار شما میگذارد. در نهایت تغییرات، پس از ذخیره شدن بصورت فایلی با همان نام در اختیار شما خواهند بود.
دقت داشته باشید که اجرای تنهای وی بدون ذکر نام فایل هم، این ویرایشگر را اجرا کرده و امکان ایجاد و ویرایش فایل متنی را در اختیار شما می گذارد، ولی در این آموزش راه بهتر و سریعتر و البته آسانتر ذکر گردیده است. وی پس از اجرا و ایجاد یا باز نمودن فایل مورد نظر، منتظر فرمان ورودی خواهد بود و پس از دریافت فرمان از کاربر اقدام به انجام امور می کند. در ادامه با تعدادی از فرامین وی آشنا خواهیم شد.
برای شروع هنگامیکه شما حین اجرای وی یک فایل را ایجاد و یا فراخوانی میکنید، وی پس از نمایش فایل منتظر فرمان خواهد بود. در این وضعیت با استفاده از کلیدهای پیمایشی می توانید قسمتهای مختلف متن را مشاهده کنید.
حال با زدن کلید " i " وارد وضعیت ویرایش شده و در این وضعیت قادر به ویرایش متن خود خواهید بود. دقت داشته باشید که در این حالت در قسمت پایین محیط وی عبارت " INSERT " مشاهده میشود.
- با استفاده از کلید " i " ، از قبل از مکاننما ویرایش شروع میشود. و با استفاده از کلید " a "، عملیات ویرایش از بعد از مکاننما شروع خواهد شد.
فرامین insert در حالت normal :¶
insert از قبل از مکاننما | " i " |
insert از بعد از مکاننما | " I " |
اضافه کردن بعد از مکاننما | " a " |
اضافه کردن قبل از مکاننما | " A " |
باز کردن یک خط جدید بعد از خط جاری | " o " |
باز کردن یک خط جدید قبل از خط جاری | " O " |
جایگزین کردن یک کاراکتر | " r " |
جایگزین کردن چندین کاراکتر | " R " |
فرامین جابجایی در حالت normal :¶
جابجایی به یک کاراکتر به سمت چپ | " h " |
جابجایی به یک خط پایین | " j " |
جابجایی به یک خط بالا | " k " |
جابجایی به یک کاراکتر به سمت راست | " l " |
جابجایی به بالای صفحه | " H " |
جابحایی به پایین صفحه | " L " |
جابجایی به پایان فایل | " G " |
جابجایی به کلمه بعدی | " w " |
جابجایی به کلمه قبلی | " b " |
فرامین ویرایش در حالت normal :¶
کپی چند کاراکتر، کلمه و یا خط از محل فعلی مکاننما. به جای X میتوانید از یکی از فرامین جدول قبلی استفاده کنید. | " yX " |
کپی یک خط | " yy or Y " |
حذف چند کاراکتر، کلمه و یا خط از محل فعلی مکاننما. به جای X میتوانید از فرامین جابجایی در جدول قبلی استفاده کنید. | " dX " |
حذف یک خط | " dd " |
حذف از محل مکاننما تا آخر خط. این دستور با d$ برابر است | " D " |
چسباندن بعد از مکاننما | " p " |
چسباندن قبل از مکاننما | " P " |
undo | " u " |
همچنین میتوان از دستورات ترکیبی برای ویرایش متن استفاده کرد. بعنوان مثال :
-
حذف یک کلمه : dw
-
حذف چهار کلمه : d4w
-
کپی چهار خط : y4j
-
پاک کردن از مکاننما تا پایان خط : $d
فرامین جابجایی در حالت normal :¶
جابجایی به ابتدای خط جاری | " 0 (zero) " |
جابجایی به اولین کاراکتر غیر خالی خط جاری | " ^ " |
جابجایی به انتهای خط جاری | " $ " |
جابجایی به یک صفحه قبل | " contorl+B " |
جابجایی به یک صفحه بعد | " control+F " |
پس از ویرایش متن خود، برای خروج از وضعیت ویرایش کافیست کلید " ESC " را فشار دهید. با این کار وی از حالت ویرایش خارج شده و وارد وضعیت دریافت فرمان شده، و مجدد منتظر دریافت فرمان جدید کاربر خواهد بود.
حال برای ذخیره تغییرات و خروج از فایل از فرمان " wq: " ، و برای خروج از فایل بدون ذخیره تغییرات از فرمان " !q: " استفاده میشود. در صورتی که صرفا مایل به ذخیره تغییرات بدون خروج از محیط وی هستید، می توانید از دستور " w: " استفاده کنید.
در صورتی که فایلی را فراخوانی کنید و بدون اعمال تغییر در فایل بخواهید از وی خارج شوید، می توانید از فرمان " q: " استفاده کنید. اما دقت داشته باشید که اگر پس از فراخوانی فایلی، در آن تغییری ایجاد نمایید، هنگام خروج از وی با استفاده از فرمان " q: " ، وی به شما اخطار خواهد داد که برای خروج از وی بدون ذخیره تغییرات از فرمان " q!: " استفاده کنید.
فایل (آزمایشی) file را بجای فایل موجود باز میکند. برای force کردن این امر میتوان از " e! " استفاده کرد. | " :e file " |
محتویات file را بعد از مکاننما کپی میکند | " :r file " |
متن موجود را در file ذخیره میکند. برای اضافه کردن متن موجود به فایل از " :w >> " استفاده میشود. | " :w file " |
در صورتی که چندین فایل را باز کرده باشید، فایل بعدی را نمایش میدهد. در صورت نیاز به force و ذخیره نکردن فایل قبلی از " :n! " استفاده میکنیم | " :n , :next " |
فایل قبلی را نمایش میدهد | " :previous " |
نکته حائز اهمیت دیگر اینست که همانطور گفته شد، وی بیشتر برای تغییر و ویرایش فایل های اسکریپتی و فایل های متنی تنظیمات سیستم مورد استفاده قرار میگیرد. از آنجا که بیشتر این فایلها توسط کاربر روت ( root ) ایجاد شده و دیگر کاربران اجازه ویرایش آنها را ندارند، وی اینگونه فایل ها را بصورت فقط خواندنی یا read-only فراخوانی میکند.
هنگامی که وی فایلی را بصورت فقط خواندنی فراخوانی میکند، در قسمت پایین محیط برنامه وی، کنار نام فایل عبارت " [ readonly ] " قابل مشاهده است. در این حالت با ورود به وضعیت ویرایش، متن فایل ویرایش خواهد شد ولی شما اجازه ذخیره تغییرات را نخواهید داشت و هنگام ذخیره فایل با اخطار روبرو خواهید شد و چاره ای جز خروج از وی بدون ذخیره تغییرات نخواهید داشت.
برای ویرایش اینگونه فایلها کافیست از طریق کاربر root اقدام به ویرایش فایل مورد نظر کنید.
# vi secret_file.txt
طبق مثال فوق، پیش از اجرای برنامه ویرایشگر، وارد کاربر ریشه ( root ) در لینوکس شده، و بعد از آن برنامه را بهمراه فایل مورد نظر فراخوانی کردهایم.
در ادامه با چند فرمان ساده و پر استفاده وی آشنا میشویم.
چنانچه بخواهید کلمهای را در متنی جستجو کنید، پس از فراخوانی فایل و در وضعیت دریافت فرمان وی، از فرمان " / " استفاده میکنیم. بدین صورت که پس از زدن کلید " / " بدون فاصله کلمه مورد نظر برای جستجو را وارد کرده و تایید میکنیم. در صورت یافتن کلمه مورد نظر در متن، وی مکان نما را به ابتدای کلمه یافت شده در متن جابجا خواهد کرد.
برای مشاهده نتایج بعدی جستجو از فرمان " n " و برای مشاهده نتایج قبلی از فرمان " N " استفاده میکنیم.
تا اینجا با فرامین و امکانات پر استفاده و نسبتا ضروری وی آشنا شدیم. در آخر خاطر نشان میشوم ویرایشگر متن وی دارای امکانات و قابلیتهای متنوع و خوبی برای رفع نیاز کاربران است که با کمی جستجو در اینترنت و یا خواندن صفحات راهنمای این برنامه در لینوکس با آنها آشنا خواهید شد.