Vim (тэкставы рэдактар)

**Vim** ( ;  скарачэнне ад ***Vi IMproved***) — свабодны экранны тэкставы рэдактар з адкрытым зыходным кодам. Гэта палепшаны клон vi ад Біла Джоя. Аўтар Vim, Брэм Муленаар, стварыў Vim з порта рэдактара Stevie для Amiga і выпусціў версію для грамадскасці ў 1991 годзе. Vim прызначаны для выкарыстання як з інтэрфейсу каманднага радка, так і ў якасці аўтаномнай праграмы ў графічным інтэрфейсе карыстальніка.

З моманту выпуску для Amiga кросплатформавая распрацоўка зрабіла яго даступным на многіх іншых сістэмах. У 2018 годзе ён быў прызнаны самым папулярным рэдактарам сярод чытачоў *Linux Journal*; у 2015 годзе апытанне распрацоўшчыкаў Stack Overflow паказала, што гэта трэці па папулярнасці тэкставы рэдактар, а ў 2019 годзе — пятае па папулярнасці асяроддзе распрацоўкі.

## Гісторыя 
Папярэднік Vim, Stevie (ST Editor for VI Enthusiasts), быў створаны Цімам Томпсанам для Atari ST у 1987 годзе і дапрацаваны Тоні Эндрусам Гэта быў адзін з першых папулярызаваных клонаў Vi, які не выкарыстоўваў зыходны код Vi. У зыходным кодзе Vi выкарыстоўваўся тэкставы рэдактар Ed, распрацаваны AT&T, і таму Vi маглі выкарыстоўваць толькі тыя, хто меў ліцэнзію на зыходны код AT&T. Базаванне Vim на зыходным кодзе для Stevie азначала, што праграма можа распаўсюджвацца без патрабавання ліцэнзіі на зыходны код AT&T.

Брэм Муленаар пачаў працаваць над Vim для камп‘ютара Amiga ў 1988 годзе, а першы публічны рэліз (Vim v1.14) адбыўся ў 1991 годзе.

На момант першага выпуску назва «Vim» была абрэвіятурай ад «Vi IMitation», але ў канцы 1993 года гэта змянілася на «Vi IMproved» 

### Гісторыя выпускаў 
## Ліцэнзія 
Vim выпускаецца па ліцэнзіі Vim, якая ўключае ў сябе некаторыя пункты аб дабрачынным праграмным забеспячэнні, якія заахвочваюць карыстальнікаў, якія любяць праграмнае забеспячэнне, разглядаць магчымасць ахвяраванняў дзецям ва Угандзе. Ліцэнзія Vim сумяшчальная з GNU General Public License праз спецыяльны пункт, які дазваляе распаўсюджваць мадыфікаваныя копіі пад GNU GPL версіі 2.0 або больш позняй.

## Інтэрфейс 
Як і vi, інтэрфейс Vim заснаваны не на меню або значках, а на камандах, якія даюцца ў тэкставым карыстальніцкім інтэрфейсе; яго GUI рэжым, **gVim**, дадае меню і панэлі інструментаў для каманд, якія часта выкарыстоўваюцца, але поўная функцыянальнасць па-ранейшаму даступная праз рэжым каманднага радка. Vi (і, адпаведна, Vim) дазваляе машыністцы трымаць пальцы на галоўным радку, што можа быць перавагай для сэнсарнай машыністкі.

У Vim ёсць убудаваны падручнік для пачаткоўцаў пад назвай vimtutor, які звычайна ўсталёўваецца разам з Vim, але з’яўляецца асобным выканальным файлам і можа запускацца камандай абалонкі.  Кіраўніцтва карыстальніка Vim падрабязна апісвае асаблівасці Vim, і яго можна прачытаць у Vim або знайсці ў Інтэрнэце.

Vim таксама мае ўбудаваную дапамогу (з дапамогай каманды `:help`), якая дазваляе карыстальнікам запытваць і перамяшчацца па камандах і функцыях.

### Рэгістры 
Vim мае розныя спецыяльныя запісы памяці, якія называюцца рэгістрамі (не блытаць з апаратнымі або працэсарнымі рэгістрамі). Пры выразанні, выдаленні, капіраванні або ўстаўцы тэксту карыстальнік можа выбраць захаванне апрацаванага тэксту ў рэгістры. Ёсць 36 рэгістраў агульнага прызначэння, звязаных з літарамі і лічбамі ([a-z0-9]), а таксама шэраг спецыяльных, якія або ўтрымліваюць спецыяльныя значэнні (бягучае імя файла, апошняя каманда і г.д.), або служаць спецыяльным мэтам. 

### Рэжымы 
Як і vi, vim падтрымлівае некалькі рэжымаў рэдагавання. У залежнасці ад рэжыму ўведзеныя сімвалы інтэрпрэтуюцца як паслядоўнасці каманд або ўстаўляюцца як тэкст. У Vim ёсць 14 рэжымаў рэдагавання, 7 асноўных рэжымаў і 7 варыянтаў: 

* **Звычайны** рэжым () — выкарыстоўваецца для каманд рэдактара. Як правіла, гэта прадвызначаны рэжым і прадвызначана  вяртае рэдактар у гэты рэжым.
* Рэжым **устаўкі (****)** — выкарыстоўваецца для ўводу тэксту спосабам, падобным да большасці сучасных рэдактараў. У гэтым рэжыме адкрыты тэкст у буферах можа быць зменены тэкстам, уведзеным з клавіятуры.   &#x3A;&#x200A;12&#x200A;
* **Візуальны** рэжым () — выкарыстоўваецца для выбару абласцей тэксту. У абранай вобласці можна запускаць каманды — перамяшчэнне, рэдагаванне, фільтраванне з дапамогай убудаванай або знешняй каманды і г.д.
** **Visual linewise**, падтып візуальнага рэжыму, які выбірае адзін або некалькі цэлых радкоў
** **Visual blockwise**, яшчэ адзін падтып, які вылучае прамавугольны блок тэксту праз адзін або некалькі радкоў
* Рэжым **выбару** () — падобны на візуальны, але каманды не інтэрпрэтуюцца, замест гэтага вылучаны тэкст непасрэдна замяняецца ўводам з клавіятуры; падобны на рэжым выбару, які выкарыстоўваецца ў рэдактарах на платформах Microsoft Windows
* Рэжым **каманднага радка** або **каманднага радка (****)** — забяспечвае ўвод у адзін радок у ніжняй частцы акна Vim. Каманды (пачынаюцца сімвалам ) і некаторыя іншыя клавішы для пэўных дзеянняў (уключаючы пошук па шаблоне і каманду фільтра) актывуюць гэты рэжым. Пасля завяршэння каманды Vim вяртаецца ў папярэдні рэжым.  Увод тэксту палягчаецца мноствам функцый, прызначаных для павышэння эфектыўнасці клавіятуры. Карыстальнікі могуць выконваць складаныя каманды з дапамогай «супастаўлення клавіш», якое можна наладжваць і пашыраць. Функцыя «запісу» дазваляе ствараць макрасы для аўтаматызацыі паслядоўнасці націскання клавіш і выкліку ўнутраных або вызначаных карыстальнікам функцый і супастаўленняў. Скарачэнні, падобныя да макрасаў і супастаўленняў клавіш, палягчаюць пашырэнне кароткіх радкоў тэксту ў больш доўгія, а таксама могуць выкарыстоўвацца для выпраўлення памылак. Vim таксама мае «лёгкі» рэжым для карыстальнікаў, якія шукаюць больш простае рашэнне для рэдагавання тэксту. 

Ёсць шмат даступных убудоў, якія пашыраюць або дадаюць новую функцыянальнасць Vim. Гэтыя плагіны звычайна напісаны на ўнутранай мове сцэнарыяў Vim, vimscript (таксама вядомай як VimL),  але могуць быць напісаны і на іншых мовах.

Існуюць праекты, якія аб’ядноўваюць складаныя скрыпты і налады і накіраваны на ператварэнне Vim у інструмент для выканання канкрэтнай задачы або на даданне істотнага адцення яго паводзінам. Прыклады ўключаюць у сябе Cream, які прымушае Vim паводзіць сябе як націсні-і-пішы рэдактар, або VimOutliner, які забяспечвае зручны рэдактар для карыстальнікаў Unix-падобных сістэм.

## Асаблівасці і паляпшэнні ў параўнанні з vi 
Vim мае рэжым сумяшчальнасці vi, але калі гэты рэжым не выкарыстоўваецца, Vim мае шмат паляпшэнняў у параўнанні з vi. Аднак нават у рэжыме сумяшчальнасці Vim не цалкам сумяшчальны з vi, як гэта вызначана ў спецыфікацыі Single Unix і POSIX (напрыклад, Vim не падтрымлівае адкрыты рэжым vi, а толькі візуальны рэжым). Распрацоўшчыкі Vim заяўляюць, што ён «вельмі сумяшчальны з Vi».

Некаторыя з удасканаленняў Vim уключаюць функцыі завяршэння, параўнання і аб’яднання файлаў (вядомыя як vimdiff), поўную інтэграваную сістэму даведкі, пашыраныя рэгулярныя выразы, мовы сцэнарыяў (як уласныя, так і праз альтэрнатыўныя інтэрпрэтатары сцэнарыяў, такія як Perl, Python, Ruby, Tcl і г.д.) уключаючы падтрымку плагінаў, графічны інтэрфейс карыстальніка (gvim), абмежаваныя функцыі, падобныя на інтэграванае асяроддзе распрацоўкі, узаемадзеянне мышшу (як з графічным інтэрфейсам, так і без яго), згортванне, рэдагаванне сціснутых або архіваваных файлаў у gzip, bzip2, zip і tar фарматах і файлы праз сеткавыя пратаколы, такія як SSH, FTP і HTTP, захаванне стану сесіі, праверка арфаграфіі, раздзяленне (па гарызанталі і вертыкалі) і вокны з укладкамі, Unicode і іншая шматмоўная падтрымка, падсвятленне сінтаксісу, транссесійныя каманды, пошук і гісторыі пазіцый курсора, шматузроўневая і разгалінаваная гісторыя адмены/паўтарэння, якая можа захоўвацца на працягу сеансаў рэдагавання, і візуальны рэжым.

Падчас працы Vim захоўвае змены карыстальніка ў файле падпампоўкі з пашырэннем «.swp». Гэты файл можна выкарыстоўваць для аднаўлення пасля збою. Калі карыстальнік спрабуе адкрыць файл, а файл падпампоўкі ўжо існуе, Vim папярэдзіць карыстальніка, і калі карыстальнік працягне, Vim будзе выкарыстоўваць файл падпампоўкі з пашырэннем «.swo» (або, калі іх ужо больш за адзін файл падпампоўкі, «.swn», «.swm» і г.д.). Функцыю можна адключыць.

## Vim скрыпт 
**Скрыпт Vim** (таксама званы **Vimscript** або **VimL**) — мова сцэнарыяў, убудаваная ў Vim.  На аснове былой мовы рэдактара арыгінальнага рэдактара vi раннія версіі Vim дадалі каманды для кіравання патокам і азначэннямі функцый. Пачынаючы з версіі 7, скрыпт Vim таксама падтрымлівае больш прасунутыя тыпы дадзеных, такія як спісы і слоўнікі, і простую форму аб’ектна-арыентаванага праграмавання. Убудаваныя функцыі, такія як `map()` і `filter()` дазваляюць асноўную форму функцыянальнага праграмавання, а скрыпт Vim мае лямбды з версіі 8.0. Скрыпт Vim у асноўным напісаны ў імператыўным стылі праграмавання.

Макрасы Vim могуць утрымліваць паслядоўнасць каманд *звычайнага рэжыму*, але могуць таксама выклікаць ex-каманды або функцыі, напісаныя ў скрыпце Vim для больш складаных задач. Амаль усе пашырэнні (так званыя плагіны або часцей скрыпты) асноўных функцый Vim напісаны на скрыпце Vim, але плагіны таксама могуць выкарыстоўваць іншыя мовы, такія як Perl, Python, Lua, Ruby, Tcl, або Racket. Гэтыя плагіны можна ўсталяваць уручную або праз менеджар плагінаў, напрыклад Vundle, Pathogen або Vim-Plug.

Файлы сцэнарыяў Vim захоўваюцца ў выглядзе звычайнага тэксту, падобна іншым кодам, а пашырэнне імя файла звычайна `.vim`. Адным з прыкметных выключэнняў з’яўляецца канфігурацыйны файл Vim, `.vimrc`.

### Прыклады 
 Акрамя таго, Vim пастаўляецца з Apple macOS.

Незалежныя парты Vim даступныя для Android і iOS.

## Neovim 
**Neovim**  — гэта форк Vim, які імкнецца палепшыць пашыральнасць і абслугоўванне Vim. Некаторыя асаблівасці форка ўключаюць убудаваную падтрымку пратаколу моўнага сервера (LSP), падтрымку асінхроннага ўводу-вываду і падтрымку сцэнарыяў Lua з выкарыстаннем інтэрпрэтатара мовы luaJIT.  Праект з’яўляецца свабодным праграмным забеспячэннем, яго зыходны код даступны на GitHub.

Neovim мае той жа сінтаксіс канфігурацыі, што і Vim (калі не выкарыстоўваецца vim9script); такім чынам, адзін і той жа канфігурацыйны файл можа выкарыстоўвацца з абодвума рэдактарамі, хоць ёсць нязначныя адрозненні ў дэталях параметраў.  Калі дадатковыя функцыі Neovim не выкарыстоўваюцца, Neovim сумяшчальны практычна з усімі функцыямі Vim. 

Праект Neovim быў пачаты ў 2014 годзе пасля таго, як быў адхілены патч для Vim, які падтрымлівае шматструменнасць.  У сакавіку 2014 года кампанія Neovim паспяхова сабрала сродкі, падтрымаўшы як мінімум аднаго штатнага распрацоўшчыка.

Некалькі інтэрфейсаў знаходзяцца ў стадыі распрацоўкі, якія выкарыстоўваюць магчымасці Neovim.  

З выпускам Neovim 0.5 2 ліпеня 2021 г. ён атрымаў убудаваную падтрымку LSP, Tree-sitter і больш поўную падтрымку Lua, уключаючы падтрымку сцэнарыяў канфігурацыі, напісаных на Lua замест VimL. 

### Галерэя 

File:Neovim being used to edit its own configuration file.png|Neovim з канфігураваным радком стану і цёмнай каляровай схемай.
File:Neovim v0.9.0-dev-a0a1125 Material Theme.png|Змененая версія v0.9.0-dev.

## Заўвагі 
## Крыніцы 
## Спасылкі 
* 
* 

Катэгорыя:Свабоднае праграмнае забеспячэнне, напісанае на C
Катэгорыя:Свабоднае кросплатформавае праграмнае забеспячэнне
Катэгорыя:Старонкі з недагледжанымі перакладамі
Катэгорыя:Тэкставыя рэдактары