Ссылки:
То есть, если нужно очистить все настройки, то:
rm -rf ~/.local/share/nvim
rm -rf ~/.local/state/nvim
rm -rf ~/.config/nvim
Если нужно удалить swap-файл, то:
rm ~/.local/state/nvim/swap/%home%mark%projects%...%filename.html.swp
" Конфигурационные файл: ~/.config/nvim/init.lua, ~/.config/nvim/init.vim
!!! init.vim - устаревий способ.
!!! Лучше все настройки указывыать в init.lua.
" Если я хочу, чтобы при запуске от root, nvim подцеплял настройки из ~/.config/nvim/init.lua, то запускаем так:
sudo -E nvim myfile.txt
" Шаблоны для базовой настройки можно найти здесь: /usr/share/nvim/runtime/
/usr/share/nvim/runtime/example_init.lua - это дефолтный шаблон init.lua
cp /usr/share/nvim/runtime/example_init.lua ~/.config/nvim/init.lua
" НО это всё не дефолтные настройки. Дефолтный конфиг встроен в lua-код внутри neovim
" Посммотреть эти дефолтные настройки можно здесь:
less /usr/share/nvim/runtime/lua/vim/_defaults.lua
"" Вытаскивать дефолтные настройки оттуда смысла нет. Проще переопределять нужное в ~/.config/nvim/init.lua
" Применяем цветовую схему:
vim.cmd.colorscheme('habamax')
" Убираем фон у основных групп, чтобы сделать всё прозрачным
vim.api.nvim_set_hl(0, "Normal", { bg = "NONE" })
" vim.api.nvim_set_hl(0, "NormalFloat", { bg = "NONE" })
" vim.api.nvim_set_hl(0, "SignColumn", { bg = "NONE" })
" vim.api.nvim_set_hl(0, "LineNr", { bg = "NONE" })
vim.api.nvim_set_hl(0, "EndOfBuffer", { bg = "NONE" })
" vim.api.nvim_set_hl(0, "StatusLine", { bg = "NONE" })
" vim.api.nvim_set_hl(0, "StatusLineNC",{ bg = "NONE" })
" vim.api.nvim_set_hl(0, "TabLineFill", { bg = "NONE" })
" vim.api.nvim_set_hl(0, "VertSplit", { bg = "NONE" })
" Перезагрузить настройки из init.lua:
:source $MYVIMRC
" или:
:source ~/.config/nvim/init.lua
" Пример выше затирает цветовую схему 'habamax' и делает настройки такими же, как в терминале.
" Вот так можно сохранить оригинальный цвет текста из схемы:
vim.cmd.colorscheme('elflord')
" vim.api.nvim_set_hl(0, "Normal", { fg = "red", bg = "NONE" })
" Получаем текущий цвет текста для Normal
local normal_fg = vim.api.nvim_get_hl(0, {name = "Normal"}).fg
" Убираем фон у основных групп, и цвет текста применяем тот, который стоит по умолчанию у 'elflord'
vim.api.nvim_set_hl(0, "Normal", { fg = normal_fg, bg = "NONE" })
vim.api.nvim_set_hl(0, "EndOfBuffer", { fg = normal_fg, bg = "NONE" })
Перемещение
Режим вставки
Удаление с сохранением в буфер:
Удаление без сохранения в буфер:
Поиск:
Копирование
Буферы
окна
Вкладки:
Полезности:
Комментирование. В Neovim есть встроенный Lua-модуль для комментариев.
Терминал
:terminal " открыть терминал
:term " открыть терминал – короткая форма
:split | terminal " открыть терминал в отдельном окне
:vsplit | terminal " открыть терминал – вертикальное разделение
:sp | term " сокращённая форма
:vs | term " сокращённая форма
:botright split | terminal " открыть в новом окне снизу
:botright sp | term " то же самое – сокращённая форма
:tabnew | terminal " открыть в новой вкладке
Настройка терминала (Vim):
:set splitbelow " всегда открывать терминал снизу
:set splitright " всегда открывать терминал справа
sp | term " теперь терминал откроется снизу
vs | term " теперь терминал откроется справа
Настройка терминала (Lua):
vim.opt.splitbelow = true -- всегда открывать терминал снизу
vim.opt.splitright = true -- всегда открывать терминал справа
Цветовые схемы (Vim)
-- Посмотреть цветовую схему:
:echo &background
-- dark
-- сменить цветовую схему
:colorscheme elflord
:colorscheme habamax
-- вернуть обратно на дефолтную:
:colorscheme default
Цветовые схемы (Lua)
-- lua-обёртка над :-командами Vim
vim.cmd('colorscheme habamax')
-- Lua-синтаксический сахар над vim.cmd(...)
vim.cmd.colorscheme('habamax')
-- Прямой вызов Neovim API – самый низкоуровневый из трёх
-- Устаревающий способ. Менее понятный
vim.api.nvim_command('colorscheme habamax')
Цвет фона (Lua):
vim.api.nvim_set_hl(0, "Normal", { bg = "#21252B"})
-- 0 – это namespace (пространство имён подсветки)
-- т.е. 0 = глобальное namespace, означает "применить ко всему редактору"
-- Например, вот этот пример изменит цвет подсветки комментариев везде:
vim.api.nvim_set_hl(0, "Comment", { fg = "#888888" })
-- "Normal" – highlight-group, самая важная группа
-- Т.е. "Normal" = базовый стиль всего текста.
-- Если задать цвет этой группе, фон всего окна редактора изменится
-- { bg = "#21252B" } – это Lua-таблица с атрибутами
Посмотреть все группы можно с помощью команды:
:highlight
ВАЖНЫЙ НЮАНС! Здесь важен порядок:
vim.cmd('colorscheme habamax')
vim.api.nvim_set_hl(0, "Normal", { bg = "#21252B"})
Если поменять местами эти две строчки, то цветовая схема перезапишет цвет фона.
Нумерация строк (Vim)
:set number " включить нумерацию строк
:set nu " включить нумерацию строк – короткая запись
:set number! " отключить нумерацию строк
:set nu! " отключить нумерацию строк – короткая запись
:set relativenumber " включить относительную нумерацию строк
:set rnu " включить отн. нумерацию строк – короткая запись
:set relativenumber! " отключить относительную нумерацию строк
:set rnu! " отключить отн. нумерацию строк – короткая запись
Нумерация строк (Lua):
vim.opt.number = true -- включить нумерацию строк
vim.opt.nu = true -- включить нумерацию строк – короткая запись
vim.opt.number = false -- отключить нумерацию строк
vim.opt.nu = false -- отключить нумерацию строк - короткая запись
vim.opt.relativenumber = true -- включить относительную нумерацию строк
vim.opt rnu = true -- вкл. отн. нумерацию строк – короткая запись
vim.opt.relativenumber = false -- отключить относительную нумерацию строк
vim.opt rnu = false -- откл. отн. нумерацию строк – короткая запись
clipboard:
# Проверить, есть ли поддержка clipboard
:echo has("clipboard")
Посмотреть, откуда читается конфиг:
:echo stdpath("config")
Когда я печатаю HTML, включаются отступы, которые мне мешают. Проверим, какие отступы включены:
:set autoindent?
" autoindent
:set smartindent?
" nosmartindent
:set cindent?
" nocindent
:set indentexpr?
" indentexpr=HtmlIndent()
:set filetype?
" filetype=html
В нашем случае виновник: indentexpr=HtmlIndent(). autoindent тут не причём.
Отключим indentexpr сразу же в Neovim:
:set indentexpr=
Чтобы отключить автоотступы навсегда, добавим в init.lua:
-- ~/.config/nvim/init.lua
vim.api.nvim_create_autocmd("FileType", {
pattern = "html",
callback = function()
vim.opt_local.indentexpr = ""
end,
})
Когда мы запускаем .lua-файл, то у нас тоже включаются автоотступы:
:set indentexpr?
" indentexpr=GetLuaIndent()
Отключим автоотступы для .lua-файлов в init.lua:
-- ~/.config/nvim/init.lua
vim.api.nvim_create_autocmd("FileType", {
pattern = "lua",
callback = function()
vim.opt_local.indentexpr = ""
end,
})
За длину отступов и табов отвечают переменные: shiftwidth и tabstop. По умолчанию они равны 8. Можно проверить это:
:set shiftwidth?
" shiftwidth=8
:set tabstop?
" tabstop=8
Если не хочется убирать отступы, то для комфортной работы можно их просто уменьшить:
:set shiftwidth=2
:set tabstop=2
" Если нужно, чтобы Tab заменялся пробелами, то:
:set expandtab
В init.lua это можно записать вот так:
-- ~/.config/nvim/init.lua
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.expandtab = true
Если я хочу всё то же самое, но чтобы ТОЛЬКО для .lua-файлов, то:
-- ~/.config/nvim/init.lua
vim.api.nvim_create_autocmd("FileType", {
pattern = "lua",
callback = function()
vim.opt_local.shiftwidth = 2
vim.opt_local.tabstop = 2
vim.opt_local.expandtab = true
end,
})
Мой конфиг с прозрачностью:
-- ~/.config/nvim/init.lua
-- UI / цвета
vim.cmd.colorscheme('habamax')
vim.api.nvim_set_hl(0, "Normal", { bg = "NONE" })
vim.api.nvim_set_hl(0, "EndOfBuffer", { bg = "NONE" })
vim.api.nvim_set_hl(0, "StatusLine", { bg = "NONE" })
Hello World (Vim)
:echo "Hello World"
:lua vim.notify("Hello World")
Hello World (Lua)
print("Выводим сообщение")
print("")
-- Или:
vim.notify("Выводим сообщение")
vim.notify("")
-- Или
vim.cmd('echo "Выводим сообщение!"')
vim.cmd('echo ""')
function pipka()
print("Это функция пипка")
print("")
end
pipka()
Создание пользовательской команды:
function pupsik()
print("PUPPSIIIiiiik")
end
-- Создаем команду :Pupsik
vim.api.nvim_create_user_command('Pupsik', pupsik, {})
И теперь функцию можно вызывать в nvim:
:Pupsik
Базовая подсветка:
-- ~/.config/nvim/init.lua
vim.opt.number = true
vim.cmd("syntax on")
-- Проверим, что файлы JavaScript правильно определяются
vim.api.nvim_create_autocmd({"BufRead", "BufNewFile"}, {
pattern = "*.js",
command = "set filetype=javascript"
})
print("Конфиг загружен")
Проверить, какая подсветка включена сейчас:
:set syntax?
-- syntax=javascript
Проверить Treesitter:
:checkhealth nvim-treesitter
У меня ругалось на то, что не установлен tree-sitter-cli! Я его установил:
sudo pacman -S tree-sitter-cli
# Или
npm install -g tree-sitter-cli
:lua vim.treesitter.<Tab>