neovim初次尝试

Neovim初次尝试

又一个现代化的编辑器。

以前一直使用VIM,Space VIM 使用得也一直很习惯,前一段时间,系统更新了一固件,从Nvme固态引导的系统挂了,刚好Ubuntu 更新到了24.04 LTS,那还等什么,干脆直接重新Ubuntu 24.04 LTS好了。于是连带系统,软件,环境折腾了好几天。自己的博客,使用Hexo 生成,系统更新完了,还直接升级了Hexo,部署方式是调用Rsync插件实现,然后有一个问题出现了,原来自己登录云服务器使用SSH Key免密登录,更新完之后,Hexo 的Deploy插件,调用Rsync已经不能使用SSH Key登录了,必须使用用户名和密码,不是知道是自己没理解配置项,没有正确配置,还是Hexo Deploy插件为了安全性,必须要有登录验证的输入操作,现在我更新博客,还需要先改服务器的SSH配置,允许口令登录,同步完了再改回来,也是挺无奈的。还有原来使用Visual Studio Code来编辑Markdown,插件丰富,下载即用,很是方便。系统升级完了之后,就有又有一个问题,那就是输入法好像和Visual Studio Code合不来,英文输入法没问题,输入即响应,输入中文,我输入快一点,首字母就变成英文了,自己使用五笔,打个字还要等响应,就真的不好使了。所以,又换回了Space VIM,又觉得自己还折腾不够,又了解到了Neovim,所以就有了这次尝试。

安装Neovim

Neovim 官网的描述是这样的:

Neovim是在Vim(本身源自Stevie)传统中的重构,有时也是重写。它不是对Vim的重新编写,而是其延续和扩展。许多克隆和衍生品存在,有些非常聪明——但都不是Vim。Neovim是为那些想要Vim的好部分,并且更多的人而构建的。

同样,也不用自己折腾,有很多扩展插件,能够让它变成IDE一样的存在,就看你需要什么。贴一下官网。再贴一下插件库

怎么安装,官网文档上直接复制,粘贴命令就行。不过我这里,先择使用brew来安装,为什么使用brew来安装呢?以前只在Mac OS上使用过brew,还没注意,Linux上也行,想想也明白了,毕竟都是类Unix系统。

所以第一步,我们还需要安装brew。贴个官网,安装一步操作。

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

使用brew安装Neovim

1
brew install neovim

到这里,一个干净的Neovim,就安装好了,和VIM一样,作为一个强大的文本编辑器,可以直接用了。那离IDE还早呢,所以还有插件,有一个方便的方式,叫插件管理器,这里使用Lazynvim。贴一个官网

插件及配置

安装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
# vim ~/config/nvim/init.lua
require("config.lazy")
# vim ~/config/nvim/lazy.lua
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)

-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = true },
})

到这里lazy.nvim插件管理就已经安装好了。装好的界面就像IDE了。

lazynvim

lazynvimplugins

安装更新插件,安装更新使用插件,有管理器就非常方便了。遇到插件有依赖,直接有提示,brew直接安装提示对应的依赖,缺什么装什么。

除了Lazy.nvim,还有一个Mason,好像是为了解决LSP的问题。具体在哪个环节出现的,自己没有记录,还真忘记了。

另外一个和依赖相关的,看了一下,自己从头到尾,安装了这么多依赖。直接贴出来吧。

brew install fzf
brew install luarocks
brew install lua
brew install fdfind
brew install cargo
brew install ripgrep
brew install lazygit
brew install mason-lspconfig
brew install neocmake
brew install neocmakelsp
brew install cmake
brew install neocmake
brew install neocmakelsp
brew install meson
brew install rust
brew install rust-analyzer

看依赖名称,有搜索的,有语言环境的,有包管理理的,代码补全,目录树等等。做完这些已经可以使用Neovim来写C语言、Python代码了,语法高亮,代码补全,错误提示等等,已经和IDE没差了。

实现完了上面的,似乎,还没有回到正题,就是我实际是想用一个比较方便的Markdown编辑器而已,用来解决Visual Studio Code输入中文的问题。所以,这里,还得配置Neovim,来实现Markdown编辑。

这里,我使用了render-markdown.nvim,这里没有使用插件管理器来实现。安装也很简单,把配置文件放插件目录就行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
~/.config/nvim/lua/plugins$ tree
.
├── example.lua
└── render-markdown.lua

1 directory, 2 files

more render-markdown.lua
return {
{
'MeanderingProgrammer/render-markdown.nvim',
dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
---@module 'render-markdown'
---@type render.md.UserConfig
opts = {},
}
}

参照插件的安装文档即可。到这里,Markdown也可以了,毕竟插件是国外人开发的,使用英文没有问题,像我们中文输入的字符,都会提示拼写错误。还没开始写呢,字体下面波浪线,提示你这个是什么意思?看不懂中文。所以,想要用,还得再解决一个问题。那就是英文提示拼写,中文忽略就行。给一个配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
more ~/.config/nvim/lua/config/autocmds.lua
-- Autocmds are automatically loaded on the VeryLazy event
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
--
-- Add any additional autocmds here
-- with `vim.api.nvim_create_autocmd`
--
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")


vim.api.nvim_create_autocmd("FileType", {
pattern = { "markdown", "txt" },
callback = function()
vim.opt_local.spell = false
end,
})

好了,几天的折腾到此结束,几天看配置,解决依赖,插件管理,日志报错。虽然是初次使用,还是照着来,还是一步一步实现了自己的编辑需求。贴张Markdown编辑的图:

neovim-markdown


neovim初次尝试
https://ywmy.xyz/2025/01/13/neovim初次尝试/
作者
ian
发布于
2025年1月13日
许可协议