ویم

نسخهٔ بهبودیافته ویرایشگر متن با صفحه‌کلید Vi
(تغییرمسیر از ویم (ویرایشگر متن))

ویم (به انگلیسی: Vim) (سرنام عبارت vi improved به معنای وی‌آی بهبود یافته) یک ویرایشگر متن است که توسط برام مولینار در سال ۱۹۹۱ برای رایانه‌های آمیگا عرضه شد. این نام‌گذاری به این دلیل است که ویم به عنوان یک گسترش‌دهندهٔ ویرایشگر وی‌آی توسعه داده شده بود. ویم در آغاز برای رایانه‌های آمیگا منتشر شده بود؛ اما پس از آن به سوی چندسکویی پیش رفت.

Vim
Vim logo
ویم در حال اجرا در یک برابرساز ترمینال
نویسنده(های)
اصلی
برام مولینار
انتشار ابتدایی۱۹۹۱ نوامبر ۲؛ ۳۲ سال پیش (۲-۱۹۹۱}})
مخزن
نوشته‌شده باسی و ویم‌اسکریپت
بن‌سازه رایانشچندسکویی: یونیکس، لینوکس، مایکروسافت ویندوز، آی‌اواس، اندروید
در دسترس بهانگلیسی، آلمانی، اسپانیایی، ایتالیایی، چینی، روسی، فارسی، فرانسوی، لهستانی[۱]
گونهویرایشگر متن
پروانهنرم‌افزار آزاد، بخشش‌افزار
وبگاه

ویم یک پروژهٔ نرم‌افزاری متن‌باز است. مولینار، نویسندهٔ آن، برای حمایت از کودکان اوگاندا کاربران را تشویق به بخشش برای مؤسسهٔ خیریه‌ای می‌کند که به آن کودکان یاری می‌رساند.[۲]

از دلایل علاقهٔ توسعه دهندهها به ویم این است که افزونه پذیر (extensible) است و افزونه‌های زیادی برای ویم وجود دارد؛ مثلاً نرد تری (nerd tree) که یک نمایشگر فایل درختی است یا vim-jedi که یک افزونهٔ کامل کنندهٔ کد است.

همین‌طور ویم کلیدهای ترکیبی دارد که می‌تواند خیلی کارها را اتوماتیک کند؛ مثلاً می‌شود با تایپ سه حرف، پنج کلمه را پاک کرد و برای افرادی که مدت طولانی از ویم استفاده می‌کنند مثل توسعه دهنده‌ها می‌تواند خیلی مفید باشد.

تاریخچه ویرایش

پیش‌درآمد برنامه Vim برنامه Stevie (ویرایشگر ST برای VI Enthusiasts) بود که در سال ۱۹۸۷ توسط تیم تامپسون برای Atari ST[۳][۴] ایجاد شد و توسط تونی اندروز[۳][۵] و GR (فرد) والتر توسعه یافت.[۶][۷]

در سال ۱۹۸۸ برام مولنار بر پایه تجربه کاری خود بر روی Stevie، کار بر روی Vim را برای کامپیوتر آمیگا آغاز کرد و در سال ۱۹۹۱ اولین نسخه عمومی آن را منتشر کرد (Vim v1.14).[۸][۹]

در زمان اولین انتشار، نام "Vim" مخفف "Vi IMitation" بود، اما این نام در اواخر سال ۱۹۹۳ به "Vi IMproved" تغییر کرد.[۱۰]

رابط کاربری ویرایش

 
gVim نسخه ۷٫۳

مانند vi، رابط Vim بر اساس منوها یا نمادها نیست، بلکه بر اساس دستورها داده شده در یک رابط کاربری متنی است. حالت GUI آن (gVim) به منظور افزودن دستورها معمول در برنامه‌های امروزی دارای منوها و نوارهای ابزار است. اما عملکرد اصلی و کامل آن هنوز از طریق حالت خط فرمان آن انجام می‌شود. ایده اصلی Vi (و با فرمت Vim) نگه داشتن انگشتان تایپیست در ردیف اصلی است و این موضوع می‌تواند برای یک تایپیست یک مزیت باشد.[۱۱]

در برنامه Vim یک آموزش برای مبتدیان به نام vimtutor وجود دارد که همراه با Vim نصب می‌شود. اما به عنوان یک فایل اجرایی جداگانه نیز قابلیت اجرا دارد و می‌توان آن را با استفاده از محیط shell اجرا کرد.[۱۲] Vim دارای یک کتابچه راهنمای کاربران است ویژگی‌های Vim و پرسش‌های متداول را در اختیار کاربر قرا می‌دهد. این راهنما در درون برنامه Vim یا به صورت آنلاین قابل استفاده است.[۱۳][۱۴]

به علاوه Vim دارای یک ابزار کمک در داخل برنامه است (با استفاده از دستور :help) که به کاربران اجازه می‌دهد از طریق دستورها و ویژگی‌ها پاسخ سوالات خود را پیدا کند.

حالت‌ها ویرایش

Vim دارای ۱۲ حالت ویرایش مختلف است که ۶ مورد از آنها انواع ۶ حالت اصلی هستند.[۱۵] مهم‌ترین حالت‌ها عبارتند از:

  • حالت عادی - برای دستورها ویرایشگر استفاده می‌شود. این حالت، حالت پیش فرض برنامه است، مگر اینکه گزینه insertmode مشخص شده باشد.
  • حالت بصری - شبیه حالت عادی، اما برای برجسته سازی برخی از مناطق متن استفاده می‌شود. دستورها عادی را می‌توان در ناحیه برجسته شده اجرا کرد، به عنوان مثال برای جابجایی یا ویرایش یک متن انتخاب شده.
  • حالت درج - شبیه به ویرایش در اکثر ویرایشگرهای مدرن. در این حالت می‌توان با متن را درج کرد یا تغییر داد.
  • حالت خط فرمان - در پایین پنجره Vim از خط فرمان تک خطی به عنوان ورودی بهره می‌برد. دستورها عادی (که با: شروع می‌شوند) و برخی کلیدهای دیگر این حالت را فعال می‌کنند که برای اقدامات خاص (از جمله جستجوی الگو و فرمان فیلتر) به کار می‌رود.

نویسه Vim ویرایش

نویسه Vim (که Vimscript یا VimL نیز نامیده می‌شود)[۱۶] زبان برنامه‌نویسی ساخته شده در Vim است.[۱۷] نسخه‌های اولیه Vim برای تعریف جریان کنترل و عملکرد اضافه، بر اساس زبان ویرایشگر ex که در برنامه vi بود، دستوراتی را اضافه کردند. با شروع از نسخه ۷، نویسه Vim از انواع داده‌های پیشرفته تر مانند لیست‌ها و فرهنگ لغت‌ها و شکل ساده شده‌ای از برنامه‌نویسی شی گرا پشتیبانی می کند. توابع داخلی مانندmap() وfilter()یک فرم اولیه از برنامه‌نویسی عملکردی را امکان‌پذیر می‌کنند و اسکریپت Vim از نسخه ۸٫۰ دارای لامبدا است. اسکریپت Vim بیشتر به سبک برنامه‌نویسی دستوری نوشته شده‌است.

ماکروهای Vim می‌توانند شامل دنباله‌ای از دستورها حالت عادی باشند، اما می‌تواند برای کارهای پیچیده‌تر، دستورها ex یا توابع نوشته شده در نویسه Vim را فراخوانی کنند. تقریباً تمام افزونه‌هایی (به نام پلاگین یا معمولاً نویسه) عملکرد اصلی Vim را بر عهده دارند، با نویسه Vim نوشته شده‌اند. اما افزونه‌ها می‌توانند به زبان‌های دیگری مانند Perl،[۱۸] Python،[۱۹] Lua،[۲۰] Ruby،[۲۱] Tcl,[۲۲] یا راکت[۲۳] نوشته شوند. این افزونه‌ها را می‌توان به صورت دستی یا از طریق یک مدیر پلاگین مانند Vundle, Pathogen یا Vim-Plug نصب کرد.

مثال ویرایش

" This is the Hello World program in Vim script.
echo "Hello, world!"

" This is a simple while loop in Vim script.
let i = 1
while i < 5
  echo "count is" i
  let i += 1
endwhile
unlet i

دسترسی ویرایش

در حالی که vi در ابتدا فقط در سیستم عامل‌های یونیکس در دسترس بود، Vim به بسیاری از سیستم عامل‌ها از جمله AmigaOS ( پلتفرم هدف اولیه)، Atari MinT، BeOS، DOS، Windows از Windows NT 3.1، OS/2، OS/390 راه یافته‌است. MorphOS, OpenVMS, QNX, RISC OS, Linux, BSD و Mac OS کلاسیک.[۲۴] برنامه Vim در تمام نسخه‌های MacOS اپل ارائه می‌شود.[۲۵]

نسخه‌های تبدیل شده مستقل Vim برای اندروید[۲۶][۲۷] و iOS نیز در دسترس هستند.[۲۸]

Neovim ویرایش

Neovim
 
نام‌های دیگرNVim
انتشار ابتدایی۱ نوامبر ۲۰۱۵؛ ۸ سال پیش (۲۰۱۵-01}})[۲۹]
انتشار پایدار
0.9.5[۳۰]  
۳۰ دسامبر ۲۰۲۳؛ ۳ ماه پیش (۳۰ دسامبر ۲۰۲۳-خطا: زمان نامعتبر}})[۲۹]
مخزن
نوشته‌شده باC, نویسه Vim, Lua
سیستم‌عامل ویندوز و شبه‌یونیکس
پروانهApache-2.0
وبگاه

Neovim[۳۱] یک انشعاب از Vim با یک سری اضافات[۳۲] است که در تلاش است تا توسعه پذیری و قابلیت نگهداری Vim را بهبود بخشد.[۳۳] Neovim از همان نحو پیکربندی Vim پیروی می‌کند؛ بنابراین یک فایل پیکربندی مشابه را می‌توان با هر دو ویرایشگر استفاده کرد، اگرچه تفاوت‌های جزئی در جزئیات گزینه‌ها وجود دارد.[۳۴] اگر از ویژگی‌های اضافه شده Neovim استفاده نشود، Neovim تقریباً با تمام ویژگی‌های Vim سازگار است.[۳۵]

پروژه Neovim در سال ۲۰۱۴ و با تلاش برخی از اعضای انجمن Vim انجام شد که با استفاده از بازسازی سطح بالا، به هدف‌هایی از جمله ارائه نویسه‌ها و پلاگین‌های قدرتمندتر و همچنین ادغام بهتر با رابط‌های کاربری گرافیکی دست پیدا کنند.[۳۶][۳۷] این پروژه نرم‌افزار رایگان است و کد منبع آن در GitHub موجود است.[۳۸]

Neovim در مارس ۲۰۱۴ جمع‌آوری سرمایه موفقی داشت،[۳۹] که حداقل می‌توانست از یک توسعه دهنده تمام وقت پشتیبانی کند. چندین فرانت اند در حال توسعه هستند و از قابلیت‌های Neovim استفاده می‌کنند.[۴۰][۴۱][۴۲]

ویرایشگر Neovim در بایگانی بسته شخصی[۴۳] که توسط اوبونتو و برخی از برنامه‌های مدیریت بسته معمولی میزبانی می‌شود، موجود است[۴۴] که نصب آن را بر روی انواع سیستم‌عامل ممکن می‌سازد.

جستارهای وابسته ویرایش

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

منابع ویرایش

  1. "Vim in non-English languages". Retrieved 14 December 2010.
  2. keimasi (۱۵ اردیبهشت ۱۳۹۱). «راهنمای استفاده از ویرایشگر VI». LinuxReview. بایگانی‌شده از اصلی در ۲۰ سپتامبر ۲۰۱۲. دریافت‌شده در ۱۶ اردیبهشت ۱۳۹۱.
  3. ۳٫۰ ۳٫۱ Thompson, Tim (2000-03-26). "Stevie". Retrieved 2010-12-27.
  4. .
  5. .
  6. Vim (20 January 2015). "intro.txt". Vim Help (به انگلیسی). Vim. Archived from the original on 9 July 2016. Retrieved 9 July 2016.
  7. "vim(1)". die.net. Vim. 11 April 2006. Archived from the original on 9 July 2016. Retrieved 9 July 2016. Vim is based on Stevie, worked on by: Tim Thompson, Tony Andrews and G.R. (Fred) Walter. Although hardly any of the original code remains.
  8. "The continuing story of Vim" (PDF).
  9. "The history of Vim – Jovica Ilic". 5 June 2014. Retrieved 25 January 2020.
  10. "VILE (Vi Like Emacs) – Frequently Asked Questions (FAQ)". Retrieved 7 September 2019.
  11. {{cite book}}: Empty citation (help)
  12. Moolenaar, Bram (3 November 2010). "Vim documentation: usr_01". Retrieved 28 August 2019.
  13. Vim help files at vimhelp.org
  14. {{cite book}}: Empty citation (help)
  15. Moolenaar, Bram (8 December 2010). "Vim documentation: intro". vimdoc.sourceforge.net. Archived from the original on 2019-08-27. Retrieved 2019-08-28.
  16. Klein, Benjamin. "The VimL Primer: Edit Like a Pro with Vim Plugins and Scripts by Benjamin Klein | The Pragmatic Bookshelf". Archived from the original on January 25, 2020. Retrieved 25 January 2020.
  17. "Vim documentation: usr_41". vimhelp.org.
  18. Verdoolaege, Sven; Gerassimof, Matt. "Vim documentation: if_perl". Retrieved 2019-08-27.
  19. Moore, Paul. "Vim documentation: if_pyth". Retrieved 2019-08-27.
  20. Carvalho, Luis. "Vim documentation: if_lua". Retrieved 2019-08-27.
  21. Maeda, Shugo. "Vim documentation: if_ruby". Retrieved 2019-08-27.
  22. Wilken, Ingo. "Vim documentation: if_tcl". Retrieved 2019-08-27.
  23. Khorev, Sergey. "Vim documentation: if_mzsch". Retrieved 2019-08-27.
  24. ":help sys-file-list" "Vim Online: Downloads". Retrieved 2007-01-07.
  25. "Mac OS X Manual Page For vim(1)". developer.apple.com. Apple Inc. Retrieved 2010-01-12.
  26. "VimTouch, the development has stalled on this app". GitHub. Retrieved 2015-08-09.
  27. "DroidVim, under active development". GitHub. Retrieved 2017-03-05.
  28. "Vim – Applidium, mobile agency in Paris". Archived from the original on 2012-01-20. Retrieved 2015-08-11.
  29. ۲۹٫۰ ۲۹٫۱ "Releases • neovim/neovim". GitHub. Retrieved 2021-07-15.
  30. "Nvim 0.9.5". 30 دسامبر 2023. Retrieved 3 January 2024.
  31. "Neovim: vim, out of the box".
  32. "Nvim documentation: vim_diff".
  33. "Neovim Vision".
  34. "Switching to NeoVim".
  35. "How to start using Neovim instead of Vim".
  36. "Neovim: Rebuilding Vim For the 21st Century".
  37. "Vimcasts.org blog post".
  38. "GitHub – neovim/neovim: Vim-fork focused on extensibility and usability". GitHub. 2019-08-29.
  39. "Neovim". Bountysource. 23 March 2014. Retrieved 2021-03-20.
  40. "NyaoVim frontend". GitHub. 2019-08-29.
  41. "Mac OS X frontend". GitHub. 2019-08-29.
  42. "Neovim-Qt frontend". GitHub. 2020-07-21.
  43. "Neovim PPA information".
  44. "Neovim wiki: installation instructions". GitHub. 2019-08-29.