| *version8.txt* For Vim version 8.0. Last change: 2016 May 20 |
| |
| |
| VIM REFERENCE MANUAL by Bram Moolenaar |
| |
| NOTE: THIS FILE IS STILL BEING WORKED ON |
| |
| *vim8* *vim-8* *version-8.0* *version8.0* |
| Welcome to Vim 8! A large number of bugs have been fixed and several |
| features have been added. This file mentions all the new items and changes to |
| existing features since Vim 7.4. Bug fixes, the patches for Vim 7.4, can be |
| found below |vim-7.4|. Use this command to see the version you are using: > |
| :version |
| |
| See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0. |
| See |version4.txt|, |version5.txt|, |version6.txt| and |version7.txt| for |
| differences between other versions. |
| |
| INCOMPATIBLE CHANGES |incompatible-8| |
| |
| NEW FEATURES |new-8| |
| |
| Vim script enhancements |new-vim-script-8| |
| |
| IMPROVEMENTS |improvements-8| |
| |
| COMPILE TIME CHANGES |compile-changes-8| |
| |
| PATCHES |patches-8| |
| |
| |
| ============================================================================== |
| INCOMPATIBLE CHANGES *incompatible-8* |
| |
| These changes are incompatible with previous releases. Check this list if you |
| run into a problem when upgrading from Vim 7.4 to 8.0. |
| |
| The support for MS-DOS has been removed. It hasn't been working for a while |
| and removing it cleans up the code quite a bit. |
| |
| The support for Windows 16 bit (Windows 95 and older) has been removed. |
| |
| Minor incompatibilities: |
| |
| For filetype detection: ... |
| |
| ============================================================================== |
| NEW FEATURES *new-8* |
| |
| First a list of the bigger new features. A comprehensive list is below. |
| |
| |
| Asynchronous I/O support, channels ~ |
| |
| Vim can now exchange messages with another process in the background. The |
| messages are received and handled while Vim is waiting for a character. See |
| |channel-demo| for an example, communicating with a Python server. |
| |
| Closely related to channels is JSON support. JSON is widely supported and can |
| easily be used for inter-process communication, allowing for writing a server |
| in any language. The functions to use are |json_encode()| and |json_decode()|. |
| |
| |
| Jobs ~ |
| |
| Vim can now start a job, communicate with it and stop it. This is very useful |
| to run a process for completion, syntax checking, etc. Channels are used to |
| communicate with the job. Jobs can also read from or write to a buffer or a |
| file. See |job_start()|. |
| |
| |
| Timers ~ |
| |
| Also asynchronous are timers. They can fire once or repeatedly and invoke a |
| function to do any work. For example: > |
| let tempTimer = timer_start(4000, 'CheckTemp') |
| This will make a call four seconds (4000 milli seconds) later, like: > |
| call CheckTemp() |
| |
| |
| Partials ~ |
| |
| Vim already had a Funcref, a reference to a function. A partial also refers |
| to a function, and additionally binds arguments and/or a dictionary. This is |
| especially useful for callbacks on channels and timers. E.g., for the timer |
| example above, to pass an argument to the function: > |
| let tempTimer = timer_start(4000, function('CheckTemp', ['out'])) |
| This will a make call four seconds later, like: > |
| call CheckTemp('out') |
| |
| |
| Packages ~ |
| |
| Plugins keep growing and more of them are available than ever before. To keep |
| the collection of plugins manageable package support has been added. This is |
| a convenient way to get one or more plugins, drop them in a directory and |
| possibly keep them updated. Vim will load them automatically, or only when |
| desired. See |packages|. |
| |
| |
| New style tests ~ |
| |
| This is for Vim developers. So far writing tests for Vim has not been easy. |
| Vim 8 adds assert functions and a framework to run tests. This makes it a lot |
| simpler to write tests and keep them updated. |
| |
| These functions have been added: |
| |assert_equal()| |
| |assert_notequal()| |
| |assert_exception()| |
| |assert_fails()| |
| |assert_false()| |
| |assert_match()| |
| |assert_notmatch()| |
| |assert_true()| |
| |alloc_fail()| |
| |disable_char_avail_for_testing()| |
| |
| |
| Window IDs ~ |
| |
| Previously windows could only be accessed by their number. And every time a |
| window would open, close or move that number changes. Each window now has a |
| unique ID, so that they are easy to find. |
| |
| |
| Wrapping lines with indent ~ |
| |
| The 'breakindent' option has been added to be able to wrap lines without |
| changing the amount of indent. |
| |
| |
| Windows: Direct-X support ~ |
| |
| This adds the 'renderoptions' option to allow for switching on Direct-X |
| (DirectWrite) support on MS-Windows. |
| |
| |
| GTK+ 3 support ~ |
| |
| GTK+ 2 is getting old, GTK+ 3 is here. Support has been added and it already |
| works quite well, mostly just like GTK+ 2. |
| |
| |
| Vim script enhancements *new-vim-script-8* |
| ----------------------- |
| |
| In Vim script the following types have been added: |
| |
| |Special| |v:false|, |v:true|, |v:none| and |v:null| |
| |Channel| connection to another process for asynchronous I/O |
| |Job| process control |
| |
| Many functions and commands have been added to support the new types. |
| |
| |
| |
| Various new items *new-items-8* |
| ----------------- |
| |
| Normal mode commands: ~ |
| |
| |
| Insert mode commands: ~ |
| |
| |
| Options: ~ |
| |
| |
| Ex commands: ~ |
| |
| |
| Ex command modifiers: ~ |
| |
| |
| Ex command arguments: ~ |
| |
| |
| New and extended functions: ~ |
| |
| |
| |
| New Vim variables: ~ |
| |
| |v:vim_did_enter| Set when VimEnter autocommands are triggered |
| |
| |
| New autocommand events: ~ |
| |
| |
| |
| New highlight groups: ~ |
| |
| |
| New items in search patterns: ~ |
| |
| |
| New Syntax/Indent/FTplugin files: ~ |
| |
| |
| New Keymaps: ~ |
| |
| |
| New message translations: ~ |
| |
| |
| Others: ~ |
| |
| |
| ============================================================================== |
| IMPROVEMENTS *improvements-8* |
| |
| The existing blowfish encryption turned out to be much weaker than it was |
| supposed to be. The blowfish2 method has been added to fix that. Note that |
| this still isn't a state-of-the-art encryption, but good enough for most |
| usage. See 'cryptmethod'. |
| |
| ============================================================================== |
| COMPILE TIME CHANGES *compile-changes-8* |
| |
| Dropped the support for MS-DOS. It was too big to fit in memory. |
| |
| |
| ============================================================================== |
| PATCHES *patches-8* *bug-fixes-8* |
| |
| The list of patches that got included since 7.4.0. This includes all the new |
| features, but does not include runtime file changes (syntax, indent, help, |
| etc.) |
| |
| TODO: INCLUDE PATCH LIST. |
| |
| vim:tw=78:ts=8:ft=help:norl: |