زمان مطالعه: 9 دقیقه

یکی از قدرتمندترین و معروف‌­ترین ویرایشگرهای متن در محیط خط فرمان سیستم­‌های یونیکس و لینوکس، ویراشگر vi است. این ویرایشگر ممکن است در ابتدا برای کاربران تازه‌­کار چالش­‌برانگیز باشد، اما با یادگیری مهارت استفاده از آن می­توانند کنترل و ویرایش فایل‌­ها را با سرعت و دقت بالا انجام دهند.

در این مقاله، به آموزش ویرایشگر vi در لینوکس می‌پردازیم و مبانی و همچنین نکات پیشرفته آن را آموزش خواهیم داد. از اصطلاحات پایه گرفته تا نحوه انجام عملیات ویرایش، ذخیره تغییرات، خروج از ویرایشگر و به طور کلی همه جوانب آن را بررسی می­کنیم. علاوه بر این، به مقایسه vi با نسخه بهبود یافته‌­اش یعنی vim (vi improved) خواهیم پرداخت و مزایا و امکانات جدیدی که vim ارائه داده است را بررسی می­کنیم. در مقاله آموزش ویرایشگر vi سعی کردیم که اطلاعات ارائه شده هم برای کاربران مبتدی و هم برای کاربرانی که با این ویرایشگر آشنا هستند، مفید باشد. پس با ما همراه باشید تا با این ویرایشگر کاربردی آشنا شویم. ( خرید سرور مجازی خارج )

ویرایشگر vi
ویرایشگر 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 ابتدا شروع کار با آن را آموزش می‌دهیم. برای استفاده از ویرایشگر vi می‌­توانید فایلی را با استفاده از دستور زیر باز کنید.

				
					vi file_name.txt 
				
			

در دستور بالا، یک فایل متنی به نام file_name ساخته­‌ایم و به محیط ویرایش آن می‌­رویم.

نکته: توجه داشته باشید که اگر فایلی با نام file_name.txt از قبل وجود داشته باشد، همان فایل برای ویرایش باز می­‌شود و اگر فایل وجود نداشته باشد یک فایل جدید برای شما ساخته می‌­شود.

ذخیره تغییرات و خروج از vi

سپس با استفاده از کلیدها و دستورات مختلف، می­‌توانید متن را ویرایش کرده و تغییرات را ذخیره کنید. برای ذخیره و خروج از ویرایشگر، ابتدا باید به حالت دستوری بروید (با فشردن کلید Esc). این کلیدها و دستورات شامل موارد زیر هستند:

  • x:این دستور تغییرات اعمال شده در متن را ذخیره می‌کند و سپس از ویرایشگر خارج می‌شود.
  • w:این دستور تغییرات اعمال شده در متن را ذخیره می‌کند اما از ویرایشگر خارج نمی‌شود.
  • q:با استفاده از این دستور می‌توانید از ویرایشگر خارج شوید. اگر تغییری در متن اعمال نشده باشد، از ویرایشگر خارج می‌شود. اما اگر تغییراتی اعمال شده باشد از ویرایشگر خارج نمی‌شود و یک هشدار نمایش داده می‌شود.
  • !q:این دستور بدون ذخیره تغییرات، از ویرایشگر خارج می‌شود. یعنی این دستور همه تغییراتی که انجام داده‌اید را نادیده می‌گیرد و از ویرایشگر خارج می‌شود.
  • wq:این دستور تغییرات اعمال شده در متن را ذخیره کرده و از ویرایشگر خارج می‌شود.

هنگامی که در command mode در ویرایشگر vi، کاراکتر دو نقطه (:) را وارد می­‌کنید، ویرایشگر در انتظار وارد کردن دستور شماست و در ادامه دستور شما وارد می­‌شود.

ویرایشگر vi
ویرایشگر 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:فرمت پشتیبان را تنظیم می‌کند.

بدون دیدگاه

دیدگاهتان را بنویسید

هاستvpsسرور اختصاصی