یکی از قدرتمندترین و معروفترین ویرایشگرهای متن در محیط خط فرمان سیستمهای یونیکس و لینوکس، ویراشگر vi است. این ویرایشگر ممکن است در ابتدا برای کاربران تازهکار چالشبرانگیز باشد، اما با یادگیری مهارت استفاده از آن میتوانند کنترل و ویرایش فایلها را با سرعت و دقت بالا انجام دهند.
در این مقاله، به آموزش ویرایشگر vi در لینوکس میپردازیم و مبانی و همچنین نکات پیشرفته آن را آموزش خواهیم داد. از اصطلاحات پایه گرفته تا نحوه انجام عملیات ویرایش، ذخیره تغییرات، خروج از ویرایشگر و به طور کلی همه جوانب آن را بررسی میکنیم. علاوه بر این، به مقایسه vi با نسخه بهبود یافتهاش یعنی vim (vi improved) خواهیم پرداخت و مزایا و امکانات جدیدی که vim ارائه داده است را بررسی میکنیم. در مقاله آموزش ویرایشگر vi سعی کردیم که اطلاعات ارائه شده هم برای کاربران مبتدی و هم برای کاربرانی که با این ویرایشگر آشنا هستند، مفید باشد. پس با ما همراه باشید تا با این ویرایشگر کاربردی آشنا شویم. ( خرید سرور مجازی خارج )
ویرایشگر vi چیست؟
ویرایشگر vi یک ویرایشگر متن در سیستمهای یونیکس و لینوکس است. ( کالی لینوکس چیست؟ ) اسم vi از واژه visual ایجاد شده است. این ویرایشگر لینوکس و یونیکس از پیش نصب شده است. vi دارای حالتهای مختلفی از جمله insert mode و command mode است. ( هاست لینوکس )
با تغییر بین این دو حالت، میتوانید کنترل کاملی بر روی فایل متنی خود داشته باشید. این ساختار به شما امکان میدهد که به سرعت و با دقت کارهای مورد نظر خود را انجام دهید، از جمله جستجو، جابجایی، حذف، ذخیره و خروج از ویرایشگر.
آموزش ویرایشگر vi و حالتهای مختلف آن
- Command mode (حالت دستوری)در این حالت میتوانید دستورات مختلفی را به ویرایشگر بدهید تا کارهای مختلفی را انجام دهد. کارهایی از جمله حرکت در متن، حذف خطوط، ذخیره تغییرات و خروج از ویرایشگر. در این حالت هر چه را که تایپ کنید به عنوان دستور تفسیر میشود. برای ورود به حالت دستوری، از حالت درج باید از دکمه Esc استفاده کنید.
- Insert mode (حالت درج)در این حالت شما میتوانید متن را ویرایش و تغییر دهید، به این صورت که هر متنی را در این حالت تایپ کنید به عنوان ورودی در نظر گرفته میشود و در فایل درج میشود. برای ورود به این حالت از حالت دستوری، از دستورات مختلفی مانند i (برای ورود به حالت درج در مکان نمایش کنونی)، a (برای ورود به حالت درج و قرار گرفتن بعد از نمایش کنونی)، یا o (برای ایجاد خط جدید و ورود به حالت درج) استفاده میشود.
ویرایشگر vim
vi و vim هر دو ویرایشگرهای متنی هستند اما تفاوتهایی بین آنها وجود دارد. همانطور که در آموزش ویرایشگر vi بالا نیز به آن اشاره شد، vi یک ویرایشگر محبوب و قدرتمند است و به عنوان یک استاندارد برای ویرایشگرهای متنی در بسیاری از سیستمعاملها شناخته میشود. vim نسخه بهبود یافته ویرایشگر vi است، که ویژگیهای جدیدی برای افزایش و بهبود کارایی به آن اضافه شده است. تعدادی از تفاوتهای این دو ویرایشگر شامل موارد زیر هستند:
- vim دارای امکانات پیشرفتهتر در رابط کاربری و قابلیتهای تصحیح متنی است
- vim از افزونهها و اسکریپتهای جدید برای افزودن قابلیتهای اضافی به ویرایشگر پشتیبانی میکند.
- vim دارای حالتهای اضافهای مانند حالت visual برای انتخاب متن و حالت insert برای وارد کردن متن به صورت مستقیم است.
اکثر دستورات و امکانات vi در vim نیز وجود دارد، اما vim با اضافه کردن قابلیتها و امکانات بیشتر، همچنین اصلاح vi به یک ویرایشگر متنی قدرتمندتر از vi تبدیل شده است.
دستورات اصلی و اساسی مانند command mode و insert mode در vi و vim بسیار مشابه هستند. در vim میتوانید از دستوراتی که در vi موجود هستند و همچنین از دستورات جدیدی که به آن اضافه شده است استفاده کنید. به طور کلی، اگر با دستورات vi آشنا هستید میتوانید به راحتی این دستورات را در vim به کار ببرید و همچنین میتوانید به مرور با امکانات و ویژگیهای جدید آن نیز آشنا شوید.
دستوراتی که در مقاله آموزش ویرایشگر vi برای شما جمعآوری کردهایم، هم در vi و هم در vim کاربرد دارند.
آموزش ویرایشگر vi
برای آموزش ویرایشگر vi ابتدا شروع کار با آن را آموزش میدهیم. برای استفاده از ویرایشگر vi میتوانید فایلی را با استفاده از دستور زیر باز کنید.
vi file_name.txt
در دستور بالا، یک فایل متنی به نام file_name ساختهایم و به محیط ویرایش آن میرویم.
نکته: توجه داشته باشید که اگر فایلی با نام file_name.txt از قبل وجود داشته باشد، همان فایل برای ویرایش باز میشود و اگر فایل وجود نداشته باشد یک فایل جدید برای شما ساخته میشود.
ذخیره تغییرات و خروج از vi
سپس با استفاده از کلیدها و دستورات مختلف، میتوانید متن را ویرایش کرده و تغییرات را ذخیره کنید. برای ذخیره و خروج از ویرایشگر، ابتدا باید به حالت دستوری بروید (با فشردن کلید Esc). این کلیدها و دستورات شامل موارد زیر هستند:
- x:این دستور تغییرات اعمال شده در متن را ذخیره میکند و سپس از ویرایشگر خارج میشود.
- w:این دستور تغییرات اعمال شده در متن را ذخیره میکند اما از ویرایشگر خارج نمیشود.
- q:با استفاده از این دستور میتوانید از ویرایشگر خارج شوید. اگر تغییری در متن اعمال نشده باشد، از ویرایشگر خارج میشود. اما اگر تغییراتی اعمال شده باشد از ویرایشگر خارج نمیشود و یک هشدار نمایش داده میشود.
- !q:این دستور بدون ذخیره تغییرات، از ویرایشگر خارج میشود. یعنی این دستور همه تغییراتی که انجام دادهاید را نادیده میگیرد و از ویرایشگر خارج میشود.
- wq:این دستور تغییرات اعمال شده در متن را ذخیره کرده و از ویرایشگر خارج میشود.
هنگامی که در command mode در ویرایشگر vi، کاراکتر دو نقطه (:) را وارد میکنید، ویرایشگر در انتظار وارد کردن دستور شماست و در ادامه دستور شما وارد میشود.
حرکت دادن مکان نما در ویرایشگر vi
در ویرایشگر vi و vim، در حالت دستوری میتوان از طریق کلیدهای حرکتی مکاننما (cursor) را درون متن جابهجا کرد. برخی از کلیدهای حرکتی اصلی عبارتند از:
- کلیدهای ‘k’ یا ‘🠙’ حرکت مکاننما رو به بالا
- کلیدهای ‘j’ یا ‘🠛’ حرکت مکاننما رو به پایین
- کلیدهای ‘h’ یا ‘🠘’حرکت مکاننما به سمت چپ
- کلیدهای ‘l’ یا ‘🠚’حرکت مکاننما به سمت راست
- کلید ‘$’ حرکت مکاننما به انتهای خط جاری (پایان خط)
- کلید ‘0’ (صفر) حرکت مکاننما به ابتدای خط جاری (ابتدای خط)
- کلید ‘w’حرکت به انتهای یک کلمه (word)
- کلید ‘b’ حرکت به ابتدای یک کلمه
- دستور ‘+’ پرش به انتهای خط بعدی
- دستور ‘-’ پرش به ابتدای خط بعدی
- دستور ‘n:’ پرش به خط مورد نظر بر اساس شماره خط (n باید با شماره خط مورد نظر جایگزین شود)
- دستور ‘pattern/:’جستجو به سمت جلو (pattern باید با الگوی مورد جستجو جایگزین شود)
- دستور ‘pattern?:’ جستجو به سمت عقب (pattern باید با الگوی مورد جستجو جایگزین شود)
برای استفاده از این کلیدها، به حالت دستوری بروید و سپس از کلیدهای حرکتی مورد نظر خود استفاده کنید. با این کلیدها میتوانید به سرعت و به راحتی درون متن حرکت کرده و به نقاط مختلف آن دسترسی پیدا کنید. البته توجه داشته باشید که vi به بزرگ و کوچک بودن حروف حساس است و هنگام وارد کردن دستورات به بزرگ و کوچک بودن حروف دقت کنید.
شما میتوانید این دستورات را برای تعداد دفعات مشخصی تکرار کنید. برای این کار میتوانید از پیشوند عددی برای تعیین تعداد تکرار استفاده کنید. به طور مثال، اگر بخواهید دستور حرکت مکاننما رو به جلو را 5 بار تکرار کنید، باید دستور 5l را اجرا کنید یا اگر بخواهید دستور حرکت مکاننما به پایین را 3 بار تکرار کنید باید دستور 3j را اجرا کنید.
دستورات کنترلی در ویرایشگر vi
در این قسمت از آموزش ویرایشگر vi علاوه بر دستوراتی که تا به اینجا در آموزش ویرایشگر vi به آنها اشاره شد، استفاده از کلیدهای کنترلی با ترکیب کلید Ctrl است، که امکانات زیادی به شما میدهد. در حالت دستوری میتوانید از دستورات کنترلی زیر استفاده کنید:
- Ctrl+Fحرکت به جلو یک صفحه (معادل کلید Page Down)
- Ctrl+B: حرکت به عقب یک صفحه (معادل کلید Page Up)
- Ctrl+Dحرکت به جلو به اندازه نصف صفحه (معادل کلید Half Page Down)
- Ctrl+Uحرکت به عقب به اندازه نصف صفحه (معادل کلید Half Page Up)
- Ctrl+Eجابجایی محتوای صفحه به پایین بدون تغییر موقعیت مکاننما
- Ctrl+Yجابجایی محتوای صفحه به بالا بدون تغییر موقعیت مکاننما
- Ctrl+Gنمایش اطلاعات درباره موقعیت مکاننما و وضعیت فایل
- Ctrl+Lرفرش کردن مکاننما (معادل کلید Refresh)
ویرایش فایل در vi
در vi و vim برای ویرایش مستقیم متن، ابتدا باید به حالت درج بروید. برای تغییر حالت از دستوری به درج میتوانیداز یکی از دستورات زیر استفاده کنید.
- iرفتن به حالت نوشتن در موقعیت فعلی مکاننما
- Iرفتن به حالت نوشتن در ابتدای خط
- aرفتن به حالت نوشتن بعد از موقعیت فعلی مکاننما
- Aرفتن به حالت نوشتن در انتهای خط
- oرفتن به حالت نوشتن در خط جدید پس از خط فعلی
- Oرفتن به حالت نوشتن در خط جدید قبل از خط فعلی
پس از وارد شدن به حالت نوشتن با استفاده از یکی از دستورات بالا میتوانید مستقیما متن را ویرایش کنید. سپس برای ذخیره تغییرات، با استفاده کلید Esc به حالت دستوری وارد شوید.
اگر از vim استفاده میکنید، میتوانید از حالت visual نیز استفاده کنید که امکان انتخاب متن برای ویرایش یا کپی کردن و ... را به شما میدهد.
دستورات copy و paste
در vi و vim دستورات کپی و پیست در حالت دستوری اجرا میشوند. چند دستور اصلی در این ویرایشگر عبارتند از:
- دستورات copy
- ylکپی کردن یک کاراکتر
- ywکپی کردن یک کلمه
- yyکپی کردن یک خط
- nyyکپی کردن چند خط (به جای n تعداد خطوط مورد نظر جایگزین میشود)
- دستورات paste
- pپیست کردن در پایین خط فعلی
- P پیست کردن در بالای خط فعلی
در دستورات بالا، y به معنی کپی (yank) و p به معنای پیست (paste) هستند.
دستورات تغییر در vi
در ویرایشگر vi و vim، دستورات تغییر برای شما امکان تغییر متن را فراهم میکند. این دستورات در command mode اجرا میشوند.
- تغییر یک کلمه (cw) این دستور از جایی که مکاننما است تا انتهای کلمه فعلی را حذف کرده و به حالت درج وارد میکند.
- تغییر یک خط (cc) این دستور، خط فعلی را حذف کرده و به حالت درج وارد میکند.
- تغییر چند خط (ncc) این دستور، تعداد n خط را حذف میکند.(n با تعداد خطوط مورد نظر جایگزین میشود)
در ویرایشگر vim، علاوه بر دستورات بالا میتوانید از دستورات دیگری نیز استفاده کنید که در حالت visual اجرا میشوند:
- تغییر متن انتخاب شده
- vمتن را به صورت حرف به حرف انتخاب میکند.
- cمتن انتخاب شده را تغییر میدهد.
- تغییر متن داخل پرانتز یا نقل قول ciاین دستور متن داخل پرانتزها را حذف کرده و به حالت نوشتن وارد می¬کند.
- تغییر متن داخل تگ HTML (cit)این دستور متن داخل تگ HTML را حذف کرده و به حالت نوشتن وارد می¬کند.
حذف کاراکترها در vi
برای حذف کاراکترها یا متن از متن فعلی در ویرایشگر vi و vim، دستورات مختلفی وجود دارد. برخی از دستورات حذف در command mode عبارتند از:
- دستورات حذف کاراکترها
- Xکاراکتر قبل از مکاننما را حذف میکند.
- xکاراکتر زیر مکاننما را حذف میکند.
- dwاز موقیعت فعلی مکاننما تا کلمه بعد از آن را حذف میکند.
- dbاز موقعیت فعلی مکاننما تا کلمه قبل از آن را حذف میکند.
- حذف تا انتهای خط
- Dمتن از موقعیت فعلی مکاننما تا انتهای خط جاری را حذف میکند.
برای حذف متن در visual mode میتوانید از دستورات زیر استفاده کنید:
- dبا استفاده از حالت visual و حرف d متن انتخاب شده حذف میشود.
- ()diمتن داخل پرانتز یا نقل قول را حذف میکند.
- ditمتن داخل تگ HTML را حذف میکند.
دستورات جستجو
از دستورات جستجو برای پیدا کردن و حرکت به مکانهای خاص در متن استفاده میشود. برای جستجو در متن از دو دستور / و ? میتوان استفاده کرد. دستور / از موقیعت فعلی مکاننما به سمت جلو یا تا پایین متن را جستجو میکند و دستور ? از موقیعت فعلی مکاننما به سمت عقب یا تا بالای متن را جستجو میکند.
برای اینکه جستجو به حروف بزرگ و کوچک حساس نباشد، میتوانید از \c در انتهای دستور جستجو استفاده کنید. به عنوان مثال /pattern\c باعث میشود که جستجو به بزرگ و کوچک بودن حروف pattern حساس نباشد.
با استفاده از دستورات n و N میتوان بین جستجوهای انجام شده حرکت کرد. با زدن n رو به جلو به اولین تطابق کاراکتر یا کلمه پیدا شده در جستجو، حرکت میکنید و با زدن N رو به عقب به اولین تطابق حرکت میکنید. به عنوان مثال اگر با استفاده از / جستجو کرده باشید با هر بار زدن n جستجو را رو به جلو (یعنی در جهت دستور /) ادامه میدهد و با هر بار زدن N جستجو را رو به عقب (یعنی برخلاف جهت دستور /) ادامه میدهد.
نکات:
- در حالت پیشفرض جستجوها حساس به حروف بزرگ و کوچک هستند. برای حساس نبودن به بزرگ و کوچک بودن حروف از \c در انتهای دستور استفاده میشود و برای اینکه به بزرگ و کوچک بودن حساس باشد میتوان از \C در انتهای دستور جستجو استفاده کرد.
- برای جستجو در یک خط با دستور f یا t میتوانید از دستورات مربوط به جلو رفتن (forward) یا عقب رفتن (backward) استفاده کنید. از f برای حرکت به سمت جلو و پیدا کردن یک کاراکتر خاص در یک خط استفاده میشود. t نیز مانند f است اما به سمت عقب حرکت میکند.
دستور set در vi
در این بخش از مقاله آموزش ویرایشگر vi به دستور set میپردازیم. از دستور set برای تنظیمات مختلف در ویرایشگر vi و vim استفاده میشود. دستورات set به شما امکان میدهند تا تنظیمات مختلف و تنظیمات وضعیتها را فعال یا غیرفعال کنید و مقدارهای پیشفرض را تغییر دهید. در زیر چند نمونه از دستورات set آورده شده است:
- set number:شماره خطوط را در سمت چپ نمایش میدهد.
- set nonumber:نمایش شماره خطوط را غیرفعال میکند.
- set autoindent:هنگام ایجاد یک خط جدید، ویرایشگر به تعداد تبهای خط قبلی تورفتگی اعمال میکند.
- set tabstop:تعداد فاصلههایی که باید به عنوان تب در نظر گرفته شود را تعیین میکند.
- set ignorecase:حساسیت به بزرگی و کوچکی حروف در جستجو را فعال میکند.
- set noignorecase:حساسیت به بزرگی و کوچکی حروف در جستجو را غیرفعال میکند.
- set smartcase:رشتههای متنی پیدا شده را با واژههای کلیدی تطبیق میدهد.
- set ro:حالت منطق ویرایشگر را به حالت رفع اشکال تغییر میدهد.
- set term:نوع ترمینالی که ویرایشگر در آن اجرا میشود را تعیین میکند.
- set backupformat:فرمت پشتیبان را تنظیم میکند.
بدون دیدگاه