Vim ( ; Vim documentation: intro : «Vim is pronounced as one word, like Jim, not vi-ai-em. It’s written with a capital, since it’s a name, again like Jim.» скарачэнне ад 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 годзе і дапрацаваны Тоні Эндрусам і G.R. (Фрэдам) Уолтэрам. Гэта быў адзін з першых папулярызаваных клонаў 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»
Гісторыя выпускаў ДатаВерсіяЗмены і дапаўненніЧэрвень, 1987N/AЦім Томпсан выпускае Stevie (рэдактар для энтузіястаў VI), абмежаваны клон vi для Atari ST, зыходны код быў апублікаваны ў Usenet.Чэрвень, 1988N/AТоні Эндрус паляпшае Stevie і партуе яго ў Unix і OS/2, выпусціўшы версію 3.10 на Usenet.19881.0Брэм Муленаар стварае Vi IMitation для Amiga, заснаваны на Stevie. Ніколі не быў апублікаваны публічна.2 лістапада 19911.14Першы публічны выпуск Amiga на дыску Фрэда Фіша № 59119921.22Перанос на Unix, ніколі не апублікаваны. Vim цяпер канкуруе з vi.14 снежня 19932.0Гэта першы рэліз пад назвай Vi IMproved.12 жніўня, 19943.0Падтрымка некалькіх вокнаў29 мая 19964.0Графічны інтэрфейс карыстальніка19 лютага 19985.0Падсвятленне сінтаксісу, асноўныя сцэнарыі (вызначаныя карыстальнікам функцыі, каманды і г.д.)6 красавіка 19985.1Выпраўленні памылак, розныя паляпшэнні27 красавіка 19985.2Падтрымка доўгіх радкоў, аглядальнік файлаў, дыялогавыя вокны, усплывальнае меню, рэжым выбару, файлы сеанса, вызначаныя карыстальнікам функцыі і каманды, інтэрфейс Tcl і г.д.31 жніўня 19985.3Выпраўленні памылак і г.д.25 ліпеня 19995.4Базавае шыфраванне файлаў, розныя паляпшэнні19 верасня 19995.5Выпраўленні памылак, розныя паляпшэнні16 студзеня 20005.6Новыя файлы сінтаксісу, выпраўленні памылак і г.д.24 чэрвеня 20005.7Новыя файлы сінтаксісу, выпраўленні памылак і г.д.31 мая 20015.8Новыя файлы сінтаксісу, выпраўленні памылак і г.д.26 верасня 20016.0Згортванне, плагіны, шматмоўнасць і г.д.24 сакавіка, 20026.1Выпраўленні памылак1 чэрвеня 20036.2Падтрымка GTK2 і libgnome2, падтрымка арабскай мовы, каманда :try, дробныя магчымасці, выпраўленні памылак7 чэрвеня 20046.3Выпраўленні памылак, абнаўленні перакладаў, паляпшэнні адзнак15 кастрычніка 20056.4Выпраўленні памылак, абнаўленні падтрымкі для моў Perl, Python і Ruby7 мая 20067.0Праверка арфаграфіі, дапаўненне кода, старонкі ўкладак (некалькі вокнаў прагляду/макеты вокнаў), вылучэнне бягучага радка і слупка, адмена разгалінаванняў і шмат іншага12 мая 20077.1Выпраўленні памылак, новы сінтаксіс і файлы часу выканання і г.д.9 жніўня 20087.2Падтрымка лічбаў з плаваючай коскай у скрыптах, рэарганізаваны код малявання экрана, выпраўленні памылак, новыя файлы сінтаксісу і г.д.15 жніўня 20107.3Падтрымка Lua, падтрымка Python3, шыфраванне Blowfish, пастаянная адмена/паўтарэнне10 жніўня 20137.4Google Discussiegroepen . Новы, больш хуткі рухавік рэгулярных выразаў.12 верасня 20168.0Падтрымка асінхроннага ўводу/вываду, заданняў, лямбда-выразаў і г.д.18 мая 20188.1Падтрымка вокнаў тэрмінала і плагін gdb тэрмінала.13 снежня 20198.2Усплывальныя вокны, уласцівасці тэксту.28 чэрвеня 20229.0Скрыпт vim9
Ліцэнзія 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 files at vimhelp.org
Vim таксама мае ўбудаваную дапамогу (з дапамогай каманды :help), якая дазваляе карыстальнікам запытваць і перамяшчацца па камандах і функцыях.
Рэгістры Vim мае розныя спецыяльныя запісы памяці, якія называюцца рэгістрамі (не блытаць з апаратнымі або працэсарнымі рэгістрамі). Пры выразанні, выдаленні, капіраванні або ўстаўцы тэксту карыстальнік можа выбраць захаванне апрацаванага тэксту ў рэгістры. Ёсць 36 рэгістраў агульнага прызначэння, звязаных з літарамі і лічбамі ([a-z0-9]), а таксама шэраг спецыяльных, якія або ўтрымліваюць спецыяльныя значэнні (бягучае імя файла, апошняя каманда і г.д.), або служаць спецыяльным мэтам.
Рэжымы
Як і vi, vim падтрымлівае некалькі рэжымаў рэдагавання. У залежнасці ад рэжыму ўведзеныя сімвалы інтэрпрэтуюцца як паслядоўнасці каманд або ўстаўляюцца як тэкст. У Vim ёсць 14 рэжымаў рэдагавання, 7 асноўных рэжымаў і 7 варыянтаў:
Звычайны рэжым () — выкарыстоўваецца для каманд рэдактара. Як правіла, гэта прадвызначаны рэжым і прадвызначана вяртае рэдактар у гэты рэжым. Рэжым устаўкі () — выкарыстоўваецца для ўводу тэксту спосабам, падобным да большасці сучасных рэдактараў. У гэтым рэжыме адкрыты тэкст у буферах можа быць зменены тэкстам, уведзеным з клавіятуры. : 12 Візуальны рэжым () — выкарыстоўваецца для выбару абласцей тэксту. У абранай вобласці можна запускаць каманды — перамяшчэнне, рэдагаванне, фільтраванне з дапамогай убудаванай або знешняй каманды і г.д. Visual linewise, падтып візуальнага рэжыму, які выбірае адзін або некалькі цэлых радкоў Visual blockwise, яшчэ адзін падтып, які вылучае прамавугольны блок тэксту праз адзін або некалькі радкоў Рэжым выбару () — падобны на візуальны, але каманды не інтэрпрэтуюцца, замест гэтага вылучаны тэкст непасрэдна замяняецца ўводам з клавіятуры; падобны на рэжым выбару, які выкарыстоўваецца ў рэдактарах на платформах Microsoft Windows Рэжым каманднага радка або каманднага радка () — забяспечвае ўвод у адзін радок у ніжняй частцы акна Vim. Каманды (пачынаюцца сімвалам ) і некаторыя іншыя клавішы для пэўных дзеянняў (уключаючы пошук па шаблоне і каманду фільтра) актывуюць гэты рэжым. Пасля завяршэння каманды Vim вяртаецца ў папярэдні рэжым. : 12 Рэжым Ex mode — прымае паслядоўнасць каманд. Рэжым Terminal-Job — узаемадзеянне з заданнем у акне тэрмінала.
Наладжванне Vim мае магчымасці наладжвання і пашырэння, што робіць яго прывабным інструментам для карыстальнікаў, якія патрабуюць вялікага кантролю і гібкасці над асяроддзем рэдагавання тэксту. Увод тэксту палягчаецца мноствам функцый, прызначаных для павышэння эфектыўнасці клавіятуры. Карыстальнікі могуць выконваць складаныя каманды з дапамогай «супастаўлення клавіш», якое можна наладжваць і пашыраць. Функцыя «запісу» дазваляе ствараць макрасы для аўтаматызацыі паслядоўнасці націскання клавіш і выкліку ўнутраных або вызначаных карыстальнікам функцый і супастаўленняў. Скарачэнні, падобныя да макрасаў і супастаўленняў клавіш, палягчаюць пашырэнне кароткіх радкоў тэксту ў больш доўгія, а таксама могуць выкарыстоўвацца для выпраўлення памылак. Vim таксама мае «лёгкі» рэжым для карыстальнікаў, якія шукаюць больш простае рашэнне для рэдагавання тэксту.
Ёсць шмат даступных убудоў, якія пашыраюць або дадаюць новую функцыянальнасць Vim. Гэтыя плагіны звычайна напісаны на ўнутранай мове сцэнарыяў Vim, vimscript (таксама вядомай як VimL), але могуць быць напісаны і на іншых мовах.
Існуюць праекты, якія аб’ядноўваюць складаныя скрыпты і налады і накіраваны на ператварэнне Vim у інструмент для выканання канкрэтнай задачы або на даданне істотнага адцення яго паводзінам. Прыклады ўключаюць у сябе Cream, які прымушае Vim паводзіць сябе як націсні-і-пішы рэдактар, або VimOutliner, які забяспечвае зручны рэдактар для карыстальнікаў Unix-падобных сістэм.
Асаблівасці і паляпшэнні ў параўнанні з vi Vim мае рэжым сумяшчальнасці vi, але калі гэты рэжым не выкарыстоўваецца, Vim мае шмат паляпшэнняў у параўнанні з vi.Vim help system (type «:help» within Vim) Аднак нават у рэжыме сумяшчальнасці 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 у асноўным напісаны ў імператыўным стылі праграмавання.