Sok évnyi folyamatos fejlesztés után a Vim most egy nagy lépést tesz egy nagyobb kiadással. Sok apró kiegészítés mellett a reflektorfényben a Vim szkriptnyelv új inkarnációja áll: Vim9 script. A Vim (Vi IMproved) egy nyílt forrású, multiplatformos szövegszerkesztő, a vi továbbfejlesztett változata. Fő nevezetessége a számtalan billentyűkombináció, amik révén roppant hatékonyan használható. Az egyik legnépszerűbb linuxos szövegszerkesztő. A Vim egy nagymértékben konfigurálható szövegszerkesztő, amely arra épült, hogy bármilyen szöveg létrehozását és módosítását nagyon hatékonnyá tegye. A legtöbb UNIX rendszerhez és az Apple macOS-éhez "vi" néven tartozik. A Vim nagy részét Bram Moolenaar (Bram@Vim.org) írta. Sokan, sokan mások is segítettek abban, hogy a Vim olyanná váljon, amilyen most, funkciók hozzáadásával, hibák kijavításával, javítási javaslatokkal stb.
A Vim Charityware. Annyit használhatod és másolhatod, amennyit csak akarsz, de arra kérünk, hogy adományozz a rászoruló ugandai gyerekek számára. Kérjük, látogasson el az ICCF weboldalára további információkért.
Az előző kiadás a 2019 decemberében megjelent 8.2-es verzió volt. Mivel a GitHub-on mindig a legfrissebb forráskód érhető el, sokan már a későbbi javított verziókat is átvették (több mint 5000 darab van belőlük!). Ezért a változtatásokat már sok felhasználó kipróbálta. Ezen felül hibákat javítottak, biztonsági problémákat kezeltek, és számos tesztet adtak hozzá. A kódlefedettség drámaian megnőtt. Ez a verzió megbízhatóbb, mint bármelyik korábbi.
Miért Vim9 Script
Egy új szkriptnyelv, mire kell ez? A Vim script az idők során folyamatosan fejlődött, miközben megőrizte a visszafelé kompatibilitást. Ez azt jelenti, hogy a múlt rossz döntéseit gyakran nem lehet megváltoztatni, és a Vi kompatibilitás korlátozza a lehetséges megoldásokat. A végrehajtás elég lassú, minden egyes sor minden egyes végrehajtáskor elemzést igényel.
A Vim9 script fő célja a teljesítmény drasztikus javítása. Ezt úgy érték el, hogy a parancsokat olyan utasításokká állítjuk össze, amelyek hatékonyan végrehajthatók. A végrehajtási sebesség 10-100-szoros növekedése várható. Másodlagos cél a Vim-specifikus konstrukciók elkerülése és az általánosan használt programozási nyelvekhez, például a JavaScripthez, a TypeScripthez és a Javához való közelítés.
A teljesítménynövekedés csak úgy érhető el, hogy nem 100%-ban visszafelé kompatibilis. Például a függvény argumentumainak elérhetővé tétele egy "a:" szótár létrehozásával elég sok overheaddel jár. Egy Vim9 függvényben ez a szótár nem áll rendelkezésre. Más különbségek sokkal kisebbek és finomabbak, például a hibakezelés módja.
Azoknak, akiknek nagy gyűjteménye van a régebbi szkriptekből: Nem kell aggódni! Ezek továbbra is úgy fognak működni, mint korábban. Nem tervezzük a régi szkriptek támogatásának megszüntetését. Nincs olyan dráma, mint a Python 2 elavulása esetén.
Érdekes funkciók
A sebességnövekedés kihasználásához egy függvényt def-vel kell definiálni. Az argumentum és a visszatérési típusokat meg kell adni. Ez nem csak a gyorsabb végrehajtást szolgálja, hanem segít a hibák korai felfedezésében is, amikor a függvényt bájtkóddá fordítjuk. A változókat var-val kell deklarálni, és szintén típusuk van, vagy explicit módon, vagy a hozzárendelt értékből következtetve.
A sor folytatásához nem szükséges a backslash használata, a régi szkriptekben használt mechanizmus, ami egy kicsit furcsa, és a visszafelé kompatibilitás miatt volt rá szükség.
A függvényhívások nem igényelnek hívást, a hozzárendelések let nélkül történnek, a kifejezések pedig eval nélkül kerülnek kiértékelésre. Ezáltal a Vim9 szkriptek sokkal jobban hasonlítanak a legtöbb programozási nyelvre.
A nagy szkriptek apró darabokra bontása sokkal egyszerűbbé vált. Egy szkriptben az exportot arra használjuk, hogy bizonyos függvényeket és változókat más szkriptek számára elérhetővé tegyünk. A többi a szkripthez tartozik. Ezután az importot ott használjuk, ahol az exportált elemeket használni akarjuk. Az automatikus betöltési mechanizmussal kombinálva ez egy rugalmas és hatékony módja a nagyméretű bővítmények megvalósításának.
A megjegyzések mostantól #-vel kezdődnek. A korábbi dupla idézőjeles szintaxis, ami a jó öreg Vi-ből származik, zavarja a karakterláncok használatát. A # használata sok más nyelvből, például a Pythonból és a shell szkriptekből ismert.
Egyébként a legtöbb dolog ugyanúgy működik. Azok a felhasználók, akik írtak már Vim szkriptet, könnyen átállhatnak. A nem várt eltérések általában hibaüzenethez vezetnek, amiben van egy tipp, hogyan lehet a sort a Vim9 szkriptben működőképessé tenni.
A Vim9 szkript részleteit és a döntések indoklását itt vagy a :help vim9 segítségével találja a Vimben.
Egyébként sok olyan javítás történt, ami nem kapcsolódik a Vim9 scripthez. Egy listát itt vagy a :help new-9 segítségével talál a Vim-ben.
Parancssori kiegészítés egy felugró menüben
Korábban volt a 'wildmenu' opció, amely az egy sor feletti helyet használja fel a státuszsor alatt a találatok megjelenítésére. Oda csak néhány találat fért be. Most egy felugró menü használható a 'wildoptions' 'pum' értékre állításával. Ez lehetővé teszi sokkal több találat megjelenítését. Ehhez a kijelző nagyobb részét kell átrajzolni, de mivel a számítógépek elég gyorsak, ez nem probléma.
Frissített színsémák
A https://github.com/vim/colorschemes oldalról származó színsémák bekerültek. Úgy készültek, hogy sokféle terminálon következetesen működjenek. Bár a általában véve javulás, sok személyes preferencia van benne. Lehetőség van a régi verziót, ha az jobban tetszik, nézd meg itt: https://github.com/vim/colorschemes/blob/master/legacy_colors/
Jövőbeni munka
Egyszer biztosan lesz egy Vim 9.1-es kiadás. Senki sem tudja, hogy mikor.
A Vim9 script tervei között szerepel az osztályok hozzáadása. Bár egy szótárral lehet ezt szimulálni, de ez messze nem ideális. A legtöbb programozó ismeri az osztályokat, mint amilyenek a Java-ban vannak. Valami ilyesmit kellene hozzáadni a Vim9 scripthez. A kulcsszavak már foglaltak.