ادیتور VIM یکی از محبوبترین ویرایشگرهای متنی در میان کاربران لینوکس است. مدیران سیستم بهخصوص لینوکس کار کردن با دستورات VIM را به سایر ادیتورها ترجیح میدهند. در این مقاله، آموزش Vim را از مفاهیم پایه تا دستورات کاربردی بررسی میکنیم تا با نحوه کار این ویرایشگر قدرتمند آشنا شوید و بتوانید بهعنوان یک توسعهدهنده، بهسرعت از آن در پروژههای خود استفاده کنید.
VIM چیست؟
VIM مخفف Vi IMproved است. یک ویرایشگر متن رایگان، متنباز و چندپلتفرمی که اولین بار توسط Bram Moolenaar در سال ۱۹۹۱ برای سیستمهای یونیکس منتشر شد. Vim نسخهای توسعهیافته از ویرایشگر Vi است که نخستین بار توسط Bill Joy در سال ۱۹۷۶ معرفی شد. در دهه ۹۰ میلادی مشخص شد که Vi در مقایسه با ادیتور Emacs از امکانات کمتری برخوردار است. به همین دلیل، Bram Moolenaar قابلیتهای مورد نیاز را به آن اضافه کرد و نتیجه این تغییرات را با نام Vim منتشر کرد.
نصب VIM
Vim روی سیستمعاملهای مختلف از جمله ویندوز، لینوکس و مک اجرا میشود. برای نصب VIMروی ویندوز، فایل اجرایی را از سایت Vim دانلود کنید و اجرا کنید. در ادامه، مراحل نصب را طبق دستورالعملهای نمایشدادهشده روی صفحه دنبال کنید. VIMروی اکثر سیستمعاملهای توزیعهای *nix ب به صورت پیشفرض نصب است. اما اگر روی سیستم شما نصب نبود، میتوانید با package manager دلخواه آن را نصب کنید.
دستور نصب برای سیستمعاملهای مبتنی بر Debian:
sudo apt-get update
sudo apt-get install vim
برای اطمینان از نصب صحیح، دستور which vim را اجرا کنید. باید خروجی /usr/bin/vim را ببینید.
اگر روی یک سرور مجازی لینوکس کار میکنید، VIM معمولا از پیش نصب است.
شروع کار با VIM
میتوانید با تایپ کردن نام آن در ترمینال، آموزش VIM را عملی شروع کنید:
بعد از وارد کردن این دستور، صفحهای میبینید که اطلاعاتی درباره Vim و دستورالعملهایی برای دریافت کمک و خروج از Vim نمایش میدهد.
حالتهای VIM
پیش از ادامه، لازم است با مهمترین مفهوم در ویرایشگر Vim یعنی حالتهای کاری آشنا شوید.
همه چیز در Vim مبتنی بر حالتهاست . اگر حالتهای Vim را بشناسید، میتوانید هر کاری که بخواهید انجام دهید. حالتهای زیادی در Vim وجود دارد، اما در این نوشته ۴ حالت مهم را بررسی میکنیم:
- Command Mode
- Command-Line Mode
- Insert Mode
- Visual Mode
در ادامه به بررسی هر یک از موارد خواهیم پرداخت.
Command Mode چیست؟
این حالت پیشفرض ویرایشگر VIM است (به آن Normal Mode هم میگویند). هر بار که Vim باز میشود، در به طور پیشفرض این حالت هستید. از این حالت میتوانید به هر حالت دیگری بروید، اما از حالتهای دیگر این کار ممکن نیست.
برای رفتن از یک حالت به حالت دیگر، ابتدا باید به Command Mode برگردید و سپس به حالت مورد نظر بروید. دستوراتی که بدون پیشوند دونقطه اجرا میشوند نشان میدهند که در Command Mode هستید.
Insert Mode چیست؟
این حالت برای ویرایش محتوای فایل استفاده میشود. با فشار دادن i از Command Mode وارد Insert Mode میشوید. با کلید Esc میتوانید به Command Mode برگردید.
Command Line Mode چیست؟
در این حالت میتوانید با دستوراتی کار کنید که با دو نقطه (:) شروع میشوند. با فشار دادن : در Command Mode وارد این حالت میشوید.
Visual Mode چیست؟
از این حالت برای انتخاب بصری بخشی از متن و اجرای دستور روی آن بخش استفاده میشود. با فشار دادن v از Command Mode وارد این حالت میشوید.
با همین چهار حالت میتوان بخش عمدهای از عملیات پایه مدیریت فایل را در Vim انجام داد. در ادامه، با چند مثال عملی، نحوه کار با این ویرایشگر قدرتمند را بررسی خواهیم کرد.
عملیاتهای رایج ویرایشگر متن در VIM
ایجاد یک فایل جدید
ایجاد یک فایل جدید با Vim ساده است. میتوانید این کار را از حالت خط فرمان انجام دهید.
دستور زیر را برای ایجاد یک فایل جدید اجرا کنید:
:edit sample.txt
دستور بالا فایل sample.txt را اگر از پیش وجود داشته باشد در حالت ویرایش باز میکند، و در غیر این صورت یک فایل جدید ایجاد میکند.
پس از اجرای آن دستور، شما در حالت فرمان قرار خواهید گرفت (همانطور که در تصویر زیر نشان داده شده است)، و قادر به وارد کردن هیچ متنی نخواهید بود:
برای اضافه کردن متن به فایل ایجاد شده، کلید i را روی صفحه کلید فشار دهید. از دستور i برای وارد کردن متن در فایل استفاده میکنید. به محض اینکه i را فشار دهید، با نگاه کردن به پایین سمت چپ فایل خواهید دید که وارد حالت درج در Vim شدهاید.
در این حالت، میتوانید هر چیزی که میخواهید در فایل تایپ کنید.
پس از اتمام نوشتن محتوا، باید فایل را ذخیره کنید. در غیر این صورت، اگر ترمینال را بدون اینکه فایل ذخیره شده باشد ببندید، تمام تغییرات شما از بین خواهد رفت.
ذخیره فایل
برای ذخیره فایل باید از Insert Mode به Command Line Mode بروید. همانطور که قبلا گفته شد، برای رفتن از یک حالت به حالت دیگر، ابتدا باید به Command Mode بروید.
برای رفتن به Command Mode از Insert Mode، کلید Esc را فشار دهید. بعد از فشار دادن Esc، عبارت --INSERT-- در پایین سمت چپ دیگر نمایش داده نمیشود که نشان میدهد از Insert Mode خارج شدهاید و الان در Command Mode هستید.
برای ذخیره فایل، دستور زیر را تایپ کنید:
:w
بستن فایل و خروج از VIM
بعد از ذخیره فایل، میتوانید با بستن ترمینال Vim را ببندید. اما روش صحیح بستن فایل و ویرایشگر VIM استفاده از دستور زیر است:
:q
این دستور فایل را میبندد و از Vim خارج میشود.
همچنین میتوانید از ترکیب دو دستور بالا برای ذخیره سریع و خروج از Vim استفاده کنید:
:wq
این دستور بلافاصله بعد از ذخیره فایل از Vim خارج میشود.
ویرایش فایل در VIM
برای ویرایش فایل باید آن را با Vim باز کنید و وارد Insert Mode شوید. بیایید فایل sample.txt که قبلا ساختیم را باز کنیم:
vim sample.txt
الان در حالت فرمان Command mode هستیم. برای ویرایش فایل، باید به حالت درج برویم. همانطور که قبلا دیدیم، فشار دادن کلید i از حالت فرمان، ما را به حالت درج میبرد.
برای ذخیره فایل و خروج از Vim، همین روش را دنبال کنید. کلید Esc را روی صفحه کلید فشار دهید و :w را برای ذخیره فایل و :q را برای خروج از Vim تایپ کنید.
احتمالا برایتان سوال پیش میآید که اگر بخواهم فایل را بدون ذخیره تغییرات ببندم، چه کار کنم؟
چگونه فایل را بدون ذخیره تغییرات ببندیم
برای بستن فایل بدون ذخیره تغییرات، باید :q! را از حالت فرمان اجرا کنید.
بیایید این موضوع را با یک مثال عملی بررسی کنیم:
محتوای بیشتری به فایل اضافه شده است.
اما الان نمیخواهیم تغییراتی که ایجاد کردهایم را ذخیره کنیم. برای بستن فایل بدون ذخیره این تغییرات، باید به حالت فرمان برویم با فشردن کلید Esc. در حالت فرمان، :q! را تایپ کنید. این کار فایل را بدون در نظر گرفتن تغییرات ایجاد شده میبندد.
بیایید فایل را مشاهده کنیم و تایید کنیم که خروجی مورد انتظار را میگیریم:
بله. فایل خط آخر را که به تازگی اضافه کرده بودیم ندارد. بنابراین، تغییرات ذخیره نشدند.
چگونه متن را از یک فایل با استفاده از ویم Cut، Copy، و Paste کنیم
میتوانید در Vim به دو روش برش، کپی و جایگذاری انجام دهید. این دو روش عبارتند از:
- استفاده از حالت بصری (Visual mode)
- استفاده از صفحه کلید
از بین این دو روش، حالت بصری سادهتر است.با توجه به اینکه این راهنما برای مبتدیان است، بیایید نحوه برش، کپی و جایگذاری را در حالت بصری بررسی کنیم.
قبل از ادامه، بیایید فایل را در حالت فرمان باز کنیم:
فرض کنید میخواهید کلمه Hello را از خط اول کپی کنید و آن را در خط سوم جایگذاری کنید.
اولین قدم این است که مکاننما cursor را در جایی که میخواهید متن را از آن کپی کنید قرار دهید (در حالت فرمان).
حرکت مکاننما به ابتدای کلمه Hello
با فشار دادن کلید v روی صفحه کلید، وارد حالت بصری شوید.
ورود به حالت بصری
متن -- VISUAL -- در پایین سمت چپ نشان میدهد که در حالت بصری هستیم.
مکاننما را به جایی که متن مورد نظر برای کپی به پایان میرسد حرکت دهید.
در این مثال، مکاننما را به حرف o از کلمه Hello حرکت میدهم.
در حین حرکت مکاننما، حالت بصری متن را از ابتدا تا محل مکاننما هایلایت میکند.
متن هایلایت شده در حالت بصری
پس از اینکه مکاننما را به جای درست رساندید، کلید y را برای کپی کردن متن یا کلید d را برای برش زدن متن فشار دهید.
در این مثال، متن را کپی میکنیم و کلید y را میزنیم.
مکاننما را به جایی که میخواهید متن را جایگذاری کنید حرکت دهید.
کلید p (کوچک) را برای جایگذاری متن بعد از مکاننما و P (بزرگ) را برای جایگذاری متن قبل از مکاننما فشار دهید.
متن Hello در خط سوم جایگذاری شد.
برای ذخیره و بستن فایل، :wq را فشار دهید.
چگونه در Vim متن را جستجو و جایگزین کنیم؟
جستجوی متن و جایگزینی آن با متن دیگر در Vim سادهای است. گل این فرایند با یک دستور یک خطی انجام میشود.
در اینجا ساختار دستور آمده است:
:[range]s/{pattern}/{string}/[flags]
بیایید هر بخش از دستور به صورت مجزا بررسی کنیم و بفهمیم که چگونه کار میکند.
- [range] نشان میدهد که میتوانید محدوده خطوط را تعیین کنید. برای جستجو و جایگزینی در همه خطوط، از % استفاده کنید. محدوده با کاما جدا میشود. برای جستجو و جایگزینی بین خطوط 5 تا 10، از 5,10 استفاده کنید. از . برای نشان دادن خط جاری و از
$برای آخرین خط فایل استفاده کنید. - {pattern} الگویی برای یافتن متن را نشان میدهد. میتوانید الگوهای regex را اینجا وارد کنید.
- {string} رشتهای است که جایگزین متن یافت شده میشود.
- [flags] مشخص میکند که آیا میخواهید flag های اضافی را تعیین کنید یا نه (برای مثال، flag c قبل از انجام جایگزینی، تایید کاربر را میگیرد). بهصورت پیشفرض، جستجو بهصورت case-sensitive انجام میشود. با استفاده از flag
iمیتوان این حالت را به case-insensitive تغییر داد.
خیلی خوب، بیایید این را با یک مثال بررسی کنیم.
محتوای فایل sample.txt
فایل sample.txt ما دارای ۲ عدد Hello است. بیایید Hello را در هر دو مکان با Hi جایگزین کنیم.
دستوری که برای این کار میشود این است:
:%s/Hello/Hi/g
%s نشان میدهد که محتوا را در کل فایل جایگزین کن. Hello متن جستجو است. Hi متنی است که جایگزین میشود. g نشان میدهد که تغییر را به طور سراسری اعمال کند.
تغییر Hello به Hi
پس از اجرای دستور
بیایید این را با مثال دیگری امتحان کنیم.
این بار میخواهم کلمه Hi (جستجوی غیر حساس به کوچکی و بزرگی حروف) که بین خطوط ۲ و ۳ رخ داده است را تغییر دهم و آن را با Hello and Welcome جایگزین کنم، با تایید برای تغییر هر بار رخداد.
دستوری که برای این کار استفاده میشود:
:2,3s/Hi/Hello and Welcome/gci
اجرای دستور برای تغییر متن از خط ۲ به خط ۳
درخواست تایید برای تغییر رخداد
در اینجا توضیح هر گزینه آورده شده است:
y - جایگزینی تطابق (match) n - رد کردن تطابق a - جایگزینی تطابق و تمام رخدادهای باقیمانده تطابق q یاEsc- خروج از جایگزینی l - جایگزینی تطابق و خروجCTRL+Y- پایین آوردن صفحهCTRL+E- بالا بردن صفحه
من میخواهم تغییر را بپذیرم. بنابراین، کلید y را فشار میدهم. در اینجا خروجی پس از فشار دادن y آمده است.
پس از جایگزینی کلمه
از آنجایی که ما فقط یک بار رخداد Hi بین خطوط ۲ و ۳ داریم، تایید دیگری درخواست نکرد و عملیات کامل شد.
چگونه در Vim عمل Undo و Redo انجام دهیم؟
برای لغو (Undo) یک تغییر در Vim، در حالت فرمان کلید u را فشار دهید. برای دوباره انجام دادن (Redo)، CTRL + R را فشار دهید. میتوانید یک عدد (n) جلوی u قرار دهید تا n بار لغو کند. به عنوان مثال، 2u دو بار لغو میکند. برای مشاهده گزینههای موجود برای لغو، در حالت فرمان :undolist را تایپ کنید.
بیایید این را با یک مثال بفهمیم.
در اینجا وضعیت فعلی فایل sample.txt ما آمده است:
وضعیت فعلی فایل sample.txt
مکاننما روی حرف a در متن Hello and Welcome در خط سوم قرار دارد. بیایید کلمه and را با تایپ dw در حالت فرمان حذف کنیم:
بیایید Undo کنیم تا کلمه and را دوباره به فایل برگردانیم. برای انجام این کار، در حالت فرمان کلید u را فشار دهید.
تغییرات پس از تایپ u در حالت فرمان لغو شدند.
بیایید Redo کنیم و کلمه and را با تایپ CTRL + R در حالت فرمان دوباره حذف کنیم.
تغییرات دوباره با Redo با فشار دادن CTRL + R در حالت فرمان اعمال شدند.
جمع بندی
در این مقاله آموزش VIM، با اصول پایه Vim آشنا شدید. این مقاله برای شروع کار و انجام عملیات پایه خواندن و نوشتن فایل با ویرایشگر VIM کافی است. فقط در نظر داشته باشید که حتی ۱٪ از قابلیتهای Vim هم پوشش داده نشده، اما مطمئنم این اصول به شما کمک میکند Vim را سریع و با اطمینان کشف کنید.
سوالات متداول
VIM چیست و چرا محبوب است؟
VIM یک ویرایشگر متن رایگان و متنباز که مدیران سیستم لینوکس بهخصوص آن را به سایر ادیتورها ترجیح میدهند چون سبک است، سریع کار میکند و روی تقریبا همه سیستمها از پیش نصب است.
چطور از ویرایشگر VIM خارج شوم؟
در Command Mode دستور :q را تایپ کنید. اگر تغییراتی ذخیره نشده دارید، از :wq برای ذخیره و خروج همزمان یا از :q! برای خروج بدون ذخیره استفاده کنید.
تفاوت ادیتور VIM و Vi چیست؟
Vi ادیتور اصلی است که Bill Joy در سال ۱۹۷۶ طراحی کرد. VIM نسخه بهبود یافته آن است که Bram Moolenaar در سال ۱۹۹۱ منتشر کرد و امکانات بیشتری مثل هایلایت سینتکس، آندو چندمرحلهای و پشتیبانی از پلاگین به آن اضافه شده است.
دستورات VIM برای کپی و پیست چیست؟
ابتدا با فشار دادن v وارد Visual Mode شوید، متن مورد نظر را انتخاب کنید، سپس y برای کپی یا d برای کات بزنید. کرسر را به محل مورد نظر ببرید و p برای پیست بعد از کرسر یا P برای پیست قبل از کرسر را فشار دهید.
آیا آموزش VIM برای مبتدیان سخت است؟
در ابتدا کمی نیاز به تمرین دارد، اما بعد از آشنایی با ۴ حالت اصلی (Command Mode، Insert Mode، Command Line Mode و Visual Mode)، کار با آن بسیار سریع و روان میشود. ابزار داخلی vimtutor هم برای تمرین مبتدیان بسیار مفید است.
چطور در VIM متنی را جستجو و جایگزین کنم؟
از دستور :%s/متنقدیمی/متنجدید/g استفاده کنید. %s یعنی جستجو در کل فایل، و g یعنی تغییر همه موارد پیدا شده. اگر بخواهید قبل از هر جایگزینی تایید بگیرید، فلگ c را به انتهای دستور اضافه کنید.

























