Vimscript vs Lua
Definição curta: Comparação lado a lado entre Vimscript e Lua para configuração do Neovim. Quando usar cada linguagem.
Antes de começar
- Ter lido Init.lua básico
- Um gerenciador de plugins configurado
O que você vai aprender
- Explicar Comparação básica com suas palavras
- Explicar Variáveis com suas palavras
- Explicar Options com suas palavras
- Localizar o assunto desta página no
:helpdo seu próprio Neovim
O que é
O Neovim suporta ambas linguagens. Vimscript é a linguagem histórica do Vim, enquanto Lua é a linguagem moderna recomendada para configurações.
Comparação básica
| Conceito | Vimscript | Lua |
|---|---|---|
| Variável | let | local / vim.g |
| Função | function | function |
| Option | set number | vim.opt.number |
| Keymap | nnoremap | vim.keymap.set |
| Condicional | if | if |
| Loop | for | for |
Variáveis
" Vimscript
let g:mapleader = " "
let my_var = "value"
let b:buffer_var = "buffer local"
let w:window_var = "window local"-- Lua
vim.g.mapleader = " "
local my_var = "value"
vim.b.buffer_var = "buffer local"
vim.w.window_var = "window local"Options
" Vimscript
set number
set relativenumber
set expandtab
set tabstop=2
set shiftwidth=2-- Lua
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.expandtab = true
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2Keymaps
" Vimscript
nnoremap <leader>w :w<CR>
vnoremap <leader>y "+y
inoremap jk <Esc>-- Lua
vim.keymap.set("n", "<leader>w", ":w<CR>", { silent = true })
vim.keymap.set("v", "<leader>y", '"+y', { silent = true })
vim.keymap.set("i", "jk", "<Esc>", { silent = true })Funções
" Vimscript
function! MyFunction()
echo "Hello"
endfunction
function! MyFunc(arg)
return a:arg * 2
endfunction-- Lua
local function my_function()
print("Hello")
end
local function my_func(arg)
return arg * 2
endCondicionais
" Vimscript
if x > 0
echo "positive"
elseif x < 0
echo "negative"
else
echo "zero"
endif-- Lua
if x > 0 then
print("positive")
elseif x < 0 then
print("negative")
else
print("zero")
endDiagrama de decisão
flowchart TD
A{Configurar Neovim?} --> B{Configuração simples?}
B -->|Sim| C["Use Lua\n(init.lua)"]
B -->|Não| D{Depurar Vimscript?}
D -->|Sim| E["Vimscript\n(depuração)"]
D -->|Não| F["Lua é recomendado\n(performance)"]Quando usar cada um
| Situação | Recomendado |
|---|---|
| Configuração geral | Lua |
| Plugin config | Lua |
| Depuração | Vimscript (comando) |
| Comandos Ex | Ambos |
| Filetype plugins | Vimscript |
Você aprendeu
- Comparação básica
- Variáveis
- Options
- Keymaps
- Funções
Perguntas para reflexão
- O que Comparação básica resolve, e o que se perde sem isso?
- O que Variáveis resolve, e o que se perde sem isso?
- O que Options resolve, e o que se perde sem isso?
- Qual parte desta página você conseguiria reproduzir sem consultar, direto no editor?
Artigos relacionados
Veja também
- Lua API — API Lua do Neovim
- init.lua Básico — Tutorial Lua
Referências
- Vimscript Documentation — Vimscript
- Lua Documentation — Lua