neovim 的轻度用户,最近想转用 emacs,原因如下,寻求各位建议。
1、lua 让我难受,动态类型语言,还不会调试。使用 neovim 也主要依赖于 astronvim 这种发行版,它自身已经进行了各种预配置,但使用这类编辑器的真正的需求就是追求定制化。要在 astronvim 的基础上进行定制,感觉需要看好多 lua 代码,很难受;如果不基于 astronvim 进行定制,而是自己配置,又感觉需要配置很多插件,光看看 astronvim 预配置的插件数量就头皮发麻,工作量太大。
emacs 是否能解决我的痛点,或者说 elisp 是一种怎样的语言?简单看过一点教程,看起来是很函数式,这是否不容易出错?是否方便调试?
2、被 zsh 惯坏的我,看着 powershell 就烦,主要是 powershell 缺少历史命令搜索功能,比如我 ls /some/path/to,我就是记不住这个路径,那么我就希望 shell 能给我补全,zsh 可以做到,powershell 貌似是做不到。
(补充说明一下,这里提到“历史命令搜索”不准确,powershell 也能搜索,但无法根据键入的前缀内容进行补全,比如我输入 ls
我就想从历史命令中找到前缀为 ls
的所有命令,但 powershell 会告诉我所有历史命令,这很难受)
那么 emacs 能否解决这个问题?充当一个跨平台的,功能完备的 shell ?
那完了, ELisp 也是. 不过 ELisp 的调试体验非常舒适! 常见的功能比如 debug-on-error
, debug-on-quit
, 还有 edebug 可以一个表达式一个表达式地步进, 每次查看一个表达式的值, 诸如此类
没仔细看你的需求, 不过毫无疑问 Emacs 是可以实现的, 最差也不过就是你自己写个 Lisp 函数.
neovim 轻度用户?那为什么定制要看底层代码?如果你觉得 astrovim 太重就换别的。
emacs 不是更复杂吗?doom emacs 和 spacemacs 比主流 neovim 分支都重。
powershll?和 shell 有什么关系?如果 powershell 要补全可以看看 PSReadline 之类的。
1 个赞
emacs更复杂,而且emacs不如neovim快
但是emacs可以做neovim做不到的事情,例如完整的笔记 org kode
浏览器 gui 邮件 等功能
而且emacs比neovim要复杂
看你个人取舍,emacs的入门曲线其实比neovim要曲折得多
尤其是用过neovim然后初次接触emacs会有更多的不适感(按键不用),但有evil(我自己不使用这个)
不能,emacs 好像也不适合作为 shell 的替代品。还是用 专业的终端软件吧,比如 wezterm, alacritty, kitty 等等。
可以尝试 eshell,是用 elisp 实现的 shell,跨平台且可定制性比较强。
但是我还是觉得现在流行的 shell 功能已经很完备,社区也很强大了,用 eshell 是体会不到这些便利的。用过一段时间 eshell,最后还是老老实实用 vterm + zsh 了。
1 个赞
其实我一直想吐槽这个 gui,如果非要用 gui,为什么不用 vscode ?我认为只有不愿意使用 gui 的情况下才会考虑 neovim 或 emacs。为什么不愿意使用 gui?因为不可定制,比如我就是要在调试时把各个窗口按照自己想要的方式摆放(或隐藏),gui 就不给留接口。
还有【完整的笔记 org】,很多人都说这个,但我个人记笔记都是使用 typora/obsidian,不知道 org 和 typora/obsidian 有什么差异?
【而且emacs不如neovim快】我用 spacemacs 默认配置,第一次打开 emacs,肯定要下载一些插件,但后续打开 emacs 总是会告诉我下载 4 个插件?是我网不好?这四个家伙下不下来?我开代理来着。还是 spacemacs 默认配置有问题啊?
进入 emacs 之后,随便编辑一点 C++ 代码,想要跳转到头文件中,无论是 gd
还是 ctrl+]
,都是直接卡死了……
vhqr
10
-
lua 不错了,好歹是现代语言。而且 neovim 的开箱即用已经做得很好了吧,
emacs 连配置到勉强能用都很麻烦,emacs 的社区配置可是大到连启动都要几十
秒,自己配置的工作量比 neovim 要大多了。
-
emacs 有内置的纯 elisp 实现的 eshell,和 emacs 的集成非常好,补全、
搜索、跳转、编辑的姿势非常多,缺点是纯文本终端不支持 tui 应用,不要求
tui 的话就是最好用的终端。
关于补充说明,emacs 的 minibuffer、eshell 和其它基于 comint 的
shell(sh、python 等)内置的历史命令搜索都是这个逻辑。 emacs 的搜索框
架(helm 或 ivy)都能实现类似 fzf 的效果。
我没用过spacemacs
当你问出非要用gui为什么不用vscode时就证明,你目前并不需要emacs,那就没必要真的去用emacs,emacs并不完美,仅仅是gui的定制性高(你说的那个调试需求emacs可以实现,emacs还能记住当前布局,然后在未来某个时刻恢复呢)
完整的笔记,我只是用不习惯typora和obsidian而已,差异不太了解,我没深入使用过这两个笔记软件
1 个赞
zsh 肯定好用啊,powershell 不好用。比如我敲了非常多命令,当我想要找一个历史命令的时候,zsh 可以通过输入部分前缀来缩小查找范围,但 powershell 只能通过上下键挨个历史记录翻。
而且大家都是熟悉 linux 命令行的,没有多少人专门学 powershell 脚本怎么写,搞不懂微软为什么不向 bash/zsh 脚本看齐,非得搞 DSL。
我甚至都想自己写一个简易 shell,把 linux 上的操作习惯搬到 windows 上。
我感觉 bash 还是能实现 zsh 的很多功能的(虽然扩展性稍逊于 zsh),如果一定要在 Windows 上,不妨试试 Git Bash?或者干脆安装 WSL,这样就能全套搬运 Linux 上的操作习惯了。
powershell 有插件可以像zsh-autosuggest一样显示补全,还可以集成fzf。你没仔细研究过吧,可以搜搜。
其实zsh的历史补全新版powershell可以用内置的PS-Readline做到,在配置文件加下面这个代码就行。
Set-PSReadLineOption -PredictionSource History
1 个赞
我喜欢emacs的最根本原因还是elisp, 动态,灵活,有什么想法随时随地调整,写起来比vimscript和lua爽很多,缺点就是生态比vim差多了,那就看你使用环境要求高不高了
1 个赞
我试了,需要更新 powershell,不过总归好使了,感谢。
由于历史原因,单从语言来说,elisp 要比 lua 混乱。但是,作为编辑器配置语言,它比 lua 要好。主要原因是有一系列的工具来帮助你 debug,以及不修改别人的代码,也可以覆盖修改其行为。所以我觉得 elisp 可以解决你的痛点。
第二个问题,能也不能。
首先说 eshell,它确实可以作为一个跨平台的完备的 shell,但是,你想要得心应手且有跨平台一致行为,需要投入很多很多时间精力在这个上面。所以它没办法在短期内决你的问题。
但是,我们更倾向于直接在 emacs 里做,而不是开一个终端跑原始的 shell 命令。比如你想要列出最近访问的目录/文件,有很多方式列出并搜索历史记录。绝大多数日常操作你都不需要直接和 shell 打交道。所以 emacs 是可以作为一个跨平台工具来覆盖 shell 的功能,只不过是用不同的方式。