Software-update: Vim 9.0

Vim logo (79 pix) Versie 9.0 van Vi IMproved, oftewel Vim, is uitgekomen. Deze universele editor is ooit door Bram Moolenaar voor de Commodore Amiga ontwikkeld, maar is tegenwoordig ook voor Unix, Linux, macOS, OS/2, DOS en Windows beschikbaar. Vim wordt niet actief ontwikkeld en meestal zitten er een paar jaar tussen de verschillende versies. De releasenotes voor deze uitgave kunnen hieronder worden gevonden.

Vim 9.0 released

After many years of gradual improvement Vim now takes a big step with a major release. Besides many small additions the spotlight is on a new incarnation of the Vim script language: Vim9 script.

The previous release was version 8.2 in December 2019. Since the latest source code is always available on GitHub, many have already picked up later patch versions (there are more than 5000 of them!). Therefore the changes have already been tried out by many users. On top of that bugs have been fixed, security issues have been addressed, and many tests have been added. Code coverage has been dramatically increased. This version is more reliable than any before.

Why Vim9 Script

A new script language, what is that needed for? Vim script has been growing over time, while preserving backwards compatibility. That means bad choices from the past often can't be changed and compatibility with Vi restricts possible solutions. Execution is quite slow, each line is parsed every time it is executed.

The main goal of Vim9 script is to drastically improve performance. This is accomplished by compiling commands into instructions that can be efficiently executed. An increase in execution speed of 10 to 100 times can be expected.

A secondary goal is to avoid Vim-specific constructs and get closer to commonly used programming languages, such as JavaScript, TypeScript and Java.

The performance improvements can only be achieved by not being 100% backwards compatible. For example, making function arguments available by creating an "a:" dictionary involves quite a lot of overhead. In a Vim9 function this dictionary is not available. Other differences are more subtle, such as how errors are handled.

For those with a large collection of legacy scripts: Not to worry! They will keep working as before. There are no plans to drop support for legacy script. No drama like with the deprecation of Python 2.

Interesting Features

To profit from the speedup a function must be defined with def. The argument and return types must be specified. This is not only to make execution faster, it also helps uncovering mistakes early, when the function is compiled into byte code. Variables are declared with var and also have a type, either explicitly or inferred from the assigned value.

Line continuation does not require using a backslash, the mechanism that is used in legacy script, which is a bit weird and was required to keep it backwards compatible. Function calls do not require call, assignments are done without let and expressions are evaluated without eval. This makes a Vim9 script look a lot more like most programming languages.

Splitting up a large script in small pieces has been made a lot simpler. In one script export is used to make specific functions and variables available to other scripts. The rest is local to the script. Then import is used where the exported items are to be used. Combined with an autoload mechanism this makes a flexible and powerful way to implement large plugins.

Comments now start with #. The previous double quote syntax, which comes from the good old Vi, interferes with how strings are used. The use of # is known from many other languages, such as Python and shell scripts.

Otherwise most things work the same way. Users who have written Vim script will find it easy to switch over. Unexpected differences usually lead to an error message with a hint how to do make the line work in Vim9 script. Details about Vim9 script and rationale for the choices can be found here or with :help vim9 in Vim.

Otherwise, many improvements were made not related to Vim9 script. You can find a list here or with :help new-9 in Vim.

Versienummer 9.0
Releasestatus Final
Besturingssystemen Windows 7, Linux, BSD, DOS, macOS, Solaris, UNIX, Windows Server 2008, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11
Website Vim
Download https://www.vim.org/download.php
Licentietype Freeware

Door Bart van Klaveren

Downloads en Best Buy Guide

29-06-2022 • 15:04

41 Linkedin

Submitter: maartsen

Bron: Vim

Update-historie

29-06 Vim 9.0 41
12-'19 Vim 8.2 28
04-'17 Vim 8.0.586 2
09-'16 Vim 8.0 5
08-'13 Vim 7.4 17
08-'10 Vim 7.3 10
05-'07 Vim 7.1 16
05-'06 Vim 7.0 7
10-'05 Vim 6.4 8
Meer historie

Reacties (41)

Wijzig sortering
Vim wordt niet actief ontwikkeld
Waarom niet? Meneer Molenaar freubelt bijna dagelijks een patch-versie in elkaar. De commit-history is juist bomvol.

Dat major versies wat langer duren doet niet af aan de ontwikkelactiviteit;
met die logica kan je ook stellen dat MS Windows niet actief wordt ontwikkeld.
patch 9.0.0001: Travis CI is no longer used.

Ik vermoed dat er iets op stapel staat, bijvoorbeeld zoiets als Cuirass continuous integration system at ci.guix.gnu.org.

Moet ook wel want libvim en Neovim gaan ook als een tierelier.

[Reactie gewijzigd door Bulkzooi op 29 juni 2022 21:24]

Is dat niet omdat de free tier van Travis ci is gestopt?
Maar inderdaad, neovim lijkt wel steeds meer traction te krijgen.
Geen idee. Klinkt enkel als een mogelijke verklaring voor de commit.

Maar het valt gewoon op dat een reputable project als VIM hun build infrastructuur eruit gooit, geen vervanger er in gooit en verder geen aankondiging doet. Ik ga er ook vanuit dat Travis dit ruim van te voren heeft aangekondigd.

En NeoVim krijgt vooral tacktion in het eigen ecosysteem; de verhoudingen met Emacs veranderen niet echt.

[Reactie gewijzigd door Bulkzooi op 1 juli 2022 00:02]

Misschien is het wat ongelukkig geschreven: De updates worden wat weinig actief de wereld in gestuurd. Je moet ze zelf op je eigen tempo van github halen. En met 5000 updates in 3 jaar zijn dat er gemiddeld 5 per dag, elke dag.
Is dit beter dan emacs?

[Reactie gewijzigd door oef! op 29 juni 2022 15:25]

Emacs is een prima OS, ik mis alleen een goede editor.
Er is ook al een emacs replacement voor systemd: https://github.com/a-schaefers/systemE
Het wordt tijd voor een level-up: cut out the middle man, emacs als coreboot-payload.
Is dit beter dan emacs?
En Emacs Window manager: https://github.com/ch11ng/exwm

Screenshots: https://github.com/ch11ng/exwm/wiki/Screenshots

GNu heeft zelfs een soort variant van Emacs BIOS die je in Elisp kunt bewerken zonder in OS te booten, in sectie op https://emacs.zeef.com/

[Reactie gewijzigd door Hatsieflatsie op 29 juni 2022 16:57]

hehehe, geniaal! :)
Wat is er mis met evil mode?
Het heeft geen tetris, dus nee
Toch wel, er zijn meer dan 10 packages voor Tetris in Emacs.
Om je leven nog makkelijker te maken, was er in 2014 er zelfs een low AI in Emacs die Tetris voor je speelt als je koffie zet: https://nullprogram.com/blog/2014/10/19/

De nieuwe versie daarvan, werkt nu met machine learning in Emacs die Tetris in Emacs nog beter speelt voor je.
Ik doelde op dat vim geen Tetris heeft ;)

Het komt zelfs standaard met Tetris ja. Thanks voor de links, ziet er grappig uit haha. Ik draai zelf emacs en een M-x doctor is ook leuk.
ondersteund vim al scaling onder windows? dat zou een reden zijn om weer terug te gaan :+ :+ :+

'k vind deze editor zelf erg prettig, alleen zo vreemd dat ik voor nerd word uitgemaakt wanneer ik 't onder windows gebruik ;)
Opstarten met administrator rights.
Font veranderen zodat het leesbaar is.
Voila!
tnx! niet aan gedacht
Kwestie van persoonlijke voorkeur
Ja. Laat de heilige oorlog maar beginnen.
“ maar is tegenwoordig ook voor Unix, Linux, macOS, OS/2, DOS en Windows beschikbaar.”

Niet alleen beschikbaar maar er gewoon standaard bijgeleverd met oa MacOS en Linux.
In ieder geval een kale Debian installatie heeft geen vim.
Ik heb toevallig een Debian-based telefooncentrale draaien (3CX) en die heeft wel vim. Echter, start je het op met vi. Idem voor Ubuntu 22.04
Is het stiekem geen vim-tiny? Deze mist veel features zodat hij compatibel is met vi, maar is dus anders dan vim
3CX past ook echt wel een hoop aan, aan de default Debian install. Mijn Proxmox server (ook Debian based is dat) heeft ook vim. Maar de default Debian heeft echt alleen vi standaard aan boort, geen vim. Afgelopen week een aantal Debian systemen geinstalleerd, en steeds apt install vim gedraaid :)
Niet in elke distro is vi ook daadwerkelijk vim of heeft vim standaard geïnstalleerd.
Weet niet of Mac's vi ook vim is. iemand een mac die dat kan checken? ;)
stap 1 na het installeren van diverse debian based distros: `apt install -y vim-nox`
Ik heb een Mac. Zit er standaard in maar geen v9 natuurlijk. Zelfde voor dingen als nano.

Ik neem meteen van je aan dat niet elke distro het heeft.
Nee, OSX gebruikt geen Vim, afaik gebruikt OSX de orginele 4BSD vi vanwege de licentie.
Controleer je welkomstbericht maar eens :)

[Reactie gewijzigd door silverball op 29 juni 2022 15:49]

brew install vim
Wat je idd bij OSX met meer programma's "moet" doen, om de nieuwste versie te krijgen.
https://www.topbug.net/bl...d-line-tools-in-mac-os-x/
Naja 'nieuwste'; de BSD tooltjes zullen wellicht wel onderhouden worden maar veel mensen zullen de GNU coreutils willen hebben. Vim is bijvoorbeeld ook echt een ander stukje software dan vi, je kan niet echt spreken van een direct nieuwere versie.
De tools, worden idd voor zien van bug fixes. Maar het kan je soms uren kosten (als je het niet beseft) waarom die ene functie het niet doet op je Mac.
Vim is bijvoorbeeld ook echt een ander stukje software dan vi, je kan niet echt spreken van een direct nieuwere versie.
Klopt, `brew install vi`
nano is niet meegeleverd met de Arch iso iirc. Al paar keer opnieuw moeten chrooten om nano erop te zetten bij fresh installs.
Vim? Wat is er eigenlijk nog te improven aan vi?
Er zijn een hoop verschillen. Wat mij betreft is de belangrijkste is de multi level undo.
Waarom een nieuwe vimscript als neovim lua aanbiedt. Lua maakt mijn init file properder en duidelijker.
Vi was leuk en toen kwam Vim. Heerlijk was dat _/-\o_
Vim schuurt het best. :+

Kies score Let op: Beoordeel reacties objectief. De kwaliteit van de argumentatie is leidend voor de beoordeling van een reactie, niet of een mening overeenkomt met die van jou.

Een uitgebreider overzicht van de werking van het moderatiesysteem vind je in de Moderatie FAQ

Rapporteer misbruik van moderaties in Frontpagemoderatie.



Op dit item kan niet meer gereageerd worden.


Nintendo Switch (OLED model) Apple iPhone SE (2022) LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S22 Garmin fēnix 7 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2022 Hosting door True

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee