From Vim To Neovim [视频]

vim

Think more, type less. Aim for minimalism, fewer states, less mutability, and just enough code for the known, relevant parts of the problem.

最近一直忙着写公司业务代码(大家应该发现知乎可以上传和观看小视频啦^_^),很久没更新博客了。不过笔者最近从 vim 迁移到了 neovim,花了几个晚上的时间修改配置文件,现在已经可以全面在 neovim 下写 python 了,就简单介绍下 neovim 吧。以前使用 vim7.4 还是有一些比较X疼的地方的,比如复制粘贴问题,大文件卡顿,一些插件会导致 vim 被 freeze 等,切到 neovim 之后使用体验比以前好了很多,没白瞎我几个晚上修改配置(之前自定义了很多快捷键也安装了很多插件)。

之前使用过一段时间的 Pycharm,后来还是不太习惯,又切回了 vim,平常用的是 tmux + vim 工作流。一般我会开多个 tmux session,每个 session 里打开一个项目,多的时候会同时打开很多项目(甚至十来个代码仓库),每个 session 下会建立多个窗口,一个大窗口用 vim 编辑文件,其他的窗口会分开多个屏幕(tmux panel),一些用来跑测试,一些用来启动 server,一些用来执行 git 命令等。这种工作方式的好处就是可以在本地机器和开发机上实现一致的开发体验(以前团队有直接在服务器写代码的),并且可以大大减少对鼠标的使用,而且很省资源, 同时打开十几个项目也占不了多少内存,也方便在多项目中快速切换。


安装 neovim

官方文档比较详细了,无论你用什么平台都可以,笔者工作之余自己使用的是一台 14 年的低配 mac air(这应该也是我没法用 Pycharm 的一个原因),不过依旧可以在终端里用 vim 撸代码。

brew install neovim


懒人配置

在网上搜到一个强大到有点变态的 neovim 配置,用一个项目管理整个配置文件,笔者 clone
了一份新建个分之然后调教了一下,照着以前的配置改了下,用着比较顺手了(不过已经和原生的 vim 使用起来完全不一样了)。通过插件可以支持任何主流前后端编程语言,当前这个配置支持 python,go和前端 html,css,js 等。

https://github.com/PegasusWang/vim-config/tree/wnn

只需要把这个配置 clone 到 ~/.config/nvim 目录下就好。


tmux + vim workflow

在我的老 mac 上给大家录制了一个视频(献丑了),有啥好用的工具可以一起交流下。油管上搜 “vim tmux workflow”
能看到一些类似的视频。全程都是键盘操作,全部在 terminal 下完成。演示步骤大概如下:

  1. 从 github 上 clone tornado 项目,包含 demos
  2. 新建 tmux session 命名为 tornado
  3. 打开两个 window,其中一个 window 分屏,一个用来跑 server,执行 shell 命令等,一个用来编辑文件。(其实 neovim 支持在 vim 里起 terminal)
  4. 使用 nvim 修改 py 文件。插件 python-mode 集成了 autopep8, pylint, isort 等工具,帮助我们执行格式化、lint、导入包排序等功能。
  5. 在 tmux 中切换 panel 看效果