Skip to content

famiclone/nvim-lua-guide-ua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 

Repository files navigation

ΠŸΠΎΡ‡Π°Ρ‚ΠΎΠΊ Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π· Lua Π² Neovim

Π†Π½ΡˆΡ– ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄ΠΈ

Зміст

ΠŸΠΎΡ‡Π°Ρ‚ΠΎΠΊ

ІнтСграція Lua Π² якості ΠΏΠ΅Ρ€ΡˆΠΎΠΊΠ»Π°ΡΠ½ΠΎΡ— ΠΌΠΎΠ²ΠΈ всСрСдині Neovim ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΡŽΡ” Ρ—Ρ— Π² ΠΎΠ΄Π½Ρƒ Ρ–Π· Π½Π°ΠΉΠ²Π°ΠΆΠ»ΠΈΠ²Ρ–ΡˆΠΈΡ… особливостСй. Π’ΠΈΠΌ Π½Π΅ мСнш, ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ ΡƒΡ‡Π±ΠΎΠ²ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»Ρ–Π² ΠΏΠΎ Ρ€ΠΎΠ·Ρ€ΠΎΠ±Ρ†Ρ– ΠΏΠ»Π°Π³Ρ–Π½Ρ–Π² Π½Π° Lua Π·Π½Π°Ρ‡Π½ΠΎ мСншС Π½Ρ–ΠΆ Π°Π½Π°Π»ΠΎΠ³Ρ–Ρ‡Π½ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»Ρ–Π² Π½Π° Vimscript. Π¦Π΅ΠΉ Π΄ΠΎΠ²Ρ–Π΄Π½ΠΈΠΊ спроба Π½Π°Π΄Π°Ρ‚ΠΈ Π±Π°Π·ΠΎΠ²Ρƒ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ для ΠΏΠΎΡ‡Π°Ρ‚ΠΊΡƒ.

Π”ΠΎΠ²Ρ–Π΄Π½ΠΈΠΊ написаний Π· припущСнням, Ρ‰ΠΎ Π²ΠΈ використовуєтС Ρ‰ΠΎ наймСнш 0.5 Π²Π΅Ρ€ΡΡ–ΡŽ Neovim.

ВивчСння Lua

Π―ΠΊΡ‰ΠΎ Π²ΠΈ Ρ‰Π΅ Π½Π΅ Π·Π½Π°ΠΉΠΎΠΌΡ– Π· Ρ†Ρ–Ρ”ΡŽ мовою програмування, Ρ” Π²Π΅Π»ΠΈΠΊΠ΅ різноманіття рСсурсів Ρ‰ΠΎΠ± ΠΏΠΎΡ‡Π°Ρ‚ΠΈ:

  • Learn X in Y minutes page about Lua Π½Π°Π΄Π°ΡΡ‚ΡŒ Π²Π°ΠΌ швидкий огляд основи ΠΌΠΎΠ²ΠΈ
  • Π¦Π΅ΠΉ Π³Π°ΠΉΠ΄ Ρ‚Π°ΠΊΠΎΠΆ Π΄ΠΎΠ±Ρ€ΠΈΠΉ рСсурс для швидкого ΠΏΠΎΡ‡Π°Ρ‚ΠΊΡƒ
  • Π―ΠΊΡ‰ΠΎ Π²Π°ΠΌ Π±Ρ–Π»ΡŒΡˆΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π°ΡŽΡ‚ΡŒΡΡ Π²Ρ–Π΄Π΅ΠΎ, 1-hour tutorial on the language
  • ΠŸΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π±Ρ–Π»ΡŒΡˆΠ΅ Ρ–Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ–Π²? Π‘ΠΏΡ€ΠΎΠ±ΡƒΠΉ the LuaScript tutorial
  • Lua-users wiki Π²Π΅Π»ΠΈΠΊΠΈΠΉ обсяг корисної Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ— ΠΏΠΎ Lua
  • Official reference manual for Lua ΠΌΠΎΠΆΠ΅ Π΄Π°Ρ‚ΠΈ Ρ‚ΠΎΠ±Ρ– найкомплСксний огляд ΠΌΠΎΠ²ΠΈ (Π„ Vimdoc ΠΏΠ»Π°Π³Ρ–Π½ для читання всСрСдині Neovim: milisims/nvim-luaref)

Π‘Π»Ρ–Π΄ Π·Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Ρ‰ΠΎ Lua Π΄ΡƒΠΆΠ΅ проста ΠΌΠΎΠ²Π° програмування. Π‡Ρ— Π»Π΅Π³ΠΊΠΎ Π²Ρ‡ΠΈΡ‚ΠΈ, особливо якщо Π²ΠΈ ΠΌΠ°Ρ”Ρ‚Π΅ досвід Π·Ρ– схоТими ΠΌΠΎΠ²Π°ΠΌΠΈ - Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Javscript. Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π½Π°Ρ‚ΠΈ Lua Π±Ρ–Π»ΡŒΡˆΠ΅ Π½Ρ–ΠΆ Π²Π²Π°ΠΆΠ°Ρ”Ρ‚Π΅!

Π†Π½Ρ‚Π΅Π³Ρ€ΠΎΠ²Π°Π½Π° вСрсія Lua Ρƒ Neovim LuaJIT 2.1.0, Ρ‰ΠΎ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” ΡΡƒΠΌΡ–ΡΠ½Ρ–ΡΡ‚ΡŒ Π· Lua 5.1.

Π†ΡΠ½ΡƒΡŽΡ‡Ρ– Ρ‚ΡƒΡ‚ΠΎΡ€Ρ–Π°Π»ΠΈ ΠΏΠΎ написанню Lua Π² Neovim

Π”Π΅ΠΊΡ–Π»ΡŒΠΊΠ° Ρ‚ΡƒΡ‚ΠΎΡ€Ρ–Π°Π»Ρ–Π² Π²ΠΆΠ΅ написані Ρ‰ΠΎΠ± Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρ‚ΠΈ Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π»ΡŽΠ²Π°Ρ‚ΠΈ Lua ΠΏΠ»Π°Π³Ρ–Π½ΠΈ для Neovim. ДСякі Π· Π½ΠΈΡ… Ρ‚Ρ€ΠΎΡ…ΠΈ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Π»ΠΈ написати Ρ†Π΅ΠΉ Π΄ΠΎΠ²Ρ–Π΄Π½ΠΈΠΊ. Π’Π΅Π»ΠΈΠΊΠ° Π²Π΄ΡΡ‡Π½Ρ–ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ.

Π”ΠΎΠΏΠΎΠΌΡ–ΠΆΠ½Ρ– ΠΏΠ»Π°Π³Ρ–Π½ΠΈ

  • Vimpeccable - Π”ΠΎΠΏΠΎΠΌΡ–ΠΆΠ½ΠΈΠΉ ΠΏΠ»Π°Π³Ρ–Π½ для написання .vimrc Π½Π° Lua
  • plenary.nvim - ΠŸΠ»Π°Π³Ρ–Π½, Ρ‰ΠΎΠ± Π½Π΅ писати всі Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Lua Π΄Π²Ρ–Ρ‡Ρ–
  • popup.nvim - ІмплСмСнтація Popup API Π· vim
  • nvim_utils - Π”ΠΎΠΏΠΎΠΌΡ–ΠΆΠ½Ρ– ΡƒΡ‚Ρ–Π»Ρ–Ρ‚ΠΈ
  • nvim-luadev - REPL/Π΄Π΅Π±Π°Π³ консоль для Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠΈ Lua ΠΏΠ»Π°Π³Ρ–Π½Ρ–Π²
  • nvim-luapad - Π†Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π° пісочниця для Π²Π±ΡƒΠ΄ΠΎΠ²Π°Π½ΠΎΠ³ΠΎ Lua
  • nlua.nvim - Lua Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠ° для Neovim
  • BetterLua.vim - ΠšΡ€Π°Ρ‰Π΅ підсвічування синтаксису Lua Ρƒ Vim/NeoVim

ΠšΡƒΠ΄ΠΈ класти Lua Ρ„Π°ΠΉΠ»ΠΈ

init.lua

Neovim ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” Π·Π΄Π°Ρ‚Π½Ρ–ΡΡ‚ΡŒ використовувати ΠΊΠΎΠ½Ρ„Ρ–Π³ΠΈ написані Π½Π° Lua - init.lua, ΠΎΠΊΡ€Ρ–ΠΌ Π·Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ init.vim

init.lua звісно ΠΎΠΏΡ†Ρ–ΠΎΠ½Π°Π»ΡŒΠ½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для ΠΊΠΎΠ½Ρ„Ρ–Π³ΡƒΡ€Π°Ρ†Ρ–Ρ—. ΠŸΡ–Π΄Ρ‚Ρ€ΠΈΠΌΠΊΠ° init.vim Π½Π΅ Π·Π½ΠΈΠΊΠ»Π°, Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΠ²Π°Ρ‚ΠΈΡΡŒ Ρ€Π°Π·ΠΎΠΌ Π· Lua-ΠΊΠΎΠ½Ρ„Ρ–Π³ΠΎΠΌ. Π’Π°ΠΊΠΎΠΆ ΠΏΠΎΠΊΠΈ Ρ‰ΠΎ Π½Π΅ всі Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡŽΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Lua.

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

ΠœΠΎΠ΄ΡƒΠ»Ρ–

Lua ΠΌΠΎΠ΄ΡƒΠ»Ρ– ΠΌΠΎΠΆΠ½Π° Π·Π½Π°ΠΉΡ‚ΠΈ всСрСдині lua/ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ— Π² Π²Π°ΡˆΠΎΠΌΡƒ 'runtimepath' (для Π±Ρ–Π»ΡŒΡˆΠΎΡΡ‚Ρ– ΡŽΠ·Π΅Ρ€Ρ–Π² Ρ†Π΅ Π±ΡƒΠ΄Π΅ ~/.config/nvim/lua Π½Π° *nix систСмах Ρ‚Π° ~/AppData/Local/nvim/lua Π½Π° Windows. Π—Π° допомогою Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— require() Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ–ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Ρ– Π· Ρ†Ρ–Π΅Ρ— Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ—.

Π”Π°Π²Π°ΠΉΡ‚Π΅ розглянСмо структуру Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–ΠΉ:

πŸ“‚ ~/.config/nvim
β”œβ”€β”€ πŸ“ after
β”œβ”€β”€ πŸ“ ftplugin
β”œβ”€β”€ πŸ“‚ lua
β”‚  β”œβ”€β”€ πŸŒ‘ myluamodule.lua
β”‚  └── πŸ“‚ other_modules
β”‚     β”œβ”€β”€ πŸŒ‘ anothermodule.lua
β”‚     └── πŸŒ‘ init.lua
β”œβ”€β”€ πŸ“ pack
β”œβ”€β”€ πŸ“ plugin
β”œβ”€β”€ πŸ“ syntax
└── πŸ‡» init.vim

Наступний ΠΊΠΎΠ΄ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΠΈΡ‚ΡŒ myluamodule.lua:

require('myluamodule')

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π²ΠΊΠ°Π·ΡƒΠ²Π°Ρ‚ΠΈ Ρ€ΠΎΠ·ΡˆΠΈΡ€Π΅Π½Π½Ρ .lua. Π‘Ρ…ΠΎΠΆΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ завантаТСння other_modules/anothermodule.lua виглядає Ρ‚Π°ΠΊ:

require('other_modules.anothermodule')

Π°Π±ΠΎ

require('other_modules/anothermodule')

Π ΠΎΠ·Π΄Ρ–Π»ΠΈΡ‚Π΅Π»Ρ– ΡˆΠ»ΡΡ…Ρƒ ΠΌΠΎΠΆΡƒΡ‚ΡŒ Π±ΡƒΡ‚ΠΈ ΠΊΡ€Π°ΠΏΠΊΠΎΡŽ . Π°Π±ΠΎ слСшСм /.

Π―ΠΊΡ‰ΠΎ Π²ΠΈ Π½Π°ΠΌΠ°Π³Π°Ρ”Ρ‚Π΅ΡΡŒ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΠΈΡ‚ΠΈ Π½Π΅ Ρ–ΡΠ½ΡƒΡŽΡ‡ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Ρ†Π΅ ΠΏΡ€ΠΈΠ·Π²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ Ρ‚Π° Π²Ρ–Π΄ΠΌΡ–Π½ΠΈ виконання скрипта. pcall() функція ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ використана для запобігання ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ.

local ok, _ = pcall(require, 'module_with_error')
if not ok then
  -- Π½Π΅ Π·Π°Π²Π°Π½ΠΆΡƒΠ²Π°Ρ‚ΠΈ
end

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

ΠŸΠΎΡ€Π°Π΄ΠΈ

ДСякі ΠΏΠ»Π°Π³Ρ–Π½ΠΈ ΠΌΠΎΠΆΡƒΡ‚ΡŒ ΠΌΠ°Ρ‚ΠΈ ΠΎΠ΄Π½Π°ΠΊΠΎΠ²Ρ– Ρ–ΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»Ρ–Π² Ρƒ lua/ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ—. Π¦Π΅ ΠΌΠΎΠΆΠ΅ призвСсти Π΄ΠΎ ΠΊΠΎΠ½Ρ„Π»Ρ–ΠΊΡ‚Ρƒ простору Ρ–ΠΌΠ΅Π½.

Π―ΠΊΡ‰ΠΎ Π΄Π²Π° Ρ€Ρ–Π·Π½ΠΈΡ… ΠΏΠ»Π°Π³Ρ–Π½ΠΈ ΠΌΠ°ΡŽΡ‚ΡŒ Ρ„Π°ΠΉΠ» lua/main.lua, Π° ΠΏΠΎΡ‚Ρ–ΠΌ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΡƒΡŽΡ‚ΡŒΡΡ ΡˆΠ»ΡΡ…ΠΎΠΌ require('main'), Ρ‚ΠΎ який Π· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅ використаний?

Π’ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅ Π³Π°Ρ€Π½ΠΎΡŽ Ρ–Π΄Π΅Ρ”ΡŽ покласти ΠΊΠΎΠΆΠ΅Π½ main.lua Ρ„Π°ΠΉΠ» Ρƒ Π΄Ρ–Ρ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–ΡŽ Π· назвою ΠΏΠ»Π°Π³Ρ–Π½Ρƒ: lua/plugin_name/main.lua

Π€Π°ΠΉΠ»ΠΈ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΡƒ

Π―ΠΊ Ρ– Vimscript Ρ„Π°ΠΉΠ»ΠΈ, Lua Ρ„Π°ΠΉΠ»ΠΈ ΠΌΠΎΠΆΡƒΡ‚ΡŒ Π±ΡƒΡ‚ΠΈ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΠ΅Π½Ρ– Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π·Ρ– ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΎΡ— Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ— runtimepath. На Π΄Π°Π½ΠΈΠΉ час ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡŽΡ‚ΡŒΡΡ наступні Π½Π°Π·Π²ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–ΠΉ:

  • colors/
  • compiler/
  • ftplugin/
  • ftdetect/
  • indent/
  • plugin/
  • syntax/

Π£ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ—, усі *.vim Ρ„Π°ΠΉΠ»ΠΈ ΠΌΠ°ΡŽΡ‚ΡŒ Π±ΡƒΡ‚ΠΈ Π²ΠΈΠ·Π²Π°Π½Ρ– після *.lua Ρ„Π°ΠΉΠ»Ρ–Π².

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

ΠŸΠΎΡ€Π°Π΄ΠΈ

Поки Ρ„Π°ΠΉΠ»ΠΈ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΡƒ Π½Π΅ Π±Π°Π·ΡƒΡŽΡ‚ΡŒΡΡ Π½Π° систСмі ΠΌΠΎΠ΄ΡƒΠ»Ρ–Π² Lua, Π΄Π²Π° ΠΏΠ»Π°Π³Ρ–Π½ΠΈ ΠΌΠΎΠΆΡƒΡ‚ΡŒ ΠΌΠ°Ρ‚ΠΈ Ρ„Π°ΠΉΠ» plugin/main.lua Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Використання Lua Ρƒ Vimscript

:lua

Ця ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΈΠΊΠΎΠ½ΡƒΡ” ΡˆΠΌΠ°Ρ‚ΠΎΠΊ Lua ΠΊΠΎΠ΄Ρƒ.

:lua require('myluamodule')

Π—Π° допомогою heredoc синтаксису ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Π²ΠΈΠΊΠΎΠ½ΡƒΠ²Π°Ρ‚ΠΈ багаторядкові скріпти:

echo "Here's a bigger chunk of Lua code"

lua << EOF
local mod = require('mymodule')
local tbl = {1, 2, 3}

for k, v in ipairs(tbl) do
    mod.method(v)
end

print(tbl)
EOF

КоТна lua ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠ°Ρ” свою ΠΎΠ±Π»Π°ΡΡ‚ΡŒ бачСння Ρ‚Π° Π·ΠΌΡ–Π½Π½Ρ– ΠΎΠ³ΠΎΠ»ΠΎΡˆΠ΅Π½Ρ– Π· ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈΠΌ словом local Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ΡŒ доступні Π·Π° ΠΌΠ΅ΠΆΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. ΠŸΡ€ΠΈΠΊΠ»Π°Π΄:

:lua local foo = 1
:lua print(foo)
" Π²ΠΈΠ²Π΅Π΄Π΅ 'nil' Π·Π°ΠΌΡ–ΡΡ‚ΡŒ '1'

Lua функція print() ΠΏΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ схоТС Π΄ΠΎ :echomsg ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. Π’ΠΈΡ…Ρ–Π΄Π½Ρ– Π΄Π°Π½Ρ– Π±ΡƒΠ΄ΡƒΡ‚ΡŒ Π·Π±Π΅Ρ€Π΅ΠΆΠ΅Π½Ρ– Ρƒ історіі ΠΏΠΎΠ²Ρ–Π΄ΠΎΠΌΠ»Π΅Π½ΡŒ.

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

:luado

Ця ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΈΠΊΠΎΠ½ΡƒΡ” ΡˆΠΌΠ°Ρ‚ΠΎΠΊ Lua ΠΊΠΎΠ΄Ρƒ який Π΄Ρ–Ρ” Π½Π° Π΄Ρ–Π°ΠΏΠ°Π·ΠΎΠ½ рядків Ρƒ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ Π±ΡƒΡ„Π΅Ρ€Ρ–. Π―ΠΊΡ‰ΠΎ рядки Π½Π΅ Π·Π°Π·Π½Π°Ρ‡Π΅Π½Ρ–, Ρ‚ΠΎ для Ρ†Ρ–Π»ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Ρƒ. Π‘ΡƒΠ΄ΡŒ-який рядок який повСрнувся Π· Π±Π»ΠΎΠΊΡƒ, Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для визначСння Ρ‚ΠΎΠ³ΠΎ, Ρ‡ΠΈΠΌ слід Π·Π°ΠΌΡ–Π½ΠΈΡ‚ΠΈ ΠΊΠΎΠΆΠ΅Π½ рядок.

Наступна ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΠΌΡ–Π½ΠΈΠ»Π° Π±ΠΈ ΠΊΠΎΠΆΠ΅Π½ рядок Ρƒ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ Π±ΡƒΡ„Π΅Ρ€Ρ– тСкстом hello world:

:luado return 'hello world'

Π”Π²Ρ– нСявні Π·ΠΌΡ–Π½Π½Ρ– line Ρ‚Π° linenr Ρ‚Π°ΠΊΠΎΠΆ доступні. line – Ρ†Π΅ тСкст рядка, Π° linenr – Π½ΠΎΠΌΠ΅Ρ€. Наступна ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ ΠΊΠΎΠΆΠ΅Π½ рядок Ρƒ Π²Π΅Ρ€Ρ…Π½ΡŒΠΎΠΌΡƒ рСгістрі, якщо Π½ΠΎΠΌΠ΅Ρ€ рядка Π΄Ρ–Π»ΠΈΡ‚ΡŒΡΡ Π½Π° 2 Π±Π΅Π· Π·Π°Π»ΠΈΡˆΠΊΡƒ:

:luado if linenr % 2 == 0 then return line:upper() end

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

ΠŸΡ–Π΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ Lua Ρ„Π°ΠΉΠ»Ρ–Π²

Neovim Π½Π°Π΄Π°Ρ” 3 Ex ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Ρ‰ΠΎΠ± ΠΏΡ–Π΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΠΈ Lua Ρ„Π°ΠΉΠ»ΠΈ:

  • :luafile
  • :source
  • :runtime

:luafile Ρ‚Π° :source Π΄ΡƒΠΆΠ΅ схоТі:

:luafile ~/foo/bar/baz/myluafile.lua
:luafile %
:source ~/foo/bar/baz/myluafile.lua
:source %

:source Ρ‚Π°ΠΊΠΎΠΆ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” Π΄Ρ–Π°ΠΏΠ°Π·ΠΎΠ½ΠΈ, ΠΊΠΎΡ‚Ρ€Ρ– Π±ΡƒΠ΄ΡƒΡ‚ΡŒ корисні для виконання частини скрипту:

:1,10source

Команда runtime Π΄Π΅Ρ‰ΠΎ Π²Ρ–Π΄Ρ€Ρ–Π·Π½ΡΡ”Ρ‚ΡŒΡΡ: Π²ΠΎΠ½Π° використовує 'runtimepath' ΠΎΠΏΡ†Ρ–ΡŽ для визначСння Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ— Π·Π²Ρ–Π΄ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ΡŒ ΠΏΡ–Π΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ– Ρ„Π°ΠΉΠ»ΠΈ. Π‘Ρ–Π»ΡŒΡˆe Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ: :help :runtime.

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

Різниця ΠΌΡ–ΠΆ ΠΏΡ–Π΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡΠΌ Ρ‚Π° Π²ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ require():

МоТливо Π²Π°ΠΌ Ρ†Ρ–ΠΊΠ°Π²ΠΎ Ρƒ Ρ‡ΠΎΠΌΡƒ різниця Ρ‚Π° Ρ‡ΠΈ Π²Π°Ρ€Ρ‚ΠΎ Π²Ρ–Π΄Π΄Π°Π²Π°Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π°Π³Ρƒ ΠΎΠ΄Π½ΠΎΠΌΡƒ способу Π½Π°Π΄ Ρ–Π½ΡˆΠΈΠΌ. Π’ΠΎΠ½ΠΈ ΠΌΠ°ΡŽΡ‚ΡŒ Ρ€Ρ–Π·Π½Ρ– Π²ΠΈΠΏΠ°Π΄ΠΊΠΈ використання:

  • require():
    • Π²Π±ΡƒΠ΄ΠΎΠ²Π°Π½Π° функція Lua. Дозволяє користуватися ΠΏΠ΅Ρ€Π΅Π²Π°Π³Π°ΠΌΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡ— систСми Lua
    • ΡˆΡƒΠΊΠ°Ρ” ΠΌΠΎΠ΄ΡƒΠ»Ρ– Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ— lua/ Ρƒ Π²Π°ΡˆΠΎΠΌΡƒ 'runtimepath'
    • дозволяє слідкувати Π·Π° Ρ‚ΠΈΠΌ які ΠΌΠΎΠ΄ΡƒΠ»Ρ– Π±ΡƒΠ»ΠΈ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΠ΅Π½Ρ– Ρ‚Π° Π·Π°ΠΏΠΎΠ±Ρ–Π³Π°Ρ” ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ парсингу Ρ‚Π° виконанню скрипта. Π―ΠΊΡ‰ΠΎ Π²ΠΈ Π·ΠΌΡ–Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Ρƒ Π²ΠΆΠ΅ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΠ΅Π½ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»Ρ– Ρ‚Π° спробуєтС Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΠΈΡ‚ΠΈ ΠΉΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π΅Π· require() Ρ‰Π΅ Ρ€Π°Π·, Ρ‚ΠΎ Π·ΠΌΡ–Π½ΠΈ Π½Π΅ Π·Π°ΡΡ‚ΠΎΡΡƒΡŽΡ‚ΡŒΡΡ.
  • :luafile, :source, :runtime:
    • Ex ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. НС ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡŽΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»Ρ–
    • ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΠΈΠΊΠΎΠ½ΡƒΡŽΡ‚ΡŒ Ρ€Π°Π½Ρ–ΡˆΠ΅ Π²ΠΈΠΊΠΎΠ½Π°Π½Ρ– скрипти
    • :luafile Ρ‚Π° :source ΠΏΡ€ΠΈΠΉΠΌΠ°ΡŽΡ‚ΡŒ ΡˆΠ»ΡΡ… Π΄ΠΎ Ρ„Π°ΠΉΠ»Ρƒ як Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΈΠΉ Ρ‚Π°ΠΊ Ρ– відносний Π΄ΠΎ Ρ€ΠΎΠ±ΠΎΡ‡ΠΎΡ— Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–Ρ— ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ–ΠΊΠ½Π°
    • :runtime використовує 'runtimepath' ΠΎΠΏΡ†Ρ–ΡŽ Ρ‰ΠΎΠ± Π·Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»ΠΈ

luaeval()

Ця Π²Π±ΡƒΠ΄ΠΎΠ²Π°Π½Π° Vimscript функція Π²ΠΈΠΊΠΎΠ½ΡƒΡ” Lua вираТСння Ρ‚Π° ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ΠΈΠΏΠΈ Π΄Π°Π½Π½ΠΈΡ… Lua Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡŽΡ‚ΡŒΡΡ Ρƒ Vimscript Ρ‚ΠΈΠΏΠΈ (Ρ– Π½Π°Π²ΠΏΠ°ΠΊΠΈ).

" You can store the result in a variable
let variable = luaeval('1 + 1')
echo variable
" 2
let concat = luaeval('"Lua".." is ".."awesome"')
echo concat
" 'Lua is awesome'

" List-like tables are converted to Vim lists
let list = luaeval('{1, 2, 3, 4}')
echo list[0]
" 1
echo list[1]
" 2
" Note that unlike Lua tables, Vim lists are 0-indexed

" Dict-like tables are converted to Vim dictionaries
let dict = luaeval('{foo = "bar", baz = "qux"}')
echo dict.foo
" 'bar'

" Same thing for booleans and nil
echo luaeval('true')
" v:true
echo luaeval('nil')
" v:null

" You can create Vimscript aliases for Lua functions
let LuaMathPow = luaeval('math.pow')
echo LuaMathPow(2, 2)
" 4
let LuaModuleFunction = luaeval('require("mymodule").myfunction')
call LuaModuleFunction()

" It is also possible to pass Lua functions as values to Vim functions
lua X = function(k, v) return string.format("%s:%s", k, v) end

luaeval() ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ” ΠΎΠΏΡ†Ρ–ΠΎΠ½Π°Π»ΡŒΠ½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ який дозволяє ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΠΈ Π΄Π°Π½Ρ– Π΄ΠΎ вираТСння. ΠŸΠΎΡ‚Ρ–ΠΌ Ρƒ вас Π±ΡƒΠ΄Π΅ доступ Π΄ΠΎ Π΄Π°Π½Π½ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°Π³Ρ–Ρ‡Π½Ρƒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρƒ Π·ΠΌΡ–Π½Π½Ρƒ _A:

echo luaeval('_A[1] + _A[2]', [1, 1])
" 2

echo luaeval('string.format("Lua is %s", _A)', 'awesome')
" 'Lua is awesome'

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

v:lua

Π¦Π΅ глобальна Vim Π·ΠΌΡ–Π½Π½Π° дозволяє Π²Π°ΠΌ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ‚ΠΈ Lua Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Ρƒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ просторі Ρ–ΠΌΠ΅Π½ (_G) напряму Π· Vimscript. Π† Π·Π½ΠΎΠ²Ρƒ Ρ‚ΠΈΠΏΠΈ Π΄Π°Π½Π½ΠΈΡ… Vim Π±ΡƒΠ΄ΡƒΡ‚ΡŒ сконвСртовані Ρƒ Lua Ρ‚ΠΈΠΏΠΈ Ρ– Π½Π°Π²ΠΏΠ°ΠΊΠΈ.

call v:lua.print('Hello from Lua!')
" 'Hello from Lua!'

let scream = v:lua.string.rep('A', 10)
echo scream
" 'AAAAAAAAAA'

" How about a nice statusline?
lua << EOF

" How about a nice statusline?
lua << EOF
function _G.statusline()
    local filepath = '%f'
    local align_section = '%='
    local percentage_through_file = '%p%%'
    return string.format(
        '%s%s%s',
        filepath,
        align_section,
        percentage_through_file
    )
end
EOF

set statusline=%!v:lua.statusline()

" Also works in expression mappings
lua << EOF
function _G.check_back_space()
    local col = vim.api.nvim_win_get_cursor(0)[2]
    return (col == 0 or vim.api.nvim_get_current_line():sub(col, col):match('%s')) and true
end
EOF

inoremap <silent> <expr> <Tab>
    \ pumvisible() ? "\<C-N>" :
    \ v:lua.check_back_space() ? "\<Tab>" :
    \ completion#trigger_completion()

" Call a function from a Lua module by using single quotes and omitting parentheses:
call v:lua.require'module'.foo()

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ:

ЗастСрСТСння

Ця Π·ΠΌΡ–Π½Π½Π° ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ використана Ρ‚Ρ–Π»ΡŒΠΊΠΈ для Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ. Наступний ΠΊΠΎΠ΄ Π·Π°Π²ΠΆΠ΄ΠΈ Π±ΡƒΠ΄Π΅ Π²ΠΈΠΊΠΈΠ΄ΡƒΠ²Π°Ρ‚ΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΊΡƒ:

" Aliasing functions doesn't work
let LuaPrint = v:lua.print

" Accessing dictionaries doesn't work
echo v:lua.some_global_dict['key']

" Using a function as a value doesn't work
echo map([1, 2, 3], v:lua.global_callback)

ΠŸΠΎΡ€Π°Π΄ΠΈ

Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²Ρ–ΠΌΠΊΠ½ΡƒΡ‚ΠΈ підсвічСння синтаксису Lua всСрСдині .vim Ρ„Π°ΠΉΠ»Ρ–Π². Π”ΠΎΠ΄Π°ΠΉΡ‚Π΅ let g:vimsyn_embed = 'l' Π΄ΠΎ вашого Ρ„Π°ΠΉΠ»Ρƒ ΠΊΠΎΠ½Ρ„Ρ–Π³ΡƒΡ€Π°Ρ†Ρ–Ρ—. Π‘Ρ–Π»ΡŒΡˆΠ΅ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Π‡ :help g:vimsyn_embed.

ΠŸΡ€ΠΎΡΡ‚Ρ–Ρ€ Ρ–ΠΌΠ΅Π½ vim

Neovim ΠΌΠ°Ρ” Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρƒ Π·ΠΌΡ–Π½Π½Ρƒ vim яка Ρ” Π²Ρ…Ρ–Π΄Π½ΠΎΡŽ Ρ‚ΠΎΡ‡ΠΊΠΎΡŽ Π΄ΠΎ API Π· Lua ΠΊΠΎΠ΄Ρƒ. Π¦Π΅ Π½Π°Π΄Π°Ρ” користувачам Ρ€ΠΎΠ·ΡˆΠΈΡ€Π΅Π½Ρƒ стандартну Π±Ρ–Π±Π»Ρ–ΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ, Π° Ρ‚Π°ΠΊΠΎΠΆ Ρ€Ρ–Π·Π½ΠΎΠΌΠ°Π½Ρ–Ρ‚Π½Ρ– ΠΏΡ–Π΄ΠΌΠΎΠ΄ΡƒΠ»Ρ–.

ДСякі Π²Π°ΠΆΠ»ΠΈΠ²Ρ– Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Ρ–:

  • vim.inspect: трансформує Lua ΠΎΠ±ΚΌΡ”ΠΊΡ‚ΠΈ Π΄ΠΎ людино-Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΈΠΉ вигляду (корисно для інспСктування Lua Ρ‚Π°Π±Π»ΠΈΡ†ΡŒ)
  • vim.regex: використовуйтС рСгулярні вираТСння vim Ρ–Π· Lua
  • vim.api: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ який Π½Π°Π΄Π°Ρ” доступ Π΄ΠΎ API Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ (Ρ‚Π°ΠΊΠΎΠΆ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ Π²Ρ–Π΄Π΄Π°Π»Π΅Π½ΠΈΠΌΠΈ ΠΏΠ»Π°Π³Ρ–Π½Π°ΠΌΠΈ)
  • vim.ui: UI Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—
  • vim.loop: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для доступу Π΄ΠΎ event-loop (використовує LibUV)
  • vim.lsp: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‰ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŽΡ” Π²Π±ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΉ LSP ΠΊΠ»Ρ–Ρ”Π½Ρ‚
  • vim.treesitter: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для доступу Π΄ΠΎ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΎΠ½Π°Π»Ρƒ Π±Ρ–Π±Π»Ρ–ΠΎΡ‚Π΅ΠΊΠΈ tree-sitter

Π¦Π΅ΠΉ список Π½Π΅ Ρ” Π²ΠΈΡ‡Π΅Ρ€ΠΏΠ½ΠΈΠΌ. Π―ΠΊΡ‰ΠΎ Π²ΠΈ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π·Π½Π°Ρ‚ΠΈ Ρ‰ΠΎ доступно Ρ‡Π΅Ρ€Π΅Π· vim Π·ΠΌΡ–Π½Π½Ρƒ, :help lua-stdlib Ρ‚Π° :help lua-vim. Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ використовувати ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ :lua print(vim.inspect(vim)) Ρ‰ΠΎΠ± ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ ΠΏΠΎΠ²Π½ΠΈΠΉ список ΠΌΠΎΠ΄ΡƒΠ»Ρ–Π². API Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Ρ‚Π΅ΠΆ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²Π°Π½Ρ– :help api-global.

ΠŸΠΎΡ€Π°Π΄ΠΈ

ΠŸΠΈΡΠ°Ρ‚ΠΈ print(vim.inspect(x)) ΠΊΠΎΠΆΠ΅Π½ Ρ€Π°Π· ΠΊΠΎΠ»ΠΈ Ρ‚Ρ€Π΅Π±Π° проінспСктувати вміст ΠΎΠ±ΚΌΡ”ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π½ΡƒΠ΄Π½ΠΈΠΌ процСсом. МоТливо, Π²Π°Ρ€Ρ‚ΠΎ ΠΌΠ°Ρ‚ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρƒ ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΡƒ дСсь Ρƒ Ρ„Π°ΠΉΠ»Ρ– ΠΊΠΎΠ½Ρ„Ρ–Π³ΡƒΡ€Π°Ρ†Ρ–Ρ— (Ρƒ Neovim 0.7.9+, ця функція Π²Π±ΡƒΠ΄ΠΎΠ²Π°Π½Π°, Π±Ρ–Π»ΡŒΡˆΠ΅ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ— :help vim.pretty_print()):

function _G.put(...)
  local objects = {}
  for i = 1, select('#', ...) do
    local v = select(i, ...)
    table.insert(objects, vim.inspect(v))
  end

  print(table.concat(objects, '\n'))
  return ...
end

You can then inspect the contents of an object very quickly in your code or from the command-line: Π’Π΅ΠΏΠ΅Ρ€ Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ інспСктувати вміст ΠΎΠ±ΚΌΡ”ΠΊΡ‚Ρƒ швидко Ρƒ Π²Π°ΡˆΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρ– Ρ‡ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΠΉ рядок:

put({1, 2, 3})
:lua put(vim.loop)

Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ використовувати :lua ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для красиво вивСсти вираТСння додавши Π΄ΠΎ нього прСфікс = (Neovim 0.7+)

:lua =vim.loop

Releases

No releases published

Packages

No packages published