آموزش Find and Replace در Vim (جستجو و جایگزینی متن)

اگه با لینوکس کار کرده باشی، حتماً اسم Vim به گوشت خورده. یه ویرایشگر قدیمی ولی فوق العاده قدرتمند که هنوزم خیلی ها ازش استفاده می کنن. من خودم بارها موقع ویرایش فایل های سرور، مجبور شدم متنها رو سریع تغییر بدم. اینجاست که Find and Replace در Vim واقعاً به دادم رسیده و کارمو چند برابر سریعتر کرده.
در بیشتر توزیع های لینوکس نسخه ساده تری از این ابزار یعنی vim-minimal معمولاً به صورت پیش فرض نصب میشه. این نسخه برای ویرایش های پایه ای مناسبه، اما اگه می خوای به مجموعه کامل قابلیت های Vim دسترسی داشته باشی، نسخه کامل Vim را نصب کنی.
یکی از قابلیت های مهم Vim، دستور Find and Replace که با این دستور خیلی راحت میتونی قسمت هایی از متن رو پیدا کنی و با متن دلخواه خودت جایگزین کنی که توی این راهنما میخوایم نحوه استفاده ازش رو با مثال های عملی رو نشون بدیم. پس با ما همراه باش.
مثلاً خود من وقتی روی فایل های کانفیگ سرور کار می کنم، مجبورم سریعاً نام یک IP یا دامنه رو در صدها خط تغییر بدم. دستور :%s/old/new/gc بارها جلوی اشتباهات وقت گیر رو گرفته.
ساختار کلی دستور Find and Replace در Vim
توی ویرایشگر Vim، دستور جایگزینی معمولاً با حرف s و یک کولون : اول خط دستور وارد میشه . ساختار کلی به صورت زیر است:
:[range]s/{pattern}/{string}/[options] [count]
اجزای دستور:
range: محدودهی خطوطی که قرار است جستجو در آن انجام شود.
pattern: الگویی که قصد پیداش کردنشو داریم.
string: متنی که قراره جایگزین الگو شود.
options: تنظیمات اختیاری، مثل:
- g برای جایگزینی همه رخدادها در هر خط
- i برای نادیده گرفتن تفاوت حروف بزرگ و کوچک
- c برای گرفتن تأیید قبل از هر جایگزینی
مثالهای عملی دستور Find and Replace در Vim
مثال 1: جستجوی ساده با اسلش
یکی از ساده ترین روش های جستجو در Vim استفاده از / است:
/Alice
حالا اگه بخواید اون رو جایگزین کنید، میتونید از دستور cgn استفاده کنید. این دستور با پیدا کردن آخرین الگوی جستجو، شما رو تو حالت اینسرت قرار میده تا متن جدید رو وارد کنید.
مثال 2: جایگزینی در خط جاری
اگه بخواید فقط توی خط فعلی یه کلمه رو جایگزین کنید، دستور زیر رو اجرا کنید:
:s/Bella/Alice/g
این دستور تمام کلمات Bella رو توی خط جاری با Alice جایگزین می کنه.
مثال 3: جایگزینی در کل فایل
برای جایگزینی در کل فایل باید از علامت % به عنوان محدوده استفاده کنید:
:%s/Bella/Alice/g
این دستور تمام Bella های موجود در فایل را با Alice جایگزین خواهد کرد.
مثال 4: جستجو بدون حساسیت به حروف بزرگ و کوچک
جستجو توی Vim به حروف بزرگ و کوچک حساسه اما میتونین با گزینه i این حساسیت رو غیر فعال کنید:
:%s/rabbit/cat/gi
در این حالت کلمات Rabbit، RABBIT یا rabbit همه به cat تغییر پیدا می کنند.
مثال 5: جایگزینی همراه با تأیید
هر از گاهی باید قبل از انجام جایگزینی تصمیم بگیری. با اضافه کردن گزینه `c`، Vim از شما تأیید میگیره:
:%s/Alice/Bella/gc
مثال 6: جایگزینی فقط برای کلمات کامل
:%s/\<bored\>/sad/gi
این دستور فقط کلمه کامل bored را با sad جایگزین می کند.
نکات تکمیلی درباره Find and Replace در Vim
🔹 میتونی از عبارات منظم (Regex) توی Vim برای الگوهای پیچیده تر استفاده کنی.
🔹 اگر تازه کاری، بهتره که اول جایگزینی ها را با گزینه c انجام بدی تا از تغییرات ناخواسته جلوگیری کنی.
🔹 بیشتر کاربرای امروزی به جای Vim از Neovim استفاده می کنن. خبر خوب اینکه دستورات Find and Replace توی Vim و Neovim یکیه.
سخن آخر
ویرایشگر Vim با وجود قدمت طولانی همچنان یکی از محبوب ترین ابزار های ویرایش متن در دنیای لینوکسه.
دستور Find and Replace از ویژگی های کلیدی این ویرایشگره که به شما امکان اعمال تغییرات گسترده و سریع روی فایل ها رو میده. چه بخواید یه کلمه رو توی خط جاری تغییر بدید یا کل یه فایل رو بازنویسی کنید، این دستور انعطاف کافی را برای انجام هر دو تا سناریو رو داره.
اگر به دنبال یک ابزار سریع، سبک و قدرتمند برای ویرایش متن هستید، یادگیری دستورات Find and Replace در Vim میتونه بهره وری شما رو چند برابر کنه.
بله، Vim همچنان توسعه داده می شود و بسیاری از برنامه نویسان از آن یا نسخه مدرن آن (Neovim) استفاده می کنند.
خیر، اجرای عادی Vim به پایتون نیاز ندارد. تنها برخی پلاگین ها یا اسکریپت های خاص برای عملکرد خود به پشتیبانی از پایتون 3 نیاز دارند.
بله، Neovim بر پایه Vim ساخته شده و تقریباً تمام دستورات از جمله Find and Replace در هر دو محیط مشابه است.