---
# System prepended metadata

title: '[配置] neovim'
tags: ['#learn']

---

# [配置] neovim 
###### tags: `#learn`

> ## [[gituhb] 配置代碼](https://github.com/eggtoopain/Neovim-Configuration-Tutorial)

> [A Step-by-Step Guide to Configuring LSP in Neovim for Coding in Next.js (React), TypeScript, and TailWindCSS](https://levelup.gitconnected.com/a-step-by-step-guide-to-configuring-lsp-in-neovim-for-coding-in-next-js-a052f500da2) 

### [創建] nvim配置檔
1. [創建] mkdir -p ~/.config/nvim
2. [創建] touch init.lua
3. [創建] 以下檔案結構
    ![](https://i.imgur.com/dWGpOrj.png)

### [選項] options.lua
``` Lua
-- 變量
local opt=vim.opt

-- 行號
opt.relativenumber=true
opt.number=true

-- 縮進
opt.tabstop=4
opt.shiftwidth=4
opt.expandtab=true
opt.autoindent=true

-- 防止包裹
opt.wrap=false

-- 光標行
opt.cursorline=true

-- 啟用鼠標
opt.mouse:append("a")

-- 系統剪貼版
opt.clipboard:append("unnamedplus")

-- 默認新窗口右和下
opt.splitright=true
opt.splitbelow=true

-- 搜索不分大小寫
opt.ignorecase=true
opt.smartcase=true

-- 外觀
opt.termguicolors=true
opt.signcolumn="yes"
```

### [改鍵] keymaps.lua
``` Lua
-- 主鍵改為空格
vim.g.mapleader=" "

-- ---------- 視覺模式 ---------- 
-- 單行或多行移動
keymap.set("v", "j", ":m '>+1<CR>gv=gv")
keymap.set("v", "k", ":m '<-2<CR>gv=gv")

-- ---------- 正常模式 ----------
-- 取消高亮
keymap.set("n", "<leader>nh", ":nohl<CR>")

```

## [引入配置] init.lua
``` Lua
-- 引入 options.lua
require("core.options")
require("core.keymaps")
```

## [Error]
- [change mason-registry](https://github.com/williamboman/mason.nvim/discussions/1113)
``` lua
registries = {
    "lua:mason-registry.index",
    "github:mason-org/mason-registry@2023-03-27-cruel-jason",
},
```


nvim :MasonUpdate Failed to update registries: .../pack/packer/start/mason.nvim/lua/mason-core/log.lua:141: bad argument #2 to 'format' (string expected, got table)