دستورات جایگزینی متن

یکی از قابلیت‌های قدرتمند ویم، دارا بودن یک نوع فرمان SED داخلی است. این فرمان که در ویم معمولاً substitute خوانده می‌شود، ابزار بسیار پیشرفته‌ای برای یافتن و ویرایش متن به وسیله‌ی الگو‌های رجکس است. با استفاده از این دستور، کاربر ویم می‌تواند ویرایش‌های عظیم و پیچیده‌ای را روی فایل‌ها اعمال کند. عملیات‌های طولانی و طاقت فرسای اصلاح متنی طولانی با استفاده صحیح از این دستور به آسانی صحبت کردن با بهترین دوستتان می‌شوند.

برای مثال, یک فایل html با محتوای زیر داریم.

Quote of the day

Shopenhauer

"The majority of men... are not capable of thinking, but only of believing, and... are not accessible to reason, but only to authority."

(Arthur Shopenhauer)

فرض می‌کنیم که این بخشی از یک مقاله دانشگاهی یا پستی برای یک وبلاگ است. همچنین فرض می‌کنیم که ما نام آرتور شوپنهاور را از اول این فایل اشتباه تایپ کرده‌ایم. به‌جای Sch برای صدای ش در آلمانی از Sh در انگلیسی استفاده کرده‌ایم. حالا ساعت‌ها کار ما بخاطر این اشتباه غیرقابل ارائه است.

برای حل این مشکل از یک دستور جایگزینی ساده استفاده می‌کنیم.

:%s/Shopenhauer/Schopenhauer/g
اجازه بدهید دستور را خرد کنیم.

  • % همیشه اشاره به فایل فعلی در ویم دارد، اینجا یعنی در این فایل بگرد
  • s شروع دستور جستجو و جایگزینی همیشه با این حرف است. به معنی substitute
  • /الگوی هدف/
  • /الگوی مقصد/
  • g انجام عملیات برای تمامی مچ‌ها
در ویم نقطه . اشاره به خط زیر نشانگر دارد

سینتکس ساده ی دستورات جایگزینی به شکل زیر است:
:s/search/replace/flags
  • c تایید کردن هر جایگزینی بصورت دستی
  • e ساکت کردن ارورها در صورتی که الگو پیدا نشود
  • i نادیده گیری حروف بزرگ و کوچک ignorecase
  • I حساسیت به حروف بزرگ و کوچک
  • g انجام جایگزینی در تمام مچ‌ها، در غیر این صورت جایگزینی پس از اولین مچ متوقف می‌شود
  • n نمایش تعداد مچ‌ها و عدم جایگزینی