Loading AI tools
من ويكيبيديا، الموسوعة الحرة
فيم (بالإنجليزية: Vim) هو محرر نصوص طُور وأطلق من قبل برام مولينار عام 1991 لأجهزة حواسيب أميجا.[10][11][12] تم إنشاء فيم كنسخة ممتدة للمحرر في آي Vi مع وجود العديد من الخصائص الإضافية المصممة لتكون مفيدة في تحرير الشيفرة المصدرية للبرامج. الاسم الكامل لفيم هو في آي المحسن Vi IMproved، وبسبب كونه متعدد المنصات فهو منتشر الاستعمال على أنظمة التشغيل الشبيهة بيونكس. وينضم فيم إلى عائلة البرمجيات الحرة والبرمجيات المفتوحة المصدر وتندرج بعض بنود رخصة استخدامه تحت مظلة العمل الخيري لتشجيع المستخدمين على التبرع لأطفال أوغندا وتعتبر هذه الرخصة متوافقة مع رخصة جنو العمومية، وعلى الرغم من تخصيصه لأنظمة أميجا في بدايته إلا انه تم تطويره للعمل على معظم منصات أنظمة التشغيل وفي عام 2006 تم انتقائه كأشهر محرر نصوص من قبل قراء مجلة لينكس جورنال.
نوع | |
---|---|
سمي باسم | |
نظام التشغيل | |
النموذج المصدري | |
المطورون | |
موقع الويب |
لغة البرمجة | |
---|---|
لغات البرمجة المدعومة | |
الإصدار الأول |
2 نوفمبر 1991 [4] |
الإصدار الأخير | |
المستودع | |
الرخصة | |
الملفات المنتجة |
مأخوذ عن | |
---|---|
اشتقاقات | |
تأثر بـ |
بدأ برام مولينار العمل على تطوير فيم لأجهزة أميجا في عام 1988 وفي عام 1991 قام بإطلاق النسخة الأولى من فيم وهي النسخة 1.14، وقام برام مولينار بتطوير فيم على المحرر «ستيفي» الذي قام بتطويره كل من تيم ثومبسون وتوني أندروس وجي أر (فرِد) وكان مخصصا لأنظمة «أتاري أس تي»[بحاجة لمصدر].
مثل في آي، لا تقتصر واجه فيم على القوائم والأيقونات وانما تمتد إلى أوامر تحريرية على واجهة المستخدم النصية، كما ويوجد أيضا لفيم واجهة رسومية تسمى «جي فيم» حيث تم إضافة قوائم وأدوات إلى الأوامر المشهورة في الواجهة الرسومية المبنية على واجهة سطر الأوامر الأصلية، وبالطبع هذا لا يعني ان واجهة سطر الأوامر تفتقد إلى ما يوجد في الواجهة الرسومية بل على العكس من ذلك حيث يعتبر اسخدام واجهة سطر الأوامر فعالا أكثر من أي أنماط أخرى للتحرير.
يحوي فيم على مقالة بسيطة تقود المستخدمين الجدد إلى طريقهم في عملية تحرير النصوص وتعليمهم أنماط الاستخدام وكيفية تنفيذ الأوامر ويمكن قراءة هذه المقالة بتنفيذ الأمر «فيم»، هذا بالإضافة إلى وجود دليل الاستخدام "Vim Users Manual" الذي يحوي كل شيء يحتاجه المستخدم لتحرير النصوص على فيم، ويمكن قراءة دليل الاستخدام من نفس محرر النصوص أو من الويب. كما ويحوي فيم أدوات للمساعدة ويمكن استعمالها بتنفيذ الأمر «الأمر help:» وهذه الأدوات تساعد المستخدمين على تصفح الأوامر والإضافات.
تعد عملية التخصيص في فيم من أهم نقاط القوة في هذا المحرر الفعال حيث يمكن السيطرة على الواجهة الرئيسية للمحرر بالتحكم بعدد كبير من خيارات التخصيص المتواجدة بهدف جعل المحرر بيئة مريحة لكل مستخدم حسب احتياجاته، وكجزء من عملية التخصيص يمكن لكل مستخدم أن يقوم بتعيين مفاتيح التحكم في لوحة المفاتيح التي يرغب بها لتنفيذ أمر معين فعلى سبيل المثال يمكن للمستخدم أن يقوم بتعيين المفاتيح (ALT + F5) لتنفيذ أمر حفظ الملف بينما قد يكون ذلك غير مريح لمستخدم اَخر فيقوم بتعيين المفاتيح (CTRL + S) لحفظ تعديلات الملف. هناك عدد هائل من الإضافات (Plugins) الموجودة للمحرر فيم والتي تقوم بإضافة وظائف جديدة للمحرر أو توسيع نطاق وظائف موجودة في الأصل ويتم كتابة هذه الإضافات باستخدام لغة برمجة نصية مخصصة لأغراض التطوير على منصة المحرر وتسمى فيم سكريبت "(vimscript)" ويمكن أيضا تطوير الإضافات باستخدام لغات برمجة أخرى مثل لوا (Lua) «تم دعم هذه اللغة في الإصدارة رقم 7.3 من فيم» وبيرل (Perl) وبايثون (Python) وروبي (Ruby) وتكل (Tcl) «أو تي سي أل» وراكيت (Racket) «المعروفة رسميا باسم PLT Scheme». و نظراً لهذه المرونة التي يقدمها فيم فقد ظهرت الكثير من المشاريع التي تقوم بتجميع النصوص البرمجية المعقدة ووضعها بين أيدي المستخدمين لتحويل فيم إلى أداة لتنفيذ مهام معقدة ومحددة وأيضا لتطوير الإضافات وإضافة نكهات مختلفة لتصرفات ووظائف المحرر، وكمثال لذلك هناك المشروع «فيم أوت لاينر» (VimOutliner) الذي يسمح لمستخدمي الأنظمة الشبيهة بيونكس القيام بتنظيم النصوص في المقاطع المختلفة على شكل هيكلية شجرية (Tree Structure)، وهناك أيضاً المشروع كريم الذي يهدف إلى جعل فيم بيئة تحرير نصية أشبه ببيئة (النقر والكتابة).
من البديهي أن يكون فيم متوافقا مع في آي نظراً لبناء فيم منذ البداية على أساس المحرر في آي من ناحية الوظائف والتصرفات ولكن ذلك يكون مرئياً في حالة تفعيل نمط محاكاة في آي، أما عند عند تثبيط نمط المحاكاة فإن فيم يحوي الكثير من التحسينات التي تجعله يتفوق على في آي وتجدر الإشارة هنا إلى أن فيم لن يكون متوافقاً بنسبة 100% مع في آي حتى في حالة تفعيل نمط المحاكاة نظراً لمواصفات يونكس المنفردة (Single Unix Specification) بالإضافة لمواصفات ومعايير بوسيكس (POSIX) ومن الأمثلة على عدم توافق فيم مع في آي هو أن فيم لا يدعم نمط في آي المفتوح (vi's open mode) انما يدعم النمط المرئي (visual mode).
و من الأمثلة على التحسينات التي أضافها فيم فوق في آي:
و الكثير الكثير من الميزات الأخرى سواء أكانت جزء من المحرر نفسه أو على شكل إضافة.
بينما كان في آي مخصصاً للعمل على بيئات يونكس فإن فيم تم دعمه على عدد كبير من المنصات والأنظمة منها:
التاريخ | الإصدارة | التعديلات والإضافات |
---|---|---|
يونيو، 1987 | غير متوفر | قام تيم ثومبسون بإطلاق الإصدارة "ستيفي" لمستخدمي المحرر في آي وهي استنساخ ل في آي على منصة أتاري أس تي وقام تيم أيضا بوضع الشيفرة المصدرية على يوزنت |
يونيو، 1988 | غير متوفر | قام توني أندروس بتطوير ستيفي ونقله إلى يونكس وأو أس 2 وقام أيضاً بإطلاق الإصدارة 3.10 ووضع الشيفرة المصدرية على يوزنت |
1988 | 1.0 | قام برام مولينار بتطوير [[في آي إيميتيشن]] (Vi IMitation) لنظام أميغا بالاعتماد على الإصدارة ستيفي ولم يتم نشر هذه النسخة |
نوفمبر 2, 1991 | 1.14 | الإصدارة الأولى لأميغا على جهاز فرد فيش |
1992 | 1.22 | تم نقل فيم لأنظمة يونكس وأصبح فيم الاًن ينافس في آي. |
ديسمبر 14, 1993 | 2.0 | النسخة الأولى ل فيم تحت الاسم الجديد (Vi IMproved) |
أغسطس 12, 1994 | 3.0 | أضافة الدعم لأكثر من نافذة |
مايو 29, 1996 | 4.0 | إضافة واجهة المستخدم الرسومية |
فبراير 19, 1998 | 5.0 | إضافة دعم تعليم الصيغة (syntax highlighting) وبداية الدعم للبرمجة النصية |
أبريل 6, 1998 | 5.1 | تصليح الكثير من الأخطاء البرمجية وإضافة الكثير من التحسينات |
أبريل 27, 1998 | 5.2 | دعم السطور الطويلة وايجاد متصفح الملفات وغير ذلك من الإضافات والتحسينات. |
أغسطس 31, 1998 | 5.3 | تصحيح أخطاء برمجية وإضافة تحسينات. |
يوليو 25, 1999 | 5.4 | بدء دعم تشفير الملفات وإضافة تحسينات |
سبتمبر 19, 1999 | 5.5 | تصحيح أخطاء برمجية وإضافة تحسينات. |
يناير 16, 2000 | 5.6 | تصحيح أخطاء برمجية وإضافة تحسينات. |
يونيو 24, 2000 | 5.7 | تصحيح أخطاء برمجية وإضافة تحسينات. |
مايو 31, 2001 | 5.8 | تصحيح أخطاء برمجية وإضافة تحسينات. |
سبتمبر 26, 2001 | 6.0 | طي الملفات وتفعيل نظام الإضافات ودعم عدة لغات بشرية. |
مارس 24, 2002 | 6.1 | تصحيح أخطاء برمجية وإضافة تحسينات. |
يونيو 1, 2003 | 6.2 | دعم جي تي كاي 2 (GTK2)، وإضافة الدعم للغة العربية، وإضافة الأمر (أمر try:)، بالإضافة لتعديلات بسيطة وتصحيح أخطاء برمجية. |
يونيو 7, 2004 | 6.3 | تصحيح أخطاء برمجية وإضافة تحسينات وتحديثات في الترجمات |
أكتوبر 15, 2005 | 6.4 | تصحيح أخطاء برمجية وتحديثات على لغات بيرل وبيثون وروبي. |
مايو 7, 2006 | 7.0 | إضافة المدقق اللغوي والمكمل اللغوي للكلمات، إضافة صفحات العلامات التبويبية، إبراز وتمييز السطر والعامود اللحظيين وغيرها الكثير من الإضافات. |
مايو 12, 2007 | 7.1 | تصحيح أخطاء برمجية |
أغسطس 9, 2008 | 7.2 | إضافة الدعم للفاصلة العائمة واعادة كتابة شاشة الرسم الرمزي بالإضافة إلى تصليح أخطاء برمجية وإضافة ملفات تعليم الصيغة للغات جديدة |
أغسطس 15, 2010 | 7.3 | إضافة الدعم للغة لوا (Lua) بالإضافة إلى بيثون 3 (Python3) وتشفير "(Blowfish (cipher" وأخيرا إضافة وظائف التكرار والاعادة المستمرة. |
نسرد تالياً قائمة بأهم أوامر التحرير النصية الخاصة ب فيم:
الأمر | التوصيف |
---|---|
:e مسار الملف | فتح الملف المراد تحريره وفي حالة عدم وجوده سيتم إنشاء ملف جديد بالاسم المشار اليه في مسار الملف |
:w مسار الملف | حفظ الملف وفي حالة عدم وجوده سيتم إنشاء ملف جديد بالاسم المشار اليه في مسار الملف |
:q | الخروج من محرر النصوص |
:q! | الخروج من محرر النصوص مع التأكيد على عدم حفظ التعديلات |
:wq | حفظ الملف والخروج من محرر النصوص |
:x | ان قام المستخدم بالتغيير فسيقوم فيم بحفظ التغيرات والخروج من بيئة المحرر وان لم يقم المستخدم بالتغيير فسيتم الخروج فقط من دون الحفظ |
الأمر | التوصيف |
---|---|
j | تحريك المؤشر إلى الأعلى لمسافة سطر واحد لكل حركة |
k | تحريك المؤشر إلى الأسفل لمسافة سطر واحد لكل حركة |
l | تحريك المؤشر إلى اليمين لمسافة حرف واحد لكل حركة |
h | تحريك المؤشر إلى اليسار لمسافة حرف واحد لكل حركة |
e | تحريك المؤشر إلى نهاية الكلمة |
E | تحريك المؤشر إلى نهاية أول فراغ بعد الكلمة |
b | تحريك المؤشر إلى بداية الكلمة |
B | تحريك المؤشر إلى بداية أول فراغ بعد الكلمة |
0 | تحريك المؤشر إلى بداية السطر |
^ | تحريك المؤشر إلى بداية أول كلمة غير فراغية في السطر |
$ | تحريك المؤشر إلى نهاية السطر |
H | تحريك المؤشر إلى أول سطر على شاشة العرض |
M | تحريك المؤشر إلى سطر الذي يمثل نصف شاشة العرض |
L | تحريك المؤشر إلى اَخر سطر على شاشة العرض |
:n | تحريك المؤشر إلى السطر رقم n |
الأمر | التوصيف |
---|---|
i | ادخال الكلمة فبل المؤشر |
I | إدخال الكلمات إلى أول السطر الحالي |
a | إلصاق بعد المؤشر |
A | إلصاق أسفل السطر الحالي |
o | فتح سطر جديد تحت السطر الحالي |
O | فتح سطر جديد فوق السطر الحالي |
C | تبقى الجملة على ما هي عليه ويتم تغيير كل السطر ابتدائا من الكلمة التي استدعي فيها هذا الأمر |
ESC | الخروج من نمط التعديل. |
الأمر | التوصيف |
---|---|
x | حذف الحرف الكامن فوق المؤشر |
X | حذف الحرف الكامن قبل الحرف الذي يقع فوق المؤشر |
dd | حذف السطر الذي يقع عليه المؤشر |
:d | حذف السطر الذي يقع عليه المؤشر |
الأمر | التوصيف |
---|---|
v | البدء بتعليم أو انتقاء الحروف، بإمكانك استخدام الحروف المذكورة سالفاً للتحرك في الاتجاهات (j, k, l, h) |
V | البدء بتعليم أو انتقاء السطور |
ESC | الخروج من النمط المرئي |
الأمر | التوصيف |
---|---|
~ | تغيير حالة الحرف من حرف كبير إلى حرف صغير، على سبيل المثال تغيير الحرف (A) إلى الحرف (a) ويمكن تنفيذ ذلك في نمط سطر الأوامر والنمط المرئي |
> (V) | إزاحة لليمين لتطبيق المسافة البادئة |
<(V) | إزاحة لليسار لتطبيق المسافة البادئة |
c (V) | تغيير النص المعلم |
y (V) | نسخ النص المعلم |
d (V) | حذف النص المعلم |
yy أو:y أو Y | نسخ السطر الواقع عليه المؤشر |
dd أو:d | حذف السطر الواقع عليه المؤشر |
p | لصق النص المنسوخ أو المحذوف (عملية الحذف في فيم هي عبارة عن عملية قص أو قلع وليست حذف بالمعنى التام وبالتالي النص المحذوف يمكن إلصاقه) |
P | لصق الحروف قبل المؤشر وفي حالة نسخ السطور يتم اللصق في السطر الذي يسبق السطر الذي يحوي المؤشر |
الأمر | التوصيف |
---|---|
u | إعادة حالة التحرير إلى الحركة السابقة وتتم إعادة الحركات حركة واحدة لكل كبسة على الحرف u |
U | إعادة حالة التحرير إلى الحالة التي كان عليها السطر قبل بدء التعديل عليه |
CTRL + r | إعادة حالة التحرير إلى الحركة اللاحقة وتتم إعادة الحركات حركة واحدة لكل مرة يتم فيها تنفيذ CTRL + r |
الأمر | التوصيف |
---|---|
/{الكلمة أو الجملة أو النمط} | بتنفيذ هذا الأمر يمكنك البحث عن كلمة محددة أو جملة أو حتى ايجاد الكلمات أو النصوص التي تتبع نمط معين وذلك باستخدان التعبير النمطي |
nvis | في حالة وجود أكثر من نتيجة لعملية البحث فباستخدام هذا الأمر تستطيع الوصول إلى نتيجة البحث اللاحقة |
N | في حالة وجود أكثر من نتيجة لعملية البحث فباستخدام هذا الأمر تستطيع الوصول إلى نتيجة البحث السابقة |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.