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

مقدمه

vi یک ویرایشگر متنی قدرتمند و سبک است که به صورت پیش‌فرض در اکثر توزیع‌های لینوکس و سیستم‌های یونیکسی وجود دارد. این ویرایشگر به دلیل سادگی، سرعت و قابلیت‌های گسترده‌اش، یکی از ابزارهای محبوب توسعه‌دهندگان و مدیران سیستم است. نسخه بهبود‌یافته آن، vim (Vi IMproved)، امکانات بیشتری ارائه می‌دهد، اما در این مقاله به بررسی دستورات پایه و پیشرفته vi می‌پردازیم که در هر دو نسخه قابل استفاده است.

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


شروع کار با vi

برای باز کردن یک فایل با vi، از دستور زیر در ترمینال استفاده کنید:

vi filename
  • اگر فایل filename وجود داشته باشد، vi آن را باز می‌کند.
  • اگر فایل وجود نداشته باشد، یک فایل جدید با آن نام ایجاد می‌شود.

نکته: در بسیاری از سیستم‌ها، تایپ vi در واقع vim را اجرا می‌کند، زیرا vim جایگزین vi شده است.


حالت‌های vi

vi دارای سه حالت اصلی است که درک آن‌ها برای کار با این ویرایشگر ضروری است:

  1. حالت دستور (Command Mode):

    • حالت پیش‌فرض هنگام باز کردن vi.
    • در این حالت، می‌توانید دستورات ویرایشی مانند کپی، حذف، یا جابجایی را اجرا کنید.
    • برای بازگشت به این حالت از هر حالت دیگر، کلید Esc را فشار دهید.
  2. حالت درج (Insert Mode):

    • در این حالت می‌توانید متن را تایپ یا ویرایش کنید.
    • برای ورود به این حالت، از کلیدهایی مانند i، a یا o استفاده کنید.
  3. حالت خط فرمان (Command-Line Mode):

    • با تایپ : در حالت دستور، وارد این حالت می‌شوید.
    • برای اجرای دستوراتی مانند ذخیره فایل، خروج یا جستجو استفاده می‌شود.

دستورات پایه در vi

ورود به حالت درج

دستور توضیح
i شروع درج متن قبل از مکان‌نما
I شروع درج متن در ابتدای خط
a شروع درج متن بعد از مکان‌نما
A شروع درج متن در انتهای خط
o اضافه کردن خط جدید زیر خط فعلی
O اضافه کردن خط جدید بالای خط فعلی

حرکت در فایل (حالت دستور)

دستور توضیح
h حرکت مکان‌نما به چپ
j حرکت مکان‌نما به پایین
k حرکت مکان‌نما به بالا
l حرکت مکان‌نما به راست
w پرش به ابتدای کلمه بعدی
b پرش به ابتدای کلمه قبلی
0 حرکت به ابتدای خط
$ حرکت به انتهای خط
gg رفتن به ابتدای فایل
G رفتن به انتهای فایل
:n رفتن به خط شماره n (مثال: :10 برای خط ۱۰)

ویرایش متن

دستور توضیح
x حذف کاراکتر زیر مکان‌نما
dd حذف خط فعلی
ndd حذف n خط از خط فعلی (مثال: 3dd برای حذف ۳ خط)
yy کپی خط فعلی
nyy کپی n خط (مثال: 2yy برای کپی ۲ خط)
p جای‌گذاری (paste) محتوای کپی‌شده بعد از مکان‌نما
P جای‌گذاری محتوای کپی‌شده قبل از مکان‌نما
u لغو آخرین تغییر (undo)
Ctrl+r بازگرداندن تغییر لغو شده (redo)

ذخیره و خروج

دستور توضیح
:w ذخیره فایل
:q خروج از vi (اگر تغییری اعمال نشده باشد)
:wq ذخیره و خروج
:q! خروج بدون ذخیره تغییرات
:w filename ذخیره فایل با نامی جدید

دستورات پیشرفته

جستجو و جایگزینی

  • جستجو:

    • برای جستجوی یک عبارت: /phrase و سپس Enter. برای رفتن به نتیجه بعدی، n و برای قبلی، N.
    • برای جستجوی معکوس: ?phrase.
  • جایگزینی:

    • جایگزینی یک عبارت در کل فایل:

      :%s/old/new/g
      

      مثال: :%s/foo/bar/g کلمه foo را با bar جایگزین می‌کند.

    • جایگزینی با تأیید:

      :%s/old/new/gc
      

      برای هر جایگزینی از شما تأیید می‌خواهد.

کار با چندین فایل

  • باز کردن چندین فایل:
    vi file1 file2 file3
    
  • جابجایی بین فایل‌ها:
    • n: برای فایل بعدی.
    • p: برای فایل قبلی.
    • ls: برای نمایش لیست فایل‌های باز.

کپی و جای‌گذاری پیشرفته

  • کپی چند خط به بافر خاص:
    "ayy
    
    این خط را به بافر a کپی می‌کند.
  • جای‌گذاری از بافر خاص:
    "ap
    

تنظیمات موقت

  • نمایش شماره خطوط:
    :set number
    
  • غیرفعال کردن شماره خطوط:
    :set nonumber
    
  • فعال کردن برجسته‌سازی نحو (syntax highlighting):
    :syntax on
    

نکات کاربردی

  1. ذخیره خودکار: برای جلوگیری از از دست رفتن تغییرات، به طور مرتب با :w فایل را ذخیره کنید.
  2. استفاده از .vimrc: می‌توانید تنظیمات دلخواه خود (مانند شماره خطوط یا برجسته‌سازی نحو) را در فایل ~/.vimrc ذخیره کنید.
    مثال:
    set number
    syntax on
    set tabstop=4
    
  3. یادگیری سریع‌تر: از دستور vimtutor در ترمینال استفاده کنید تا آموزش تعاملی vim را تجربه کنید.
  4. حالت‌های بصری (Visual Mode):
    • با v وارد حالت بصری شوید، متن را انتخاب کنید و سپس با y کپی یا d حذف کنید.
    • برای انتخاب خطوط کامل، از V استفاده کنید.

تفاوت vi و vim

  • vi نسخه اصلی و ساده‌تر است.
  • vim امکانات بیشتری مانند برجسته‌سازی نحو، پشتیبانی از ماوس، و افزونه‌ها ارائه می‌دهد.
  • اکثر دستورات vi در vim نیز کار می‌کنند، اما vim قابلیت‌های پیشرفته‌تری دارد.

نتیجه‌گیری

vi یک ابزار قدرتمند و انعطاف‌پذیر است که با یادگیری آن می‌توانید به سرعت فایل‌های متنی را در محیط لینوکس ویرایش کنید. اگرچه در ابتدا ممکن است پیچیده به نظر آید، اما با تمرین و استفاده از دستورات پایه و پیشرفته، می‌توانید به راحتی از آن استفاده کنید. برای تسلط بیشتر، پیشنهاد می‌کنیم با vimtutor شروع کنید و تنظیمات شخصی خود را در ~/.vimrc اعمال کنید.