وایل (ویرایشگر نوشتار)

**وایل (vile)** یک ویرایشگر نوشتار است که جنبه‌هایی از ویرایشگرهای Emacs و vi را آمیخته می‌کند. این ویرایشگرها به طور سنتی در دو جبهه مخالف جنگ ویرایشگرها قرار دارند، زیرا کاربران هر یک از آنها تمایل دارند احساسات شدیدی نسبت به ویرایشگری که از آن کاربری نمی‌کنند، داشته باشند. وایل تلاش می‌کند تا این مواضع را با هم آشتی دهد.

*vile* مخفف عبارت "VI Like Emacs" است. vile 9.6 در فصل ۱۸ کتاب O'Reilly با عنوان "یادگیری ویرایشگرهای vi و Vim" ارائه شده است.  نسخه قدیمی‌تر (vile 8.0) در فصل ۱۲ کتاب O'Reilly با عنوان "یادگیری ویرایشگر vi" ارائه شده است. 

این برنامه همچنین برای سامانه‌ی پنجره X با نام **xvile**  و برای مایکروسافت ویندوز با نام **winvile** شناخته می‌شود.

vile در آغاز بدست پاول فاکس ایجاد و نگهداری شد. در سال ۱۹۹۶، نگهداری آن به توماس دیکی،  که در سال‌های گذشته سهم عمده‌ای در توسعه کدبیس داشته است، واگذار شد.

## یادگیری استفاده از وایل
[چپ|بندانگشتی|مثالی از [فهرست بافر]، یک پنجره پویا که با تغییر بافر به‌روزرسانی می‌شود.](https://fa.wikipedia.org/wiki/%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87:Vile-in-terminal.png)
چپ|بندانگشتی|وینویل و کمک آنلاین با تمرکز بر تفاوت‌ها از vi.
از لحاظ تاریخی، مستندات vile بر تفاوت‌های آن با vi تمرکز داشته است. این برخلاف دیگر کلون‌های رایج vi ( elvis ، nvi و vim ) است که پسوندهای مربوط به خود را با مستندات اصلی vi ترکیب کرده‌اند.

مستندات vile سه بخش است:

* پرونده راهنمای آنلاین (تایپ کنید  )
* مباحث تخصصی مانند زبان ماکرو (پرونده‌های متنی)
* مستندات داخلی.
** جداول فرمان‌ها و سایر داده‌ها
** پنجره‌های پویا که محتویات رجیستر، تنظیمات حالت و غیره را نشان می‌دهند.

vile از ترکیبی از کد دست‌ساز و جداول پردازش‌شده بدست یک برنامه‌ی ویژه ساخته شده است. اطلاعات از پیش تعریف‌شده از جداول را می‌توان به روش‌های مختلفی رندر کرد، از جمله نمایش فرمان‌ها موجود، ارائه تکمیل نام و غیره. در سایر نسخه‌های *vi* ، جداول مشابه از کد دست‌ساز متمایز نیستند.

در سایر نسخه‌های *vi* ، اطلاعات نمایش داده شده ایستا هستند و برای به‌روزرسانی نیاز به تعامل کاربر دارند. با این حال، در vile، این اطلاعات پویا هستند - این پنجره‌های ویژه با تغییراتی که در ویژگی‌هایی که ارائه می‌دهند ایجاد می‌شود، به‌روزرسانی می‌شوند، برای نمونه فهرست تمام بافرهای موجود در حافظه، تنظیمات حالت مربوط به بافری که فوکوس دارد و غیره.

در حالی که بسیاری از ویژگی‌های vile اکنون در سایر ویرایشگرهای سازگار با vi یافت می‌شوند، برخی از توانمندترین آنها پیش از پذیرش گسترده در سایر ویرایشگرها پیاده‌سازی شده‌اند. برای نمونه، چندین پنجره از آغاز از ویژگی‌های نخستین vile (و xvi) بودند. همین امر در مورد خواندن از pipeها و complex fences نیز صدق می‌کند. برخی از این موارد در کتاب O'Reilly آورده شده است، اگرچه هیچ مطالعه دقیقی در مورد نحوه پذیرش و تطبیق ویژگی‌ها در انواع *vi* و *emacs* انجام نشده است.

## ویژگی‌ها

### تکمیل فرمان
vile از تکمیل دستور برای چندین عنصر یک فرمان پشتیبانی می‌کند: نام فرمان، نام پرونده، نام پوشه و مقادیر حالت.

### حالت‌های اصلی
هم وی و هم ایمکس دارای mode هستند که تنظیماتی هستند که بر رفتار برنامه تأثیر می‌گذارند. vile با ارائه سه سطح mode: *global* ، *buffer* و *window* ، modeهای vi مانند *list* ، *number* و دگره را گسترش می‌دهد. modeهای *بافر* با درونمایه‌ی بافر، مانند line-terminators و ویژگی‌های تنها خواندنی، مرتبط هستند. همه این modeها از پیش تعریف شده‌اند. vile را می‌توان با تعریف *majormodes* ، که تنظیمات ویژه modeهای *بافر* را با ارتباط با نوع پرونده ترکیب می‌کنند، سفارشی کرد. این *majormodesها* همچنین دارای modeهای ویژه‌ای مانند ارتباط با یک *فیلتر نحوی* ویژه هستند.

### برجسته‌سازی سینتکس
vile با اجرای یک برنامه *فیلتر نحوی* که درونمایه‌ی بافر را تجزیه می‌کند، برجسته‌سازی نحوی را انجام می‌دهد. در آغاز این یک برنامه جداگانه بود. با این حال، برای بهبود عملکرد و جلوگیری از مشکلات نمایش، این فیلترهای نحوی معمولاً در ویرایشگر کامپایل می‌شوند. بیشتر فیلترهای نحوی با lex (ترجیحاً flex ) پیاده‌سازی شده‌اند و بقیه در C برای رسیدگی به گرامرهای نامنظم مانند Perl و Ruby هستند. همه فیلترهای نحوی از یک طرح مشابه پیروی می‌کنند:

* اطلاعات مربوط به رنگ و ویژگی‌های ویدیو را از یک پرونده بیرونی خوانده و در یک جدول هش زنجیره‌ای قرار می‌دهد.
* پرونده را طبق قوانین لغوی تجزیه کنید،
* اطلاعات مربوط به ویژگی‌های رنگ و ویدئو را برای هر عنصر واژگانی پیدا کنید، و
* یک کپی نشانه‌گذاری شده از پرونده بنویسید که بدست وایل خوانده شود (از طریق یک pipe اگر فیلترهای نحوی برنامه‌های خارجی هستند، یا از طریق یک فراخوانی تابع اگر داخلی هستند).

وایل اطلاعات نشانه‌گذاری را با استفاده از نواحی جدا شده با شماره خط و ستون، روی محتویات بافر ترسیم می‌کند. این نشانه‌گذاری به محتویات بافر زیرین متصل نیست. به‌روزرسانی نشانه‌گذاری همزمان با تغییر بافر، نیاز به تحلیل مجدد دارد. این کار به طور خودکار هنگام مکث کاربر انجام می‌شود.

## تاریخچه
وایل از سال ۱۹۹۰ همواره در حال توسعه بوده است. 

## همچنین ببینید

* فهرست ویرایشگرهای نوشتار
* مقایسه ویرایشگرهای نوشتار

## بنمایه‌ها

## خواندنی بیشتر

* نقد و بررسی: ویرایشگر بدذات چیزی جز این نیست
* نقد و بررسی: وایل و ایکسویل
*    ]

## پیوندهای بیرونی

* 
* 
* 
* William Totten's vile page
* vi Lovers Homepage
* vi Software Links
* alt.sources posting, June 1991

رده:نرم‌افزارهایی که از پروانه جی‌پی‌ال استفاده می‌کنند
رده:وی‌آی
رده:کورسز (کتابخانه برنامه‌نویسی)
رده:ترم‌کپ
رده:ایمکس
رده:ویرایشگرهای متن ویندوز
رده:ویرایشگرهای متن یونیکس
رده:ویرایشگرهای متن آزاد
رده:صفحه‌های با ترجمه بازبینی‌نشده