neovim是vim的进化版,比vim更强大,配置功能除了兼容Vimscript,还可以使用lua脚本(LuaJIT)进行配置。
可以从这里了解 neovim与vim的不同点
下面总结一些主要的不同点:

安装neovim

brew install neovim

配置neovim

与vim不同的是,neovim的配置默认位于路径$HOME/.config/nvim/下。

我是基于LazyVim来配置的,详细可参考文档

install other tools

  • lazygit : 一个图形化git,可提高工作效率。
  • for telescope.nvim
brew install lazygit
brew install ripgrep
brew install fd

config neovim

git clone git@github.com:chenjun305/nvim-config.git ~/.config/nvim

如果不是第一次配置nvim, 已经有~/.config/nvim/配置,需要先进行备份。

# required
mv ~/.config/nvim{,.bak}

# optional but recommended
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}

常用插件

lazy.nvim

一个优秀的插件管理器, 其他插件都是通过lazy.nvim进行管理的。

which-key.nvim

快捷键提示功能。

telescope.nvim

强大的查找搜索功能。

im-select.nvim

我们在使用neovim输入中文时,总是会遇到1个问题,在insert模式下,我们用中文输入法输入中文,当我们通过返回Normal模式时,由于输入法还是中文,必须手动切换到英文输入法才能使用vim的命令。 im-select插件就是为了解决这个问题,它可以在我们返回Normal模式时,自动将我们的输入法切换到英文,并且当再次进入insert模式时,又能自动帮我们从英文切换回上一次的输入法。从而大大提高编码效率。 要使用im-select插件,需要先在系统安装im-select命令,im-select插件的原理就是通过调用这个命令来实现功能的。

  • 安装im-select命令
    brew tap daipeihust/tap
    brew install im-select
    

    安装完后可在shell下通过which im-select进行验证,和在nvim中通过:!which im-select进行验证。

    $ which im-select                                                                                                ABRT ✘
    /usr/local/bin/im-select
    $ im-select                                                                                                           ✔
    com.apple.keylayout.ABC
    
  • 安装im-select.nvim插件 如果使用的是LazyVim时,创建~/.config/nvim/lua/plugins/im-select.lua文件,添加如下配置:
    return {
    {
      "keaising/im-select.nvim",
      opts = { default_command = "im-select" },
    },
    }
    

lazygit

terminal下lazygit命令进入,nvim下通过<Leader>gg自定义命令打开lazygit界面。

lazygit界面

lazygit非常强大,有非常多的命令可以使用,详细可参考Lazygit Keybindings

初学者可先掌握一些常用命令就可满足大部分使用场景的需要。

  • <space> 光标在文件窗口时,可按空格键stage或unstage文件,相当于git add -- <file>命令
  • c(小写) 命令相当于git commit
  • P(大写) 命令相当于git push
  • p(小写) 命令相当于git pull

keymaps

集成了 which-key.nvim , 有快捷键提示功能,按键后(比如空格)会提示可能的后续快捷键及相应的功能。