🙆
nvimでinit.luaを編集する環境をまあまあ調べた
indent
とりあえず .editorconfig 置いた
editorconfig
root = true
[*]
indent_style = space
indent_size = 2
tab_width = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.lua]
quote_type = single
シンタックスハイライト
カラースキームを変更した
require('lazy').setup({
{
'folke/tokyonight.nvim',
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme("tokyonight")
end,
},
})
この時点で大体色が付いとるな。これ最低限編集できればいいってノリだとこれ以上は必要ないか。
formatter
StyLuaを使う
ここでは
で書いた通りnull-ls(none-ls)を設定していくinit.lua
~/.config/nvim/init.lua
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
'--branch=stable',
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require('lazy').setup({
{
'folke/tokyonight.nvim',
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme('tokyonight')
end,
},
{
'williamboman/mason.nvim',
dependencies = {
'WhoIsSethDaniel/mason-tool-installer.nvim',
'jayp0521/mason-null-ls.nvim',
},
config = function()
require('mason').setup({})
require('mason-tool-installer').setup({
ensure_installed = {
'stylua',
},
auto_update = true,
run_on_start = true,
})
-- mason-null-ls
require('mason-null-ls').setup({
ensure_installed = { 'stylua' },
automatic_installation = true,
})
end,
},
-- none-ls.nvim
{
'nvimtools/none-ls.nvim',
dependencies = { 'nvim-lua/plenary.nvim', 'williamboman/mason.nvim' },
config = function()
local null_ls = require('null-ls')
null_ls.setup({
sources = {
null_ls.builtins.formatting.stylua.with({
filetypes = { 'lua' },
}),
},
})
-- Auto format on save
vim.api.nvim_create_autocmd('BufWritePre', {
callback = function(args)
vim.lsp.buf.format({
bufnr = args.buf,
})
end,
})
end,
},
})
lsp
lua-language-server
を導入する。
{
'williamboman/mason.nvim',
dependencies = {
'WhoIsSethDaniel/mason-tool-installer.nvim',
'jayp0521/mason-null-ls.nvim',
},
config = function()
require('mason').setup({})
require('mason-tool-installer').setup({
ensure_installed = {
'stylua',
'lua-language-server', -- <---------------------------追加
},
auto_update = true,
run_on_start = true,
})
-- mason-null-ls
require('mason-null-ls').setup({
ensure_installed = { 'stylua' },
automatic_installation = true,
})
end,
},
lua-language-server: successfully installed
になったら成功。次の設定
neovim/nvim-lspconfig
-- lua-language-server configuration
{
'neovim/nvim-lspconfig',
config = function()
require('lspconfig').lua_ls.setup({})
end,
},
とかすると
エラーまみれになる
lazydev.nvim
-- lua-language-server configuration
{
'neovim/nvim-lspconfig',
dependencies = {
{
'folke/lazydev.nvim',
ft = 'lua', -- only load on lua files
opts = {
library = {
-- See the configuration section for more details
-- Load luvit types when the `vim.uv` word is found
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
},
},
},
},
config = function()
require('lspconfig').lua_ls.setup({})
end,
},
こんな感じでlazydevを依存に書いておくといいらしい、よく調べきれてない。
いずれにせよ、これでエラーはなくなった。
以下、ここまでinit.lua
init.lua
~/.config/nvim/init.lua
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
'--branch=stable',
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require('lazy').setup({
{
'folke/tokyonight.nvim',
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme('tokyonight')
end,
},
{
'williamboman/mason.nvim',
dependencies = {
'WhoIsSethDaniel/mason-tool-installer.nvim',
'jayp0521/mason-null-ls.nvim',
},
config = function()
require('mason').setup({})
require('mason-tool-installer').setup({
ensure_installed = {
'stylua',
'lua-language-server',
},
auto_update = true,
run_on_start = true,
})
-- mason-null-ls
require('mason-null-ls').setup({
ensure_installed = { 'stylua' },
automatic_installation = true,
})
end,
},
-- none-ls.nvim
{
'nvimtools/none-ls.nvim',
dependencies = { 'nvim-lua/plenary.nvim', 'williamboman/mason.nvim' },
config = function()
local null_ls = require('null-ls')
null_ls.setup({
sources = {
null_ls.builtins.formatting.stylua.with({
filetypes = { 'lua' },
}),
},
})
-- Auto format on save
vim.api.nvim_create_autocmd('BufWritePre', {
callback = function(args)
vim.lsp.buf.format({
bufnr = args.buf,
})
end,
})
end,
},
-- lua-language-server configuration
{
'neovim/nvim-lspconfig',
dependencies = {
{
'folke/lazydev.nvim',
ft = 'lua', -- only load on lua files
opts = {
library = {
-- See the configuration section for more details
-- Load luvit types when the `vim.uv` word is found
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
},
},
},
},
config = function()
require('lspconfig').lua_ls.setup({})
end,
},
})
lspのテスト
こんなのを適当に書いた。まあwarningが出とる。変数2度も宣言するなよみたいな。これは正しい。ここで「lazypath」を検索する。これは「lazypath」にカーソルをあわせて*
ただ、ここでやりたいのはlazypathをかたっぱしから検索することではなく、printしている参照先に移動できればよいとした場合、この時Ctrl + ]
とかCtrl + t
とかするとジャンプできる
また
:lua vim.lsp.buf.rename()
すると
変数の一括置換とか出来るっぽい。キーマップした方が明らかに良さそうだけど。まあここではluaの編集の本題では無いので、一応
telescope lazyでプラグイン一覧を見えるようにしといた
まあこのソースは後ほど
telescopeも含めてあれば何となく便利だろうと思う。
live grepでプラグインの場所を探知
Plugin
とか書いておけば便利なのかな...すごいローテクだが...
ソース
とり急ぎこれで十分かな...
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
'--branch=stable',
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require('lazy').setup({
-- Plugin: folke/tokyonight.nvim
{
'folke/tokyonight.nvim',
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme('tokyonight')
end,
},
-- Plugin: williamboman/mason.nvim
{
'williamboman/mason.nvim',
dependencies = {
'WhoIsSethDaniel/mason-tool-installer.nvim',
'jayp0521/mason-null-ls.nvim',
},
config = function()
require('mason').setup({})
require('mason-tool-installer').setup({
ensure_installed = {
'stylua',
'lua-language-server',
},
auto_update = true,
run_on_start = true,
})
-- mason-null-ls
require('mason-null-ls').setup({
ensure_installed = { 'stylua' },
automatic_installation = true,
})
end,
},
-- Plugin: none-ls.nvim
{
'nvimtools/none-ls.nvim',
dependencies = { 'nvim-lua/plenary.nvim', 'williamboman/mason.nvim' },
config = function()
local null_ls = require('null-ls')
null_ls.setup({
sources = {
null_ls.builtins.formatting.stylua.with({
filetypes = { 'lua' },
}),
},
})
-- Auto format on save
vim.api.nvim_create_autocmd('BufWritePre', {
callback = function(args)
vim.lsp.buf.format({
bufnr = args.buf,
})
end,
})
end,
},
-- Plugin: lua-language-server configuration
{
'neovim/nvim-lspconfig',
dependencies = {
{
'folke/lazydev.nvim',
ft = 'lua', -- only load on lua files
opts = {
library = {
-- See the configuration section for more details
-- Load luvit types when the `vim.uv` word is found
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
},
},
},
},
config = function()
require('lspconfig').lua_ls.setup({})
end,
},
-- Plugin: nvim-telescope/telescope.nvim
{
'nvim-telescope/telescope.nvim',
tag = '0.1.8',
dependencies = {
'nvim-lua/plenary.nvim',
},
keys = {
-- ファイル検索
{
'<leader>ff',
function()
require('telescope.builtin').find_files()
end,
desc = 'Telescope: ファイルを検索',
},
-- ライブ検索
{
'<leader>fg',
function()
require('telescope.builtin').live_grep()
end,
desc = 'Telescope: ライブ検索',
},
-- バッファ検索
{
'<leader>fb',
function()
require('telescope.builtin').buffers()
end,
desc = 'Telescope: バッファを検索',
},
-- ヘルプタグ検索
{
'<leader>fh',
function()
require('telescope.builtin').help_tags()
end,
desc = 'Telescope: ヘルプタグを検索',
},
-- カスタム文字列検索
{
'<leader>fs',
function()
require('telescope.builtin').grep_string({
search = vim.fn.input('Search > '),
})
end,
desc = 'Telescope: カスタム検索文字列で検索',
},
},
},
-- Plugin: telescope-lazy.nvim
{
'tsakirist/telescope-lazy.nvim',
dependencies = { 'nvim-telescope/telescope.nvim' },
config = function()
require('telescope').load_extension('lazy')
end,
},
})
Discussion