Neovim 0.5 真香啊

花了一周业余时间用lua写配置,基本完成了Doom的常用功能(我主要写go),虽然还有一些小瑕疵,但是用lua写配置是真香啊。

内置的LSP+nvim-compe在补全的手感上虽然比不上coc,但是已经够用了。

Telescope作为搜索框架也算舒服,用lua写个picker很简单。以前我总觉得vim查看某个函数或者变量的实现和文档很麻烦,现在用Telescope的help-tag也算是一定程度解决了这个问题。

Treesitter很有用,不仅仅是用作语法高亮,获得语法树信息之后能做的事情多了很多,比如在statusline上面显示光标所在代码的上下文结构信息,或者更改函数参数的位置等等。

Magit目前还没有很好的替代品,目前我采用的方案是在float window里直接用Lazygit,大部分时候很方便了。

大部分plugin都用纯lua实现的版本,少量还得用vim的(比如neoformat),生态还在发展中。

我大部分时候使用macOS,emacs 28 + nativecomp的启动速度在20秒,neovim+52个plugin一秒不到,这是我切换到neovim最大的原因。虽然很多人说emacs只要打开一次基本不关闭,但我还是挺在意启动速度。

Neovim最大的问题是没有个官方的GUI,我试遍了各个流行的GUI之后发现最稳定的还是neovim-qt,但是也有瑕疵。

3 个赞

大佬有点文件仓库吗?可以分享看看吗?好奇😯

macos的emacs启动这么慢,要20s?我的原生版本只要2s以内,操作系统 10.15.7,mba 2020 i5。emacs在linux和macos上的启动速度都是秒杀windows的。

neovim的mac版本,我用的是VimR。

nvim可以用lua进行配置,比vimscript的速度和可读性好多了。但是debug时不方便,可能我只会关了重新打开来加载配置。

1 个赞

这么下去vim要被neovim干翻了

1 个赞

你 Mac 上 Emacs 启动速度 20s 肯定是你配置有问题,我用 Purcell 的配置,总共安装了237个包,当然基本都是autoload的,启动才3 s, 在Windows下才8s

1 个赞

看图说话。20s肯定是哪里出问题了

2 个赞

楼主说了6条。

你们只看到了启动速度。

速度就那么重要吗?

4 个赞

启动速度和运行速度就是 那么重要

2 个赞

楼主说了是最大原因啊

人家写了这是最大的原因

现在写脚本、改配置都用 neovim 了,emacs 就写写文档日志,各有分工,不奢求一个工具就能解决所有场景下的问题。

1 个赞

@seagle0128 @aqua0210 @georgealbert

我使用的是https://github.com/jimeh/emacs-builds/releases 编译的emacs 28 + nativecomp.

要是我的emacs也能3秒启动的话就好了

歪一下楼: 在 macOS 下,我会用 textmate 写轻量的文档。不知道有没有朋友同样使用 textmate ?

你这是啥版本的emacs?

哈哈,同感同感,我也只会关了重开,尝试过配置dap,但还没能真正用上。后来发现 :luafile % 也挺方便。

我不用doom,我说一下我排查启动时间的流程

  1. 确定 emacs -q 和带配置的启动时间
time emacs -q -e kill-emacs
time emacs -e kill-emacs
  1. 使用 benchmark-init-el 确定详细信息,如 优化Emacs启动时间 - #12,来自 jacklisp
  2. 对不常用的包进行lazyload,如use-package的defer
  3. 在论坛里搜索启动时间和相关包,可以借鉴一下

PS:你使用的是doom,默认配置应该优化得可以,应该是你定制化的配置存在一点问题

2 个赞

学习了。

我用 init.vim 和vim-plug管理插件,没用packer,主要是coc.nvim用vim-plug和vimscript配置方便点。nvim的原生lsp感觉不如coc.nvim好用。

上个星期在macos的VimR折腾了一下纯lua配置,参考了 https://github.com/siduck76/NvChad

不过用的话,还是emacs。

2 个赞

感谢!我去研究下

问下在 Vim 下怎么按照我的要求输入,一直不明白是怎么操作的

const a = add(x,y)

我的需求

我在写代码的时候,输入小括号时自动完成右括号,所以在输入完参数 y 后,需要在最后输入一个分号

我的做法

目前只能首先回到 normal 模式,再通过 A 移动光标到最后,输入英文分号

我的疑问

在 Vim 里面高效的做法是怎样的呢?

在Neovim里面的话,可以写个简单的lua函数,检查当前行的末尾是否存在分号,没有就加上,然后回车。然后把这个函数绑定到某个按键上,比如 Ctrl+Enter就行了。