منبع اصلی نوشتار زیر در این لینک قرار دارد

replace کردن کلمه ای در تمام فایل های یک پوشه از طریق emacs

برای refactor کردن کد یکی از کارهایی که معمولا انجامش ضروری است تغییر اسم متغییری در کل پروژه است. در emacs چگونه این کار انجام می شود؟ با ابزاری مثل rgrep باید همه چیز را در پوشه ها پیدا کرد و دانه دانه ویرایش کرد؟

روش درست استفاده از (dired (emacs file manager است. در این روش خیلی ساده با استفاده از دستور find-dired همه ی فایل های مربوط به پروژه را لیست می کنید. سپس با m می توانید فایل هایی که مایل به جستجو هستید را mark کنید. البته ابزار با دستور % m می توانید برای mark کردن در صفحه از regex استفاده کنید که سرعت عمل بیشتری دارد . به طور مثال من همه ی فایل ها را می خواهم mark کنم پس در regex مربوطه \".\" می زنم و همه mark می شوند.

حالا با استفاده از دستور dired-do-query-replace-regexp می توانم دو متغییر بدهم که اولی مقدار جستجو و دومی مقدار تغییر هست. سپس در همه فایل ها نتیجه را بر می گردانند با y می توانم ویرایش هر کدام را تایید کنم و با n هم رد کنم. برای اینکه یک فایل را کلا replace کند می توانم از \"!\" استفاده کنم. از طرفی اگر خواستم به نتیجه قبلی برگردم \"^\" به من کمک می کند