Neovim 0.4, Vim рд╕рдореНрдкрд╛рджрдХрдХреЛ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг, рдЙрдкрд▓рдмреНрдз рдЫ

рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬ Neovim реж.рей.рем, Vim рд╕рдореНрдкрд╛рджрдХрдмрд╛рдЯ рдПрдХ рдХрд╛рдБрдЯрд╛, рдХреЗрдиреНрджреНрд░рд┐рдд рд╡рд┐рд╕реНрддрд╛рд░рд╢реАрд▓рддрд╛ рд░ рд▓рдЪрд┐рд▓реЛрдкрди рд╡реГрджреНрдзрд┐ рдорд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдореМрд▓рд┐рдХ рд╡рд┐рдХрд╛рд╕рд╣рд░реВ рдлреИрд▓рдиреЗ Apache 2.0 рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд, рд░ Vim рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рдЖрдзрд╛рд░ рднрд╛рдЧред

Neovim рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдврд╛рдБрдЪрд╛ рднрд┐рддреНрд░, Vim рдХреЛрдб рдЖрдзрд╛рд░ рдкрд╛рдБрдЪ рд╡рд░реНрд╖ рднрдиреНрджрд╛ рдмрдвреАрдХреЛ рд▓рд╛рдЧрд┐ рдкреБрди: рдХрд╛рдо рднрдЗрд░рд╣реЗрдХреЛ рдЫ, рдЬрд╕рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдмрдирд╛рдЗрдиреНрдЫ рдЬрд╕рд▓реЗ рдХреЛрдб рдорд░реНрдорддрд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫ, рдзреЗрд░реИ рдорд░реНрдорддрдХрд░реНрддрд╛рд╣рд░реВ рдмреАрдЪ рд╢реНрд░рдо рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрдиреЗ рдорд╛рдзреНрдпрдо рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЗрдиреНрдЯрд░рдлреЗрд╕рд▓рд╛рдИ рдЕрд▓рдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЖрдзрд╛рд░ рднрд╛рдЧ (рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЗрдиреНрдЯрд░рдлреЗрд╕рд▓рд╛рдИ рдирдЫреЛрдЗрдХрди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ) рд░ рдирдпрд╛рдБ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдПрдХреНрд╕реНрдЯреЗрдиреНрд╕рд┐рдмрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рддред

Vim рдХреЛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдЬрд╕рд▓реЗ Neovim рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░реЗрд░рд┐рдд рдЧрд░реНтАНрдпреЛ рдпрд╕рдХреЛ рдлреВрд▓реЗрдХреЛ, рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рдХреЛрдб рдЖрдзрд╛рд░ рдерд┐рдпреЛ, рдЬрд╕рдорд╛ C (C300) рдХреЛрдбрдХреЛ 89 рд╣рдЬрд╛рд░ рднрдиреНрджрд╛ рдмрдвреА рд▓рд╛рдЗрдирд╣рд░реВ рдерд┐рдПред рдХреЗрд╡рд▓ рдХреЗрд╣рд┐ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓реЗ Vim рдХреЛрдбрдмреЗрд╕рдХрд╛ рд╕рдмреИ рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рдмреБрдЭреНрджрдЫрдиреН, рд░ рд╕рдмреИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдПрдХ рд░рдЦрд░рдЦрд╛рд╡рдХрд░реНрддрд╛рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рд╣реБрдиреНрдЫрдиреН, рдЬрд╕рд▓реЗ рд╕рдореНрдкрд╛рджрдХрд▓рд╛рдИ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдмрдирд╛рдЙрдБрдЫред GUI рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрди Vim рдХреЛрд░рдорд╛ рдирд┐рд░реНрдорд┐рдд рдХреЛрдбрдХреЛ рд╕рдЯреНрдЯрд╛, Neovim рд▓реЗ рдПрдХ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рддрд╣ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рдЯреВрд▓рдХрд┐рдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

Neovim рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ MessagePack рдврд╛рдБрдЪрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕реБрд░реВ рдЧрд░рд┐рдиреНрдЫред рд╕рдореНрдкрд╛рджрдХрдХреЛ рдЖрдзрд╛рд░рднреВрдд рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЕрд╡рд░реБрджреНрдз рдирдЧрд░реАрдХрди рдкреНрд▓рдЧрдЗрдирд╣рд░реВрд╕рдБрдЧрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рд░реВрдкрдорд╛ рдЧрд░рд┐рдиреНрдЫред рдкреНрд▓рдЧрдЗрди рдкрд╣реБрдБрдЪ рдЧрд░реНрди, рдПрдХ TCP рд╕рдХреЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЕрд░реНрдерд╛рддреНред рдкреНрд▓рдЧрдЗрди рдмрд╛рд╣реНрдп рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред рдЙрд╣реА рд╕рдордпрдорд╛, Neovim Vim рд╕рдБрдЧ рдкрдЫрд╛рдбреА рдорд┐рд▓реНрджреЛ рд░рд╣рдиреНрдЫ, Vimscript рд╕рдорд░реНрдерди рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫ (Lua рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдкрдорд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ) рд░ рдзреЗрд░реИ рдорд╛рдирдХ Vim рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрдбрд╛рдирд╣рд░реВ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред Neovim рдХреЛ рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ Neovim-рд╡рд┐рд╢реЗрд╖ APIs рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдирд┐рд░реНрдорд┐рдд рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд╣рд╛рд▓ рдкрд╣рд┐рд▓реЗ рдиреИ рддрдпрд╛рд░ рд▓рдЧрднрдЧ 80 рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ, рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВ (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) рд░ рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВ (Qt5, ncurses, Node.js, рдЗрд▓реЗрдХреНрдЯреНрд░реЛрди, GTK+)ред рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рдЫред GUI рдПрдб-рдЕрдирд╣рд░реВ рдзреЗрд░реИ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдЬрд╕реНрддреИ рдЫрдиреН, рддрд░ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдХреЛ рд╡рд┐рдкрд░реАрдд, рддрд┐рдиреАрд╣рд░реВрд▓реЗ Neovim рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдХрд▓рд╣рд░реВ рд╕реБрд░реБ рдЧрд░реНрдЫрдиреН, рдЬрдмрдХрд┐ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ Neovim рднрд┐рддреНрд░рдмрд╛рдЯ рдмреЛрд▓рд╛рдЗрдиреНрдЫред

рдорд╛ рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг:

  • рдирдпрд╛рдБ API рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдареВрд▓реЛ рднрд╛рдЧ рдердкрд┐рдпреЛред
  • рд▓реБрдЖ рднрд╛рд╖рд╛рдорд╛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп Nvim-Lua рдердкрд┐рдпреЛред
  • рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рд╣рдиреНрдЫ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░рд╣рд░реВрдХреЛ рд╕рдЯреНрдЯрд╛ рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рд╕реНрддрд░рдорд╛ рд╕реНрдХреНрд░рд┐рдирдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджреИред
  • рдкреВрд░реНрдг рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд╡рд┐рдиреНрдбреЛрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рдЬреБрди рдХреБрдиреИ рдкрдирд┐ рд╕реНрдерд╛рдирдорд╛ рд░рд╛рдЦреНрди рд╕рдХрд┐рдиреНрдЫ, рд╕рдВрд▓рдЧреНрди, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдореНрдкрд╛рджрди рдмрдлрд░рд╣рд░реВрд╕рдБрдЧ рд▓рд┐рдЩреНрдХ рдЧрд░рд┐рдПрдХреЛ, рд░ рдорд▓реНрдЯрд┐рдЧреНрд░рд┐рдб рдореЛрдбрдорд╛ рд╕рдореВрд╣рдмрджреНрдз рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
  • рдкрд╛рд░рджрд░реНрд╢реА рдбреНрд░рдкрдбрд╛рдЙрди рдореЗрдиреБрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ 'pumblend' рд╡рд┐рдХрд▓реНрдк рдердкрд┐рдпреЛред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди