|Vim 9 Updates Script Language|
|Written by Ian Elliot|
|Thursday, 07 July 2022|
There's a major new release of Vim, the popular text editor, with a major new version of the Vim script language, Vim9 script, along with a wide range of more minor improvements.
Vim is a command-based text editor based on the Unix vi editor. It aims to provide the power of vi with a more complete feature set. Many developers prefer the simplicity of a text editor configured to your personal setup, claiming to be faster coding in such an environment as opposed to modern bloatware IDEs.
The headline change in Vim9 is the new script language.The Vim team says that Vim script has been growing over time, while preserving backwards compatibility, meaning that poor decisions made in the past have had to be maintained, and the need to be compatible with Vi restricts possible solutions. Execution is quite slow, each line is parsed every time it is executed.
What this means is that Vim9 script isn't 100% backwards compatible. The Vim developers say that an example of this is in the way function arguments are made available by creating an "a:" dictionary. This involves quite a lot of overhead, and in a Vim9 function this dictionary is not available. Other differences are more subtle, such as how errors are handled.
Given Vim remains popular because of its familiarity and simplicity, the change to the script language will cause concerns, but the team says legacy scripts will keep working as before, and there are no plans to drop support for legacy script.
Other more minor changes and improvements include the requirement for functions to be defined with def to make use of the speedup, and the requirement that argument and return types must be specified.
Line continuation no longer requires a backslash, function calls do not require call, assignments are done without let and expressions are evaluated without eval. The team says this makes a Vim9 script look a lot more like most programming languages.
Vim 9 is available now.
or email your comment to: email@example.com