NeoVim配置
NeoVim是什么?
不百度,只说我的理解:是一个 个性化极强的, 上手难度极大的, 不太适配windows的 文本编辑器
虽然说是文本编辑器,但其具有非常活跃的社区去开发插件,于是其插件非常多,也非常强大
系统环境
Ubuntu 22.0.4
安装GCC和CMake
安装GCC
sudo apt update
sudo apt install build-essential
sudo apt-get install manpages-dev
测试
gcc --version
安装CMake
首先卸载掉默认的CMake版本
sudo apt remove --purge --auto-remove cmake
下载另一个库
sudo apt update && \
sudo apt install -y software-properties-common lsb-release && \
sudo apt clean all
然后获得Kitware的key
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 加入到我们的库中
sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main"
开始下载
sudo apt update
sudo apt install kitware-archive-keyring
sudo rm /etc/apt/trusted.gpg.d/kitware.gpg
复制key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4
下载CMake
sudo apt update
sudo apt install cmake
测试
cmake --version
下载一些必要的软件
sudo apt-get install ninja-build gettext libtool-bin cmake g++ pkg-config unzip curl
安装NeoVim
首先从github上下载代码
git clone https://github.com/neovim/neovim
然后再目录里跑CMake
cd neovim && make CMAKE_BUILD_TYPE=RelWithDebInfo
获得Stable版本
git checkout stable
安装
sudo make install
授权NeoVim
如果 nvim
命令不可用,需要去改权限
cd /usr/local/bin
sudo chmod u+x nvim
配置插件
配置文件在 ~/.config/nvim
里,但默认应该是没有这个文件夹
cd ~/.config
mkdir nvim
touch init.lua
我的目录是这样的
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
中
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
中:
require("v9.keymaps")
需要执行 :source %
来生效
之后在 plugins.lua
中:
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
中:
require("v9.keymaps")
require("v9.plugins")
nvim-tree
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
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'dracula',
},
sections = {
lualine_a = {
{
'filename',
path = 1,
}
}
}
}
gruvbox
vim.o.termguicolors = true
vim.cmd [[ colorscheme gruvbox ]]
buffline
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配置
还没太弄明白,弄明白了再回来更新
| 文章借鉴:https://medium.com/nerd-for-tech/configuring-neovim-from-scratch-setting-up-ubuntu-3eb8135e5a71