警告
本文最后更新于 2023-10-14,文中内容可能已过时。
尝试使用 neovim
,可以重复利用 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
|
## 下载二进制
wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
tar -xvf nvim-linux64.tar.gz
## 添加到系统路径
sudo cp -r nvim-linux64 /usr/local/
sudo ln -sfn /usr/local/nvim-linux64/bin/nvim /usr/bin/nvim
## 查看版本
$ nvim --version
NVIM v0.9.4
Build type: Release
LuaJIT 2.1.1692716794
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/__w/neovim/neovim/build/nvim.AppDir/usr/share/nvim"
Run :checkhealth for more info
## 打开 nvim,执行 :checkhealth
Configuration
- WARNING Missing user config file: /home/william/.config/nvim/init.vim
- ADVICE:
- :help nvim-from-vim
Runtime
- OK $VIMRUNTIME: /usr/local/nvim-linux64/share/nvim/runtime
Performance
- OK Build type: Release
Remote Plugins
- OK Up to date
terminal
- key_backspace (kbs) terminfo entry: key_backspace=
- key_dc (kdch1) terminfo entry: key_dc=
- $TERM_PROGRAM="tmux"
|
配置
nvim 默认会读取初始化文件
- init.lua
- init.vim
1
2
3
|
## nvim 的配置文件在
mkdir -p ~/.config/nvim
cd ~/.config/nvim
|
配置选项
主要用到的就是 vim.g
、vim.opt
、vim.cmd
等
In Vim |
In Nvim |
Note |
let g:foo = bar |
vim.g.foo = bar |
|
set foo = bar |
vim.opt.foo = bar |
set foo = vim.opt.foo = true |
some_vimscript |
vim.cmd(some_vimscript) |
|
插件管理
lazy.nvim
ref: lazy-nvim插件管理器基础入门
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
|
## 添加 init.lua
vim ~/.config/nvim/init.lua
-- bootstrap lazy.nvim
-- ./lua/lazynvim-init.lua
require("lazynvim-init")
## 设置 lazynvim
vim ~/.config/nvim/lua/lazynvim-init.lua
-- 1. 准备lazy.nvim模块(存在性检测)
-- stdpath("data")
-- macOS/Linux: ~/.local/share/nvim
-- Windows: ~/AppData/Local/nvim-data
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", -- latest stable release
lazypath,
})
end
--
-- 2. 将 lazypath 设置为运行时路径
-- rtp(runtime path)
-- nvim进行路径搜索的时候,除已有的路径,还会从prepend的路径中查找
-- 否则,下面 require("lazy") 是找不到的
vim.opt.rtp:prepend(lazypath)
-- 3. 加载lazy.nvim模块
-- require("lazy").setup({})
-- 在 ~/.config/nvim/lua/plugins 安装插件
require("lazy").setup("plugins")
## 打开 nvim 验证 lazynvim
:Lazy
## 安装 plugin
mkdir -p ~/.config/nvim/lua/plugins
vim ~/.config/nvim/lua/plugins/plugin-lualine.lua
return {
{
'nvim-lualine/lualine.nvim',
config = function()
require('lualine').setup()
end
}
}
|
vim-plug
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
|
## 使用 vim-plug: https://github.com/junegunn/vim-plug
## 存放在 ~/.config/nvim,避免与 vim 冲突
curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
## 需要安装 pynvim
## python3 -m pip install --user --upgrade pynvim
## 安装相关的插件,位置在:~/.config/nvim/plugged
vim ~/.config/nvim/init.vim
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"如果vim插件管理器没有安装则自动安装
if empty(glob('~/.config/nvim/autoload/plug.vim'))
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
"" 设置vim可以保存文件修改历史
silent !mkdir -p ~/.config/nvim/tmp/backup
silent !mkdir -p ~/.config/nvim/tmp/undo
""silent !mkdir -p ~/.config/nvim/tmp/sessions
set backupdir=~/.config/nvim/tmp/backup,.
set directory=~/.config/nvim/tmp/backup,.
if has('persistent_undo')
set undofile
set undodir=~/.config/nvim/tmp/undo,.
endif
call plug#begin('~/.config/nvim/plugged')
Plug 'sainnhe/everforest'
call plug#end()
|
快捷键
主题配色
以 vimrc 作为基本
当然,我们也可以直接使用 .vimrc
作为配置
1
2
3
|
# CONFIG_PATH=$HOME/.config
# ln -s ~/.vim $CONFIG_PATH/nvim
# ln -s ~/.vimrc $CONFIG_PATH/nvim/init.vim
|
lsp
1
2
|
## nvim 'iostream' file not found
sudo apt install libstdc++-12-dev
|
python
1
2
3
4
5
6
|
/home/lfang/.config/nvim/lazy/mason/packages/python-lsp-server/venv/pyvenv.cfg
home = /home/lfang/anaconda3/bin
## true
include-system-site-packages = true
version = 3.9.12
|
Ref: