Vim (Vi Improved) یکی از قدرتمندترین و محبوبترین ویرایشگرهای متن در دنیای لینوکس است. Vim روی تمام توزیعهای لینوکس و حتی بسیاری از سیستمعاملهای دیگر به صورت پیشفرض نصب است. یادگیری Vim به شما سرعت و کارایی فوقالعادهای در ویرایش فایلهای متنی، کدهای برنامهنویسی و فایلهای پیکربندی میدهد. این مقاله مخصوص افراد مبتدی طراحی شده و شما را با مفاهیم پایهای تا متوسط Vim آشنا میکند.
۱. Vim چیست و چرا باید آن را یاد بگیریم؟
Vim یک ویرایشگر متن مدال (Modal) است، یعنی بر اساس حالتهای مختلف کار میکند. برخلاف ویرایشگرهای معمولی که همیشه در حالت ویرایش هستند، در Vim شما بین حالتهای مختلف جابهجا میشوید تا کارهای مختلفی مانند تایپ، ناوبری یا انتخاب متن را انجام دهید. مزایای اصلی Vim عبارتند از:
- سرعت بالا: با استفاده از کلیدهای صفحهکلید، بدون نیاز به ماوس، بسیار سریع میتوانید کار کنید.
- دسترسی جهانی: روی تمام سرورهای لینوکس به صورت پیشفرض نصب است، بنابراین برای مدیریت سرورها ضروری است.
- قابلیت شخصیسازی: با فایل
.vimrcمیتوانید آن را دقیقاً مطابق نیاز خود تنظیم کنید. - منبعباز و رایگان: کاملاً رایگان است و جامعه بزرگی از کاربران و افزونهها دارد.
۲. نصب Vim
در اکثر توزیعها، نسخهای از Vim (معمولاً vi) از قبل نصب شده است. اما برای نصب نسخه کامل Vim، از دستورات زیر استفاده کنید:
# Debian / Ubuntu
sudo apt install vim
# Fedora / RHEL
sudo dnf install vim
# Arch Linux
sudo pacman -S vim
۳. حالتهای اصلی Vim
Vim دارای چندین حالت است که هر کدام کاربرد خاصی دارند. مهمترین آنها عبارتند از:
- حالت Normal (عادی): حالت پیشفرض پس از باز شدن فایل. در این حالت کلیدها برای ناوبری و اجرای دستورات استفاده میشوند. با کلید
Escاز هر حالتی به این حالت برمیگردید. - حالت Insert (درج): حالت تایپ متن. با کلیدهای
i(درج قبل از مکاننما)،a(درج بعد از مکاننما) یاo(خط جدید زیر) وارد این حالت میشوید. - حالت Visual (دیداری): حالت انتخاب متن. با کلید
vوارد حالت انتخاب کاراکتر،Vبرای انتخاب خط وCtrl+vبرای انتخاب عمودی میشوید. - حالت Command-line (خط فرمان): با فشردن
:از حالت Normal وارد این حالت میشوید و میتوانید دستورات ذخیره، خروج، جستجو و غیره را اجرا کنید.
۴. حرکت در متن (ناوبری)
در حالت Normal، از کلیدهای زیر برای حرکت سریع در متن استفاده میکنیم:
| کلید | عملکرد |
|---|---|
h | حرکت به چپ |
j | حرکت به پایین |
k | حرکت به بالا |
l | حرکت به راست |
w | حرکت به ابتدای کلمه بعدی |
b | حرکت به ابتدای کلمه قبلی |
0 (صفر) | حرکت به ابتدای خط |
$ | حرکت به انتهای خط |
gg | حرکت به ابتدای فایل |
G | حرکت به انتهای فایل |
:n | حرکت به خط شماره n (مثلاً :10) |
5j یعنی ۵ خط به پایین برو.
۵. ویرایش اولیه (حذف، کپی و جایگذاری)
در حالت Normal، این کلیدها برای ویرایش سریع متن استفاده میشوند:
x: حذف کاراکتر زیر مکاننما.dd: حذف کل خط فعلی.yy: کپی (yank) کل خط فعلی.p: جایگذاری متن کپی شده در زیر مکاننما.u: لغو آخرین تغییر (Undo).Ctrl + r: بازگرداندن تغییر لغو شده (Redo).dw: حذف از مکاننما تا انتهای کلمه.d$: حذف از مکاننما تا انتهای خط.
برای کپی یا حذف چند خط، میتوانید از حالت Visual استفاده کنید: با v شروع به انتخاب کنید، با کلیدهای حرکت متن مورد نظر را انتخاب کنید، سپس y برای کپی یا d برای حذف.
۶. ذخیره و خروج از Vim
برای ذخیره و خروج، از حالت Normal کلید : را فشار دهید تا وارد حالت Command-line شوید، سپس یکی از دستورات زیر را تایپ کنید:
:w # ذخیره فایل (Save)
:q # خروج از Vim (Quit) - در صورت تغییرات، خطا میدهد
:wq # ذخیره و خروج (Write and Quit)
:x # معادل :wq
:q! # خروج بدون ذخیره (Force quit, discard changes)
:w newfile # ذخیره فایل با نام جدید
:q! خارج شوید، تمام تغییرات از بین میروند.
۷. جستجو و جایگزینی
در حالت Normal، با / میتوانید جستجو کنید و با ? به عقب جستجو کنید:
/pattern # جستجوی رو به جلو برای الگوی مورد نظر
?pattern # جستجوی رو به عقب
n # رفتن به نتیجه جستجوی بعدی
N # رفتن به نتیجه جستجوی قبلی
برای جایگزینی متن، از دستور زیر در حالت Command-line استفاده کنید:
:%s/old/new/g # جایگزینی همه موارد 'old' با 'new' در کل فایل
:%s/old/new/gc # جایگزینی با تایید (Confirm) برای هر کدام
:s/old/new/ # جایگزینی اولین مورد در خط فعلی
۸. شخصیسازی Vim با فایل .vimrc
با ایجاد فایل .vimrc در پوشه خانه خود، میتوانید تنظیمات دائمی برای Vim ذخیره کنید:
vim ~/.vimrc
سپس خطوط زیر را به آن اضافه کنید:
" Enable line numbers
set number
" Set tab width to 4 spaces
set tabstop=4
set shiftwidth=4
set expandtab
" Enable syntax highlighting
syntax on
" Show matching parentheses
set showmatch
" Enable mouse support
set mouse=a
هر بار که Vim را باز کنید، این تنظیمات اعمال میشوند.
۹. ترفندها و میانبرهای مفید
- باز کردن چند فایل:
vim file1 file2سپس با:nبه فایل بعدی و:prevبه فایل قبلی بروید. - تقسیم صفحه:
:splitیا:vsplitبرای تقسیم افقی یا عمودی. - تغییر بین صفحهها:
Ctrl + wسپسwبرای جابهجایی بین پنجرهها. - رفع خطاهای سریع: اگر در حالت Insert اشتباهی تایپ کردید، با
Escبه Normal برگردید و ازuبرای Undo استفاده کنید. - یادگیری تعاملی: دستور
vimtutorرا در ترمینال اجرا کنید. این یک آموزش تعاملی و گامبهگام برای Vim است که روی سیستم شما نصب است.
۱۰. مثالهای کاربردی
مثال ۱: ویرایش فایل پیکربندی
فرض کنید میخواهید فایل /etc/hosts را ویرایش کنید (با دسترسی root):
sudo vim /etc/hosts
سپس با i وارد حالت Insert شوید، تغییرات را اعمال کنید، Esc بزنید و :wq برای ذخیره و خروج.
مثال ۲: جایگزینی یک متن در چند فایل
با استفاده از vim و argdo میتوانید یک جایگزینی را روی چند فایل اعمال کنید:
vim file1.txt file2.txt
:argdo %s/old_text/new_text/g | update
جمعبندی و گامهای بعدی
در این مقاله با مفاهیم پایهای و کاربردی ویرایشگر Vim آشنا شدید. Vim یک ویرایشگر بسیار عمیق است و یادگیری آن زمانبر است، اما هر دقیقهای که صرف یادگیری آن میکنید، در بلندمدت بهرهوری شما را افزایش میدهد. برای پیشرفت بیشتر:
- دستور
vimtutorرا در ترمینال اجرا کنید و تمام مراحل آن را طی کنید. - هر روز از Vim برای ویرایش فایلهای ساده استفاده کنید تا کلیدها در ذهنتان تثبیت شوند.
- مستندات رسمی را با
:helpداخل Vim مرور کنید. - کتاب «The Linux Command Line» (ترجمه فارسی در کتابخانه لینوکس) فصل کاملی به Vim اختصاص داده است.