در سرور لینوکس ابزارها و روشهای مختلفی برای ویرایش فایلهای متنی وجود دارد که در این مطلب از سری آموزشهای لینوکس قصد داریم با ویرایشگر vi بیشتر آشنا شده و به آموزش ویرایشگر vi در لینوکس بپردازیم. از پرکاربردترین این ابزارها میتوان به nano ،vi و VIM اشاره کرد که در اصل ویرایشگر VIM، نوع پیشرفته و توسعه یافته همان vi است. میتوان از vi برای ایجاد فایل جدید، ویرایش و نیز خواندن فایلهای موجود استفاده نمود. برای استفاده و آشنایی با ویرایشگر vi در این مقاله توضیحات جامعی را ارائه خواهیم داد.
سیستمعامل رایانه لینوکس
لینوکس یکی از سیستمهای عامل پرکاربرد مانند ویندوز، iOS و Mac OS است. در واقع، یکی از محبوبترین پلتفرمهای گوشیهای موبایل یعنی اندروید، توسط سیستم عامل linux پشتیبانی میشود. مجموعه نرمافزارهایی که منابع یک سیستم را مدیریت میکنند، سیستم عامل نام دارند. سیستم عامل یا OS مخفف کلمه operating system است و اگر آن را جستجو کنید، خواهید دید که بر اساس استانداردهای کامپیوتر و فناوری اطلاعات، عبارت « software that manages computer hardware resources » برای شما نمایش داده میشود.
منظور از این عبارت این است که، سیستم عامل ارتباط بین نرمافزار و سختافزار را مدیریت میکند. بدون سیستم عامل (OS) نرمافزارهای سیستم عمل نخواهند کرد. با جستجوی کلمه لینوکس در موتور جستجوی گوگل به عبارت « family of Unix-like operating systems that use the Linux kernel and are open source» برخورد خواهید کرد، که به معنی سیستم عاملی از خانواده یونیکس است که از کرنل لینوکس استفاده کرده و یک سیستم عامل متن باز محسوب میشود. متن باز بودن این سیستم عامل یک مزیت مهم در اضافه کردن کدهای منبع به آن است.
آموزش ویرایشگر vi در لینوکس
برای استفاده از ویرایشگر vi در لینوکس، ابتدا باید به محیط ویرایشگر وارد شوید. در ادامه روش کار را توضیح خواهیم داد:
شروع کار با vi
با وارد کردن دستور زیر میتوانید یک فایل متنی ساخته و به محیط ویرایش آن بروید.
ساختار
vi filename
مثال
vi azaronline.txt
در این مثال ما فایلی به نام azaronline.txt میسازیم.
دقت داشته باشید که اگر نام فایل وارد شده وجود داشته باشد، همان فایل را برای ویرایش باز میکند و در صورتی که وجود نداشته باشد یک فایل جدید برای شما میسازد.
نتیجه فرمان فوق به شکل زیر خواهد بود:
در زیر مکاننما، در ابتدای هر خط کاراکتر “~” را مشاهده خواهید کرد. این کاراکتر نشاندهنده خط استفاده نشده است. اگر خطی با کاراکتر “~” شروع نشود و نوشتهای هم نداشته و خالی باشد، نشاندهنده این است که در آن خط از space ، tab و یا سایر کاراکترهای غیرقابل مشاهده استفاده شده است. تا اینجا توانستهاید با این ویرایشگر فایلی را باز کنید. اما قبل از انجام هر اقدامی به توضیح مفاهیم جزئی ولی مهم زیر میپردازیم.
مد یا حالات اجرایی ویرایشگر vi در لینوکس
هنگام کار با ویرایشگر vi با دو مد زیر روبرو خواهید شد:
- مد Command یا مد دستوری: این مد شما را قادر خواهد کرد تا کارهای مدیریتی مثل ذخیره فایل، اجرای دستورات، جابجا نمودن نشانگر، cut و paste کردن خطوط و کلمات و جستجو و جایگذاری را انجام دهید. در مد Command هرچه که تایپ کنید بهعنوان دستور تفسیر خواهد شد.
- مد Insert یا مد درج: این مد شما را قادر خواهد کرد تا متنی را در فایل درج نمایید. هر چیزی که در این مد تایپ شود، بهعنوان ورودی تلقی شده و در فایل درج میشود.
vi به صورت پیشفرض در مد دستوری یا Command باز میشود و برای وارد کردن متن در فایل باید وارد مد Insert شوید.
برای وارد شدن به مد Insert باید کلید i را فشار دهید. زمانی که در مد Insert هستید مطابق شکل زیر عبارت Insert در پایین صفحهنمایش داده میشود. برای خروج از مد Insert و ورود به مد Command باید کلید ESC را فشار دهید.
نکته: اگر نمیدانید که در کدام مد هستید کلید ESC را دوبار فشار دهید با این کار در مد Command خواهید بود. برای درک تفاوت دو مد یا حالت مذکور بهتر است فایلی را با vi باز کنید سپس شروع به تایپ چند کاراکتر نمایید و سپس به مد Command وارد شوید.
خارج شدن از vi
برای خروج از vi از دستور q: استفاده می شود.
به طوری که ابتدا کلید ESC را زده و پس از ورود به مد Command عبارت q: را تایپ کنید.
در صورتی که تغییراتی در فایل ایجاد کرده اید ولی می خواهید بدون درج تغییرات از فایل خارج شوید دستور !q: را وارد نمایید.
خروج از ویرایشگر بدون ذخیره تغییرات
با دستور w: میتوانید تغییرات اعمال شده را ذخیره نمایید.
میتوانید فرمان ذخیره را با فرمان خروج ترکیب نموده و از دستور wq: برای ذخیره و خروج از ویرایشگر استفاده نمایید.
توجه: بعد از زدن دستورات خروج و ذخیره کلید اینتر را فشار دهید.
در نظر داشته باشید می توانید به جای دستور wq: برای ذخیره سازی و خروج؛ از دستور ZZ استفاده نمایید. ( باید از Z بزرگ استفاده شود. )
برای ذخیره فایل با نامی دیگر ، می توانید پس از وارد کردن دستور w: نام فایل جدید را وارد کنید به مانند زیر
:w azar2.txt
نحوه ذخیره فایل در ویرایشگر Vim / Vi
در زیر نمونههایی وجود دارد که نحوه ذخیره و خروج، ذخیره بدون خروج و خروج بدون ذخیره را نشان میدهد.
برای ذخیره یک فایل و خروج از Vim، موارد زیر را انجام دهید:
- با فشار دادن کلید Esc به حالت فرمان بروید.
- : (دونقطه) را فشار دهید تا نوار فرمان در گوشه سمت چپ پایین پنجره باز شود.
- x را بعد از دونقطه تایپ کنید و Enter را بزنید. با این کار تغییرات ذخیره شده و از محیط ویرایشگر خارج میشوید.
برای ذخیره یک فایل بدون خروج از Vim مراحل زیر را دنبال کنید:
- با فشار دادن کلید Esc به حالت فرمان بروید.
- : (دونقطه) را تایپ کنید. با این کار نوار فرمان در گوشه سمت چپ پایین پنجره باز میشود.
- w را بعد از دونقطه تایپ کرده و Enter را بزنید. با این کار تغییرات ایجاد شده در فایل بدون خروج در Vim ذخیره میشود. همچنین میتوانید با افزودن نام جدید پس از دستورات، نام فایل موجود را تغییر دهید.
حرکت در داخل ویرایشگر vi در لینوکس
برای اینکه بتوانید داخل فایل خود در بخشهای مختلف حرکت کنید باید در مد Command باشید یعنی کلید ESC را دوبار فشار دهید.
در زیر تعدادی از دستورات برای حرکت در داخل یک فایل آورده شده است.
- دستور k نشانگر را از خط فعلی که نشانگر آنجا قرار دارد یک خط به بالا میبرد.
- دستور j نشانگر را از خط فعلی که نشانگر آنجا قرار دارد یک خط به پایین میبرد.
- دستور h نشانگر را موقعیت فعلی به اندازه یک کاراکتر به سمت چپ میبرد.
- دستور l نشانگر را از موقعیت فعلی به اندازه یک کاراکتر به سمت چپ میبرد.
به دو نکته مهم زیر توجه نمایید:
Vi به بزرگ و کوچک بودن حروف حساس هست. هنگام وارد کردن دستورات به بزرگ بودن حروف دقت نمایید.
اکثر دستورات در vi این قابلیت را دارند که مشخص نمایید دستور مورد نظر چند بار اجرا شود.
بهعنوان مثال دستور 2j نشانگر را از مکان فعلی آن دو خط پایینتر میبرد.
روشهای دیگر برای حرکت در داخل فایل در vi
به خاطر داشته باشید که برای استفاده از دستورات باید در مد Command یا همان اجرایی باشید.
از دستورات زیر نیز برای حرکت در داخل فایل میتوانید استفاده نمایید.
- دستور | یا 0 نشانگر را به ابتدای خط میبرد.
- دستور $ نشانگر را به انتهای خط میبرد.
- دستور w نشانگر را به کلمه بعدی میبرد.
- دستور b نشانگر را به کلمه قبلی میبرد.
- دستور ( نشانگر را به ابتدای جمله جاری میبرد.توجه داشته باشید که جملات با کاراکتر نقطه از هم جدا میشوند.
- دستور ) نشانگر را به ابتدای جمله بعدی میبرد.
- دستور } نشانگر را به یک پاراگراف قبل میبرد.
- دستور { نشانگر را به پاراگراف بعدی میبرد.
- دستور |n نشانگر را به کاراکتر n ام از ابتدای خط، در خط جاری میبرد.
- دستور 1G نشانگر را به اولین خط فایل میبرد.
- دستور G نشانگر را به آخرین خط فایل میبرد.
- دستور nG نشانگر را به nامین خط فایل میبرد.
- دستور n: شانگر را به nامین خط فایل میبرد. بعد از نوشتن این دستور باید اینتر را بزنید.
- دستور H نشانگر را به اولین خط صفحه جاری مبرد.
- دستور nH نشانگر را به خط n ام از بالای صفحه میبرد.
- دستور M حرکت به وسط صفحه.
- دستور L حرکت به پایین صفحه.
- دستور nL نشانگر را به خط n ام از پایین صفحه میبرد.
- دستور E نشانگر را به کاراکتر قبل از کاراکتر space بعدی میبرد.
- دستور fc این دستور نشانگر را به کاراکتر c بعدی در خط جاری میبرد. بجای کاراکتر c میتوانید هر کاراکتری بنویسید.
- دستور Fc این دستور نشانگر را به کاراکتر c قبلی در خط جاری میبرد. بجای کاراکتر c میتوانید هر کاراکتری بنویسید.
ویرایش فایل در vi
برای ویرایش فایل باید در مد Insert باشید. برای رفتن به مد Insert روشهای مختلفی وجود دارد.
- دستور i متن را قبل از محل فعلی نشانگر وارد میکند.
- دستور I متن را در ابتدای خط جاری درج میکند.
- دستور a متن را بعد از مکان فعلی نشانگر وارد میکند.
- دستور A متن را در انتهای خط جاری درج میکند.
- دستور o زیر نشانگر خط جدیدی برای درج متن ایجاد میکند.
- دستور O بالای نشانگر خط جدیدی برای درج متن ایجاد میکند.
دستورات کنترلی ویرایشگر vi در لینوکس
دستورات مفید زیر را با کلید کنترل میتوانید استفاده نمایید:
- CTRL+d نشانگر را به اندازه نصف صفحه پایین میبرد.
- CTRL+f نشانگر را به اندازه یک صفحه کامل پایین میبرد.
- CTRL+u نشانگر را به اندازه نصف صفحه بهطرف بالا میبرد.
- CTRL+b نشانگر را به اندازه یک صفحه کامل به بالا میبرد.
- CTRL+e صفحه را یک خط بالا میبرد.
- CTRL+y صفحه را یک خط پایین میبرد.
- CTRL+u صفحه را به اندازه نصف صفحه به بالا جابجا میکند.
- CTRL+d صفحه را به اندازه نصف صفحه به پایین جابجا میکند.
کاراکترهای حذف در vi
دستورات زیر برای حذف خطها و کلمات در فایل باز شده مورد استفاده قرار میگیرند
- دستور x کاراکتر زیر مکاننما را حذف میکند.
- دستور X کاراکتر قبل از مکاننما را حذف میکند.
- دستور dw از مکان فعلی مکاننما تا کلمه بعد را حذف میکند.
- دستور ^d از مکان فعلی مکاننما تا ابتدای خط را حذف میکند.
- دستور $d از مکان فعلی مکاننما تا انتهای خط را حذف میکند.
- دستور D از مکان فعلی مکاننما تا انتهای خط جاری را حذف میکند.
- دستور dd خطی را که مکاننما در آنجا قرار دارد را حذف میکند.
همانطور که در بالا اشاره کردیم میتوانید تعداد دفعات اجرای فرمانها را نیز مشخص نمایید. مثلاً دستور 2x دو کاراکتر را از زیر مکاننما حذف میکند. و دستور 2dd دو خط از محل فعلی مکاننما را حذف میکند.
دستورات copy و paste
شما میتوانید کلمات یا خطوطی را از مکانی کپی کرده و در محلی دیگر paste نمایید. نمونهای از این دستورات:
- دستور yy خط جاری را کپی میکند.
- دستور p متن کپی شده را در مکان بعد از مکاننما پیست میکند.
- دستور P متن کپی شده را قبل از مکاننما میچسباند.
دستورات پیشرفته ویرایشگر vi در لینوکس
دستورات پیشرفتهای در vi وجود دارند که کار ویرایش را سادهتر میکنند و اجازه استفاده مؤثر از vi را میدهند.
- دستور J خط جاری را با خط بعدی به هم میچسباند. اگر عددی به دستور اضافه شود به تعداد آن عدد خطها را به هم وصل میکند.
- دستور u نقش undo ر بازی میکند.
- دستور ^G اگر کلید کنترل را همزمان با کلید G بزنید، نام فایل جاری و وضعیت آن را نمایش میدهد.
- دستور ~ تغییر بزرگ یا کوچک بودن کاراکتر زیر مکاننما.
- دستور << خط جاری را به اندازه یک واحد به سمت راست شیفت میدهد.
- دستور >> خط جاری را به اندازه یک واحد به سمت چپ شیفت میدهد.
- دستور f: نمایش موقعیت شما در فایل برحسب % و نمایش نام فایل .
عبارت filename بعد از دستور f: نام فایل را به filename تغییر میدهد.
عبارت filename بعد از دستور w: فایل را در فایلی بنام filename مینویسد.
عبارت filename بعد از دستور e: فایل دیگری با نام filename باز میکند.
عبارت direname بعد از دستور cd: دایرکتوری جاری را به دایرکتوری نوشته شده تغییر میدهد.
- دستور # e: برای جابجایی بین دو فایل باز شده.
- دستور n: اگر چند فایل را با vi باز کردهاید با هر بار زدن n: به فایل بعدی هدایت میشوید.
- دستور p:اگر چند فایل را با vi باز کردهاید با هر بار زدن p: به فایل قبلی هدایت میشوید.
- دستور N: همان کار دستور p: را انجام میدهد.
- دستور r: اگر بعد از نوشتن این دستور نام فایل دیگری را که با vi باز کردهاید را بنویسید محتویات آن فایل را بعد از مکاننما درج میکند.
- دستور nr: اگر بعد از این دستور نام فایلی را بدهید آن فایل را خوانده و بعد از خط n ام در فایل درج میکند.
دستورات تغییر در ویرایشگر vi
- دستور cc محتویات خط جاری را پاک کرده و شما را در مد درج قرار میدهد.
- دستور r کاراکتر زیر مکاننما را با کاراکتر وارد شده بعد از دستور r جایگزین میکند و شما را در مد دستوری قرار میدهد.
- دستور R با زدن این دستور و کاراکتر مورد نظر بعد از آن، میتوانید از کاراکتر زیر مکاننما شروع کرده و هر کاراکتری را که بخواهید با کاراکتر وارد شده جایگزین نمایید. برای توقف عمل جایگذاری باید کلید ESC را فشار دهید.
- دستور S خط جاری را پاک کرده و با متن تایپ شده جایگزین میکند سپس شما را در مد درج قرا میدهد.
دستورات جستجوی کلمه و کاراکتر در ویرایشگر vi
در ویرایشگر vi به 2 شکل میتوانید جستجو کنید. جستجو یک رشته، جستجو یک کاراکتر
برای جستجوی رشته از دو دستور / و ? استفاده میشود. هنگامی که دستورات فوق را تایپ میکنید در پایین صفحه ظاهر میشوند و در ادامه باید رشته مورد نظر را وارد نمایید.
تفاوت دو دستور فوق در جهت جستجو هست. دستور / جستجو را از محل مکاننما رو به جلو یا بهطرف پایین فایل انجام میدهد. و دستور ? رو به عقب یا بالای فایل جستجو میکند.
دستورات n و N جستجوهای قبلی را تکرار میکنند. فرض کنید با دستور / کلمهای را جستجو کردهاید. بعد از اولین نتیجه هر بار کلید n را فشار دهید جستجو را در جهت جستجوی دستور / ادامه خواهد داد و اگر دستور N را وارد نمایید جستجو را در خلاف جهت جستجوی دستور / ادامه خواهد داد.
برخی کاراکترها مفهوم خاصی هنگام استفاده از دستورات جستجو دارند. و بعد از عبارت مورد نظر نوشته میشوند و بهعنوان بخشی از عبارت مورد جستجو تلقی میشوند.
- کاراکتر ^ جستجو را در ابتدای خط انجام دهد. این کاراکتر باید قبل از عبارت مورد جستجو قرار گیرد.
- کاراکتر . اگر عبارتی را بعد کاراکتر . بنویسید هر کلمهای که دارای آن عبارت باشد را برای شما نمایش خواهد داد.
- کاراکتر * بعد از دستور جستجو عبارت مورد جستجو را نوشته و سپس کاراکتر * را بنویسید هر کلمهای که حداقل یک کاراکتر از عبارت نوشته شده قبل از * را داشته باشد بهعنوان نتیجه جستجو ارائه خواهد داد.
- کاراکتر $ به جستجوی عبارت نوشته شده در انتهای خط میپردازد. این کاراکتر را در انتهای عبارت مورد جستجو مینویسند.
دستورات set در ویرایشگر vi در لینوکس
با این دستورات میتوانید ظاهر صفحه vi را تغییر بدهید. برای استفاده از این دستور باید در مد دستوری بوده و بعد از تایپ دستور set: یکی از آپشنهای زیر را بنویسید:
- nu در سمت چپ در ابتدای هر خط شماره خط آن را مینویسد.
- ic هنگام جستجو به بزرگی یا کوچک بودن حروف اهمیتی نمیدهد.
- ro فایل را تبدیل به فایل فقط خواندنی میکند.
- term نوع ترمینال را چاپ میکند.
- bf کاراکترهای کنترلی را از ورودی نادیده میگیرد.
اجرای دستورات لینوکس در داخل vi
ویرایشگر vi دارای این قابلیت است که بتوانید از داخل آن دستورات لینوکس را اجرا نمایید. برای این کار باید در مد دستوری عبارت !: را نوشته و سپس دستور مورد نظر را بنویسید. برای مثال وقتی میخواهید فایل را با نام مورد نظر خود ذخیره نمایید با زدن دستور ls بعد از عبارت !: میتوانید که آیا فایلی با نام مورد نظر موجود هست یا خیر.
نتیجه دستور ls در صفحه به شما نمایش داده خواهد شد. برای خارج شدن از نتیجه دستور زده شده و برگشتن به محیط vi میتوانید کلیدی دلخواه از کیبورد را فشار دهید.
به عنوان مثال برای خروج از دستور top باید کلید q را فشار دهید با فشار دادن کلیدهای دیگر قادر به خروج نخواهید بود.
جهت آموزش کامل اجرای دستورات در Vi به مطلب آموزش اجرای دستورات لینوکس در ویرایشگر Vi مراجعه نماید.
دستور nano در لینوکس
Nano یک ویرایشگر متنی ساده و در عین حال قدرتمند مبتنی بر خط فرمان است که به دلیل رابط کاربری سادهاش در بین کاربران مبتدی لینوکس بسیار محبوب است.
به عنوان یک ویرایشگر خط فرمان، nano یک جایگزین سبک برای ویرایشگرهای متن گرافیکی پیچیدهتر میباشد. در ادامه روش کار با ادیتور نانو در لینوکس را توضیح خواهیم داد.
استفاده از ویرایشگر خط فرمان نانو در لینوکس بسیار ساده است. دستور اصلی برای استفاده از ویرایشگر متن نانو عبارت است از:
nano
در دستور بالا، مخفف نام فایلی است که میخواهید از طریق ویرایشگر خط فرمان Nano ایجاد یا ویرایش کنید. و برای گزینهها، برخی از گزینههای دیگر که میتوان در دستور nano استفاده کرد عبارتاند از:
- B- برای ذخیره یک فایل و بکآپ گیری از نسخه قبلی آن با افزودن یک tilde (~) به نام فایل فعلی.
- E- برای تبدیل تبهای تایپ شده به فاصله.
- L- برای توقف اضافه کردن یک خط جدید بعد از متن اصلی.
- N- غیرفعال کردن تبدیل خودکار فایلها از فرمت Mac/DOS به فرمت Unix.
- Q- برای مطابقت بخشی از متن با استفاده از عبارات منظم.
- l- برای نمایش شماره خط در سمت چپ قسمت متن.
- u- برای ذخیره فایل با فرمت یونیکس به صورت پیشفرض.
جایگذاری متن
از دستور /s: میتوان برای جایگذاری استفاده کرد . نحوه کاربرد این دستور به شکل زیر است.
در این دستور بجای old_word کلمه ای را بنویسید که میخواهید با کلمه new_word جایگزین شود.
همچنین کاراکتر g هم باعث میشود در خطی که مکان نما روی آن قرار دارد هر جا تطابقی دید جایگزاری را انجام دهد.
نکات مهم کار با ویرایشگر vi در لینوکس
برای اینکه هنگام کار با ویرایشگر vi در لینوکس دچار مشکل نشوید به نکات زیر توجه فرمایید:
- برای اجرای دستورات لینوکس در Vi باید در مد دستوری باشید. برای اینکه مطمئن باشید در مد دستوری هستید دو بار کلید ESC را فشار دهید.
- هنگام کار با دستورات باید به بزرگ و کوچک بودن حروف باید دقت کنید.
- برای وارد کردن متن در فایل باید در مد درج باشید.
سؤالات متداول
این بخش به طرح چند سؤال و پاسخ آنها اختصاص دارد.
کدام مود برای اجرای دستوارت vi لازم است؟
برای اجرای دستورات ویرایشگر vi باید از مود command استفاده کنید.
کد دستور اشتباه در vi چه نتیجهای دارد؟
ممکن است با اجرای دستور اشتباه در محیط vi، نتیجه دلخواه و درست حاصل نشود و یا تغییرات مورد نظر در فایل ایجاد نگردد.
کدام مود برای ذخیره فایل و خروج از vi لازم است؟
برای ذخیره فایل و خروج از vi میبایست از مود command استفاده کنید.
برای ویرایش متن باید از کدام مود vi استفاده کرد؟
ویرایش متن در مود insert انجام میشود.
سخن پایانی
در این مقاله با ویرایشگر متن VI آشنا شدیم. ویرایشگر متن VI پرکاربردترین و محبوبترین ویرایشگر متن لینوکس است که تقریباً در هر توزیع لینوکس میتوانید آن را دریافت کنید. دو حالت Insert و Command در این ویرایشگر وجود دارد. از حالت Command برای دریافت دستورات کاربر استفاده میشود، در حالی که حالت Insert برای ویرایش متن به کار میرود. امیدواریم مطالب ارائه شده در این مقاله برای شما مفید باشد.