以前为了在安卓小平板上敲代码,花了些力气去学习vim,感觉使用起来还是很不错的。然后慢慢就想着在windows上折腾一下插件还有neovim玩玩,于是就有了这篇文章。不过日常使用还是得上VScode。

AstroNvim介绍

AstroNvim是一个美观且功能丰富的neovim配置。自带了heirline 状态栏、Lazy 插件管理、Mason 包管理、Neo-tree 文件管理器插件、Cmp 代码补全插件、Gitsigns Git插件、Toggleterm 终端插件、Telescope 模糊查找、Treesitter语法高亮、null-lsNative LSP 语言服务协议插件。
仓库地址:https://github.com/AstroNvim/AstroNvim
官网:https://astronvim.com

WSL中安装AstroNvim

这一套方案中,使用WSL运行debian,在debian中编译neovim,最后安装AstroNvim。如果你的nvim版本高于0.8(截至文章发布日期),则不用编译。实际体验下来发现,在WSL中运行nvim会比较卡,不流畅,所以不推荐使用这个方案。不过这里的折腾方法还是很有借鉴意义的。如果你想用ubuntu,那么可以用add-apt-repository直接添加PPA,然后安装最新版的nvim,跳过编译步骤。

  1. 安装绿色版Debian。进入 wsl/install-manual 找到debian,下载 Debian GNU/Linux 的appxBundle文件。直接解压文件,发现里面有appx文件,找到系统架构对应的appx文件,如*_x64.appx,继续解压,得到debian,将其移动到一个固定的路径中。双击debian.exe即可打开系统,以后在win10中都可以直接通过wsl命令打开此处的debian了。
    参考:WSL(Ubuntu)绿色安装(CSDN)
  2. Win10中开启Clash,必须勾选allow LAN,在Port右边有一个控制台的图标,可以选择打开CMD/PowerShell/Terminal/Copy Commands Only,选最后一个可以导出export指令,让WSL中的debian用上代理。

    # Clash中导出的指令 记得勾选allow LAN
    export https_proxy=http://127.0.0.1:7890
    export http_proxy=http://127.0.0.1:7890
    export all_proxy=socks5://127.0.0.1:7890

    注:若不勾选allow LAN,那么在debian中就没法使用Clash的本地HTTP/socks代理。

  3. 配置环境,克隆neovim,然后编译

    git clone https://github.com/neovim/neovim.git
    sudo apt install cmake pkg-config automake libtool libtool-bin unzip gettext 
    sudo make
    sudo make install
  4. 安装、配置 AstroNvim。AstroNvim中部分插件会用到nodejs、npm、py3和venv,所以先安装了。

    git clone --depth 1 https://github.com/AstroNvim/AstroNvim ~/.config/nvim
    sudo apt install nodejs npm
    sudo apt install python3 python3-pip python3-venv
    sudo nvim
  5. Root用户和普通用户的nvim配置不互通,会出现只有一方装了AstroNvim,因为不同用户的配置文件路径不一致。那么可以软链接一下快速解决问题。

    ln -s /home/用户名/.config/nvim /root/.config

直接安装AstroNvim

  1. 打开Nvim的Release,我下载的是nvim-win64.zip,解压后设置其内bin文件夹到环境变量,方便直接在cmd中打开nvim。如果是下载msi版,应该会自动配置环境变量。
  2. 在cmd中执行nvim --version和nvim内部:echo $VIM,发现输出配置路径不一致。由于是刚解压打开nvim,默认是没有配置文件的,于是在nvim中执行:checkhealth,看到提示说配置路径不存在,并且会显示该配置的路径为%localappdata%/nvim
  3. 打开cmd,挂上proxy,克隆AstroNvim,再次打开nvim即可看到自动安装了。

    set http_proxy=http://127.0.0.1:7890 & set https_proxy=http://127.0.0.1:7890
    git clone --depth 1 https://github.com/AstroNvim/AstroNvim %localappdata%/nvim
    nvim
  4. 准备Wezterm,使用Wezterm打开nvim即可避免图标乱码。或者用其他终端,并且设置终端字体为Nerd font
  5. python默认环境。我日常用的python环境在conda里面,在打开nvim前需要激活环境。此外,通过:checkhealth发现找不到py3的解释器,同时也提示用let g:python3_host_prog=xxx来指定位置。打开%localappdata%/nvim,在init.lua最后添加:

    vim.g.python3_host_prog = 'C:/Users/07lib/.conda/envs/daily/python.exe'

    这里不能完全按照checkhealth中的提示来做,因为它给的是vimscript,而AstroNvim默认使用的是init.lua作为配置文件,用的是lua语言,所以在init.lua内修改配置时,需要用其他办法把vimscript翻译成lua,具体见:你需要知道的使用 lua 配置 neovim 的一切。注:不能再创建一个init.vim作为配置文件。

其他

挂着Clash的代理用pip通过HTTPS下载其他库时可能会连接不上服务器,不知道是什么情况,把控制台重开让流量别走代理就好了。

个人喜欢直接用指令:Mason打开面板来管理LSP、DAP、linters、formatters。日常写py脚本只需要安装pyright和python-lsp-server即可;另外不要再安装mypy,mypy的路径寻址方式似乎与其他不一样,会找不到一些库。

用指令:Lazy打开面板,管理其他neovim的插件。面板界面的顶部会有按键的提示,例如安装是shift+i,帮助是?

AstroNvim用插件实现了快捷键提示;善于按<leader>键,即空格,也会有提示。其他见:Default Mappings

如果安装过程发现有其他问题,可以执行:checkhealth启动自动。对于部分显示不完全的WARNING项(文字最后有省略号),可以按下l键看全。

在Windows下使用其他终端?参考:现代Neovim配置,你还可以使用Windows Terminal,然后下载Nerd Font,设置为终端的默认字体,来取代Wezterm。