nvim

wget https://github.com/neovim/neovim/releases/download/v0.9.5/nvim.appimage
chmod +x nvim.appimage
sudo mv nvim.appimage /usr/local/bin/nvim
sudo ln -sf /usr/local/bin/nvim /usr/bin/nvim
nvim --version | head -1

or

$ pkg i neovim -y

$ nvim -v
NVIM v0.11.0
Build type: Release
LuaJIT 2.1.1731601260
Run "nvim -V1 -v" for more info

git clone --depth 1 https://github.com/wbthomason/packer.nvim \
  ~/.local/share/nvim/site/pack/packer/start/packer.nvim
nvim ~/.config/nvim/init.lua
vim.cmd [[packadd packer.nvim]]
require('packer').startup(function(use)                                        -- Packer 自身管理
  use 'wbthomason/packer.nvim'                                               
  -- HTML 相关插件                                                             use 'mattn/emmet-vim'             -- Emmet 快速编写 HTML
  use 'windwp/nvim-ts-autotag'      -- 自动补全 HTML 标签                      use 'alvan/vim-closetag'          -- 自动关闭 HTML 标签
  use 'AndrewRadev/tagalong.vim'    -- 修改标签时自动修改闭合标签              use 'othree/html5.vim'            -- HTML5 语法支持和缩进

  -- 可选:LSP 支持                                                            use 'neovim/nvim-lspconfig'       -- LSP 配置                                use 'williamboman/mason.nvim'     -- LSP 安装管理器
  use 'williamboman/mason-lspconfig.nvim'                                    
  -- 可选:自动补全
  use 'hrsh7th/nvim-cmp'            -- 补全引擎
  use 'hrsh7th/cmp-nvim-lsp'        -- LSP 补全源
  use 'hrsh7th/cmp-buffer'          -- 缓冲区补全源
  use 'hrsh7th/cmp-path'            -- 路径补全源
  use 'hrsh7th/cmp-cmdline'         -- 命令行补全源
end)
vim.g.mapleader = " "       -- 全局 leader 设为空格

-- Emmet 配置
vim.g.user_emmet_mode = 'n' -- 只启用普通模式的快捷键
--vim.g.user_emmet_leader_key = '<C-y>'
vim.g.user_emmet_expandabbr_key = '<Tab>'
vim.g.user_emmet_settings = {
  html = {
    indent_blockelement = 1
  }
}

-- 自动标签配置
require('nvim-ts-autotag').setup()

-- closetag 配置
vim.g.closetag_filetypes = 'html,xhtml,phtml,jsx,tsx'
vim.g.closetag_emptyTags_caseSensitive = 1


local lspconfig = require('lspconfig')
lspconfig.volar.setup({})
lspconfig.html.setup {
  capabilities = require('cmp_nvim_lsp').default_capabilities(),
  filetypes = { 'html', 'htmldjango' }
}
lspconfig.ts_ls.setup({})

local cmp = require('cmp')
cmp.setup {
  sources = {
    { name = 'nvim_lsp' },
    { name = 'buffer' },
    { name = 'path' },
  },
  mapping = {
    ['<CR>'] = cmp.mapping.confirm({ select = true }),
    ['<Down>'] = cmp.mapping.select_next_item(),
    ['<Up>'] = cmp.mapping.select_prev_item(),
    --['<Tab>'] = cmp.mapping.select_next_item(),
    --['<S-Tab>'] = cmp.mapping.select_prev_item(),
  }
}

-- 或者更简单的映射(仅显示可用的修复)
vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, { desc = '[C]ode [A]ction' })

vim.keymap.set('n', '<F2>', vim.lsp.buf.rename)         
vim.keymap.set('n', '<F3>', vim.lsp.buf.format)         
vim.keymap.set('n', 'gd', vim.lsp.buf.definition)       
vim.keymap.set('n', 'gr', vim.lsp.buf.references)       
vim.keymap.set('n', 'K', vim.lsp.buf.hover)             
vim.keymap.set('n', 'ge', vim.diagnostic.open_float)    
vim.keymap.set('n', 'gE', vim.diagnostic.setloclist)    
vim.keymap.set('n', 'en', vim.diagnostic.goto_next)     
vim.keymap.set('n', 'eb', vim.diagnostic.goto_prev)


vim.cmd([[
set exrc                                                
set secure                                              
syntax on
set ruler                                               
set ai                                                  
set wildignore+=.*/,*/node_modules/*,*/dist/*,*/build/*,*/logs/*                                                set nu rnu                                              
set ts=2                                                
set shiftwidth=1                                        
"nnoremap gr gT                                         
nnoremap fn :cn<CR>
nnoremap fb :cN<CR>                                     
nnoremap <C-s> :wa<CR>                                  
inoremap <C-s> <Esc>:wa<CR>                             
nnoremap <C-q> :q<CR>                                   
inoremap <C-q> <Esc>:q<CR>                              
nnoremap <silent> <C-n> :set number! relativenumber!<CR>
nnoremap <silent> <C-p> :set paste!<CR>                 
nnoremap <silent> <C-h> :set hlsearch!<CR>              
vnoremap <C-v> y:<C-u>vim /<C-r>"/g **/*
nnoremap <C-v> yiw:<C-u>vim /<C-r>"/g **/*              
vnoremap <C-f> y/<C-r>"<CR>
nnoremap <C-f> yiw/<C-r>"<CR>
vnoremap <C-g> y:%s/<C-r>"/<C-r>"/gc
nnoremap <C-g> yiw:%s/<C-r>"/<C-r>"/gc
]])

:PackerSync
sudo dnf install -y nodejs
npm install -g typescript typescript-language-server @volar/vue-language-server vscode-langservers-extracted
nvim +"LspRestart" +q
posted @ 2025-04-27 21:36  Ajanuw  阅读(41)  评论(0)    收藏  举报