NeoVim配置

NeoVim配置

NeoVim是什么?

不百度,只说我的理解:是一个 个性化极强的, 上手难度极大的, 不太适配windows的 文本编辑器

虽然说是文本编辑器,但其具有非常活跃的社区去开发插件,于是其插件非常多,也非常强大

系统环境

Ubuntu 22.0.4

安装GCC和CMake

安装GCC

1
2
3
sudo apt update
sudo apt install build-essential
sudo apt-get install manpages-dev

测试

1
gcc --version

安装CMake

首先卸载掉默认的CMake版本

1
sudo apt remove --purge --auto-remove cmake

下载另一个库

1
2
3
sudo apt update && \
sudo apt install -y software-properties-common lsb-release && \
sudo apt clean all

然后获得Kitware的key

1
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null

将Kitware’s repository 加入到我们的库中

1
sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main"

开始下载

1
2
3
sudo apt update
sudo apt install kitware-archive-keyring
sudo rm /etc/apt/trusted.gpg.d/kitware.gpg

复制key

1
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4

下载CMake

1
2
sudo apt update
sudo apt install cmake

测试

1
cmake --version

下载一些必要的软件

1
sudo apt-get install ninja-build gettext libtool-bin cmake g++ pkg-config unzip curl

安装NeoVim

首先从github上下载代码

1
git clone https://github.com/neovim/neovim

然后再目录里跑CMake

1
cd neovim && make CMAKE_BUILD_TYPE=RelWithDebInfo

获得Stable版本

1
git checkout stable

安装

1
sudo make install

授权NeoVim

如果 nvim 命令不可用,需要去改权限

1
2
3
cd /usr/local/bin
sudo chmod u+x nvim

配置插件

配置文件在 ~/.config/nvim 里,但默认应该是没有这个文件夹

1
2
3
cd ~/.config
mkdir nvim
touch init.lua

我的目录是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
nvim
├── init.lua
├── lua
│   └── v9
│   ├── keymaps.lua
│   ├── lsp
│   │   ├── cmp.lua
│   │   ├── handlers.lua
│   │   └── init.lua
│   ├── plugin_config
│   │   ├── bufferline.lua
│   │   ├── gruvbox.lua
│   │   ├── lualine.lua
│   │   └── nvim-tree.lua
│   └── plugins.lua
└── plugin
└── packer_compiled.lua

keymaps和plugins

首先需要创建这两个文件

keymaps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
local set=vim.opt

vim.wo.number=true

set.backspace='2'
set.showcmd=true
set.laststatus=2
set.autowrite=true
set.autoread=true

set.tabstop=2
set.shiftwidth=2
set.shiftround=true
set.expandtab=true

init.lua 中:

1
require("v9.keymaps")

需要执行 :source % 来生效

之后在 plugins.lua 中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
local ensure_packer = function()
local fn = vim.fn
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
if fn.empty(fn.glob(install_path)) > 0 then
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
vim.cmd [[packadd packer.nvim]]
return true
end
return false
end

local packer_bootstrap = ensure_packer()

return require('packer').startup(function(use)

use 'wbthomason/packer.nvim'

use 'ellisonleao/gruvbox.nvim'
use 'nvim-tree/nvim-tree.lua'
use 'neovim/nvim-lspconfig'
use 'williamboman/mason.nvim'
use 'williamboman/mason-lspconfig.nvim'
use 'kosayoda/nvim-lightbulb'
use 'ray-x/lsp_signature.nvim'
use 'rmagatti/alternate-toggler'
use 'windwp/nvim-autopairs'
use 'mg979/vim-visual-multi'
use 'gcmt/wildfire.vim'
use 'tpope/vim-surround'

use{
'nvim-lualine/lualine.nvim',
requires = {
'kyazdani42/nvim-web-devicons',
opt = true
}
}

use 'akinsho/bufferline.nvim'

use {
'nvim-telescope/telescope.nvim',tag = '0.1.1',
requires ={{'nvim-lua/plenary.nvim'}}
}

use 'hrsh7th/cmp-nvim-lsp'
use 'hrsh7th/cmp-buffer'
use 'hrsh7th/cmp-path'
use 'hrsh7th/cmp-cmdline'
use 'hrsh7th/nvim-cmp'
use 'hrsh7th/cmp-nvim-lua'
use 'L3MON4D3/LuaSnip'
use 'saadparwaiz1/cmp_luasnip'
use 'onsails/lspkind-nvim'
use 'jose-elias-alvarez/null-ls.nvim'
use 'terrortylor/nvim-comment'

if packer_bootstrap then
require('packer').sync()
end
end)

这里面都是我安装的插件,想要改的,可以在进行修改

每次配置完插件都需要 :PackerSync 进行安装/升级

init.lua 中:

1
2
require("v9.keymaps")
require("v9.plugins")

nvim-tree

1
2
3
4
5
6
7
8
9
10
11
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

require("nvim-tree").setup({
view = {
adaptive_size = true,
signcolumn = "yes"
}
})

vim.keymap.set('n', '<c-b>', ':NvimTreeFindFileToggle<CR>')

lualine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'dracula',
},
sections = {
lualine_a = {
{
'filename',
path = 1,
}
}
}
}

gruvbox

1
2
vim.o.termguicolors = true
vim.cmd [[ colorscheme gruvbox ]]

buffline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
local status, bufferline = pcall(require, "bufferline")
if not status then
vim.notify("没有找到 bufferline")
return
end

bufferline.setup({
options = {
close_command = "bdelete! %d", -- 点击关闭按钮关闭
right_mouse_command = "bdelete! %d", -- 右键点击关闭
indicator = {
icon = '▎', -- 分割线
style = 'underline',
},
buffer_close_icon = '󰅖',
modified_icon = '●',
close_icon = '',
offsets = {
{
filetype = "NvimTree",
text = "File Explorer",
text_align = "left",
separator = true,
},
},
},
})

下载Nerd Font

很多图标和字符显示不出来,是因为没有正确的字体,所以需要下载Nerd Font

官网是: [Nerd Font官网](https://www.nerdfonts.com)

我这里用的是 JetBrains Mono Nerd Font (真的很喜欢Jetbrains的字体)

要是远程访问的话,需要配置SSH工具的字体

一套下来,基本你的界面就是这样的了

是不是超级好看!我真的好喜欢这个配色,让人很舒服

LSP配置

还没太弄明白,弄明白了再回来更新


NeoVim配置
http://jack-constantine.github.io/2023/11/25/NeoVim配置/
作者
JackConstantine
发布于
2023年11月25日
许可协议