neovim 入坑

警告
本文最后更新于 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 默认会读取初始化文件

  1. init.lua
  2. init.vim
1
2
3
## nvim 的配置文件在
mkdir -p ~/.config/nvim
cd ~/.config/nvim

配置选项

主要用到的就是 vim.gvim.optvim.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:

相关内容

william 支付宝支付宝
william 微信微信
0%