用了VS Code、IDEA等十几款编辑器后,我总结出优秀编辑器的特质

2020 年 10 月 03 日

用了VS Code、IDEA等十几款编辑器后,我总结出优秀编辑器的特质

本文最初发布于 phaazon.net 网站,经原作者授权由 InfoQ 中文站翻译并分享。

最近,我一直在尝试各种编辑器,花了不少时间配置和使用它们。主要有:

  • neovim:我日常的主力编辑器,几乎所有项目都会用它。
  • IntelliJIDEA:用来对付 Java 代码库。
  • VS Code:我主要用于 Rust、TOML 和 Markdown 中。
  • emacs:我很喜欢在 Haskell 和 Rust 代码库(以及 YAML/Markdown/TOML)上使用它。
  • DOOM Emacs:以前见同事用过它(UI 的“统一”感和顺滑体验给我留下深刻的印象),所以我尝试了一下。
  • atom:GitHub 的编辑推荐,主要用于 Rust、Haskell 等。

本文主要谈论个人对这些编辑器和该领域现状的看法(不喜勿喷)。我使用 vim,尤其是 neovim 已有十多年。首先,我会解释一下自己目前的工作流程、我对编辑器看重哪些方面。当然,文章仅是一家之言,不代表其他人的情况。

一款强大的编辑器应该具备哪些要素

键盘布局

我是法国人。我用的键盘布局可以快速输入法语并进行编程。其实,我用英语输入的次数更多,也许应该选择其他键盘布局,但现在用的这个体验很不错,所以一直用它。

这个键盘布局叫bépo。它要求我用所有手指打字,并且键盘上的每个键都被分配了一个指头。这样可以加强肌肉记忆并减轻手腕疼痛(当我在键盘上打字时手腕几乎不动)。打字准确和舒适的附加好处就是打字很快(我的打字速度为每分钟 120 到 130 个单词)。

不过,我认为编程时,速度并不重要,所以这里最重要的部分是舒适度:无论输入速度如何,手腕都不会动。

模态编辑器

模态编辑器之所以这么好用是有很多原因的。

首先,我很讨厌被迫使用鼠标来完成某些明明用键盘就能搞定的事。例如,我在自己的机器上运行应用程序只需用alt d,程序名称(自动完成会补足程序名称)并按回车。所有这些全都用键盘完成。这种方法是针对 firefox、kdenlive 等程序的。至于终端应用程序,我只需要在终端中输入并自动完成即可。

简言之,我认为用鼠标在编辑器中的光标周围移动太麻烦了,尤其是我们大多数时间都在写代码(即敲键盘),因此,用鼠标移动意味着要多次在键盘和鼠标之间切换。也许你不在乎,这对你来说很酷,但对我而言,这确实是很可怕的体验。

另外,非模态的现代编辑器通常使用箭头键来移动光标,但这些箭头键要么在你键盘很远的位置,要么就没有单独的按键,而要用组合键来代替。

这就是模态编辑器的第一个好处。它们更聪明地使用键盘来实现简单而常用的功能,例如四处移动。

第二个好处是它们还有非模态编辑器的模式(即正常模式),你会有一个完整的键盘 / 很多按键来绑定常用的许多鼠标动作。你可以将编辑器划分为几个缓冲区、在缓冲区间移动、跳转到段落开头、搜索和替换、将动作注册为宏并重播它们,等等。

所有这些甚至都不用挪动手腕。如果你习惯用鼠标,那么这里的学习曲线会很陡峭,但一旦你克服了心理障碍,我觉得再回去用鼠标就会非常不适应了。

我喜欢四处移动

程序员在编程时有几种风格:

  • 在模态编辑器中使用箭头按键或h j k l移动,看光标在文档中的移动方式就能看出来。通常他们会按住一个键,直到光标到达目标行,然后再按下另一个键,直到光标到达给目标列,最后再细调光标位置。
  • 使用鼠标,直接点击想要放置光标的位置。
  • 使用相对数字。这是第一种风格的增强版本:他们通常使用相对数字来定位要快速跳转的目标行,这样就不必按上 / 下方向键了。他们会查看代码行的行数,输入目标数字就跳转过去了。接着使用 vim 中的典型动作,例如$(转到行尾)、f(转到在 f 之后键入的下一个字符的第一个匹配项,例如f(将使光标移至下一个 (上)、%(转到匹配的定界符)或w(转到下一个单词的开头)/b(转到上一个单词的开头)等,在一个代码行上快速移动(这种方法也可以跨行工作)。

绝大多数程序员都属于这几种风格之一,但实际上,我自己是个异类。我使用h j k l和第三组中描述的 vim 的所有动作(我用的动作还要多很多),但这都取决于我需要移动的距离。如果我的光标位于一个单词上,并且我想移至与我的光标在同一行上非常接近的另一个单词的开头,那么如果相隔三个单词,我将只输入www(或者 3w)。如果距离较长,我会使用一个名为 [EasyMotion] 的工具。

Easymotion 确实是一个很棒的工具。它有几种模式,具体取决于你要执行的移动类型:

  • 按行:此模式允许你跳至当前(或所有打开的)缓冲区中的任何行。
  • 按单词:此模式允许你跳转到当前(或所有打开的)缓冲区中的任何“单词”。
  • 按字符:如果单词模式无法跳转到特殊的运算符或字符(因为无法识别为单词),则可以使用此模式跳转到当前缓冲区(或所有打开的缓冲区)中的任何字符。
  • 它还有其他一些模式,但是我从来没有真正为它们找到对应的用例。

我习惯的做法是将三种模式映射到<leader>l<leader>w><leader>c上。

在我的当前缓冲区中键入SPC l会发生:

键入任何高亮显示的字符将使我的光标跳至该字符。对于单词也是如此,命令是SPC w

对于字符模式,输入 SPC c 后我必须按另一个字符(我想跳到的字符)。假设我们要跳转到一个#(不是单词的一部分),则输入:SPC c #:

这种移动方式初看上去并不直观,但一旦习惯就离不开它了。

其他模态技巧

对模态编辑而言,以下是我希望编辑器具备的功能列表,当然不止这些:

  • C-iC-o:这些使我可以跳转到缓冲区中的某个文件 / 某个位置,然后返回到C-o之前我所在的位置,或者输入C-i再跳过去。
  • 宏和寄存器:我可以指定单个按键将内容粘贴到不同的寄存器(如剪贴板)中。例如,我可以使用"tyit寄存器中添加一些行("是动作触发,t是寄存器编号,yi是首尾字母,(是匹配值),然后用"tp剪切这部分内容。宏可以通过指定按键来实现更强大的编辑控制,q关键字是触发键(例如qa会将之后的按键动作注册到a宏上),然后使用@a重播该宏即可。
  • 所有基本的 vim 移动方法,例如d(删除)、y(复制)、c(更改),t(转到要搜索的字符之前的字符),(转到另一个定界符),等等。以及更复杂的文本操作,例如“让我们更改此函数参数列表中的内容,并用(定界”:ci(

总之,编辑代码时我们需要模态功能。

编辑器

下面就具体讲讲前面提到的那些编辑器。我会对它们发表自己的看法,根据我的编程习惯给出它们的优缺点评价。

neovim

我目前使用 neovim 的 TUI 版本,因为到目前为止,这带给我最稳定、最快、最简单的 neovim 体验。我尝试过多个 GUI 版本,但没有找到想要的东西——主要原因是它们几乎都使用 Web™技术,这对我来说是不可接受的。我应该详细说明一下最后一点的原因。

为什么不使用 Web 技术:

  • 在计算机上编辑内容与 Web 技术无关。其他许多事情都适合用 Web 技术,但在很多层面上,在编辑器中运行复杂的 JavaScript VM/CSS 引擎并不是什么好事情(性能是第一个麻烦)。
  • 大多数时候,基于 Web 技术的编辑器需要花费很多时间,甚至 VS Code 都是如此——我的日常编辑器是 neovim,它能在 23ms 内加载差不多 50 个已安装的软件包(你可以使用:profile进行分析以获得这个数值)。而 coc.nvim 大约需要 12ms。
  • 脚本。用 JavaScript 或 CoffeeScript 编写脚本对我来说很难。
  • npm 是有史以来写得最糟糕的软件之一。请不要再让我用它。

我的 neovim 设置

这里,我介绍用的几个插件。我认为大家应该了解这些知识,不要还是把 vim/neovim 当成是过时的编辑器。事实并非如此。

  • ryanoasis/vim-devicons

    添加许多 unicode 图标以便其他包使用,以提供更时尚、更性感的界面体验。

  • sainnhe/sonokai

    我正在使用的颜色方案。它与 DOOM Emacs 很像,只是对比度略低。

  • neovimhaskell/haskell-vim

    neovim 的 Haskell 语法支持。

  • rust-lang/rust.vim

    neovim 的 Rust 语法支持。

  • plasticboy/vim-markdown

    neovim 的 Markdown 支持。neovim 已经为 Markdown 提供了很好的默认支持,但是这个软件包有一些很酷的功能,例如折叠。因为我经常使用折叠,所以很喜欢用它。

  • mzlogin/vim-markdown-toc

    一个非常酷的软件包,提供了一种在 Markdown 缓冲区中创建目录的方法,并让 neovim 在编辑标头时自动更新 section。

  • tikhomirov/vim-glsl

    neovim 的 GLSL 语法支持。

  • cespare/vim-toml

    neovim 的 TOML 语法支持。

  • ElmCast/elm-vim

    neovim 的 Elm 语法支持。

  • idris-hackers/idris-vim

    neovim 的 idris 语法支持。

  • posva/vim-vue

    neovim 的 Vue.js 语法支持。

  • baskerville/vim-sxhkdrc

    neovim 的 sxhkd 支持。

  • norcalli/nvim-colorizer.lua

    一个超酷的扩展,可以自动更改包含十六进制值文本的背景颜色,例如#f8324F 或#42cf69。

  • airblade/vim-gitgutter

    我安装的最好的插件之一。它提供了在编辑 git 版本文件时在缓冲区中看到的标志(添加、修改、删除等):它能做的事情还有很多,甚至可以预览 hunk,在编辑器内部暂存或丢弃它们,对我来说太好用了。

  • tpope/vim-fugitive

    为 neovim 提供 git 中你喜欢的所有功能,包括 diff、解决合并冲突、编写提交消息等。但是我还不太明白这个插件在一般情况下如何处理 fixup 和 squashing 问题,因此,我仍然倾向于使用命令行。

  • rhysd/git-messenger.vim

    这是一个 blame-at-cursor 工具。其实,它也没那么有用,因为 fugitive 已经有了一个 git blame 窗口,能用 commit 注释每一个代码行。有时我会用这个,但也可能会放弃它。

  • tveskag/nvim-blame-line

    在代码行的右侧内联一个 git blame。很像 VS Code 中的默认 git 插件。

  • junegunn/fzf.vim

    如果你只想安装一个插件,那留下来的肯定是它。它有许多功能:打开文件、git 文件、缓冲区、rip-grepping、搜索历史记录、命令、颜色方案等等。顾名思义,它使用fzf作为后端,因此你会得到非常酷的模糊搜索体验(其他编辑器很少有这么棒的搜索——例如,你可以键入一些内容,然后放一个空格并再次输入,就能快速匹配结果了)。

  • machakann/vim-highlightedyank

    很有意思的包:它能高亮显示你拖动的线条 / 对象以获得更好的视觉反馈。neovim 默认竟然没有这个功能。

  • liuchengxu/vista.vim

    我经常使用这个包来获取符号树,但我现在不太满意它的输出,可能也会抛弃它。

  • neoclide/coc.nvim

    它是 neovim 目前最好的自动完成引擎。我也用过其他选项,例如 ale,但这个包是王牌。它为你提供了多种语言的 LSP 补全。它有一个集成的市场,可安装新的 LSP 服务器和集成,它甚至还支持一些完全不相关的东西(有点奇怪,我认为这些应该是独立的插件),例如 coc-explorer(它是 NERD Tree 的替代),coc-snippets 等。

  • tpope/vim 注释

    轻松注释 / 取消注释行,而无需自己插入注释符号。

  • liuchengxu/vim-which-key

    就像 emacs 的 which-key,但适用于 neovim。正确设置后,它将为你提供一个可行的键绑定的可视列表。我认为它没什么用(或许有人安装的插件带很多键绑定,就会喜欢它吧),但是它看起来很酷。

  • itchyny/lightline.vim

    看起来很酷的状态行。

  • SirVer/ultisnips

    snippet 支持。ultisnips 的代码片段引擎能力很强,例如通过 shell、viml、python 等进行插值。

  • honza/vim-snippets

    常用语言和文件格式的 snippet 集。

  • junegunn/vim-easy-align

    一个非常简洁的插件,只需点击几下即可轻松对齐文本 / 表格。

  • liuchengxu/vim-clap

    它有一个现代化、快速的用户界面,在其中统一所有可能的搜索 / 模糊查找器源。不幸的是这个插件在我这里还不够稳定,因此我还在继续使用 fzf。

  • easymotion/vim-easymotion

neovim 的优点

  • 它很快。真的是立即启动。无论我使用的是哪种终端(即使我当前使用的是 Alacritty),移动、滚动等操作都会很流畅。
  • neovim 的插件和效果确实很棒。我非常喜欢 vim-gitgutter;我也很喜欢着色器插件。目前为止,coc.nvim 一直很好用(大部分情况下)。EasyMotion 简直是我的情人。fzf 太快了,快如闪电。
  • neovim 的社区对他们的工作充满热情,新版本添加了许多非常酷的功能,我们很快将它们引入新的插件中,例如弹出 / 浮动窗口 / 用于 linter 注释的虚拟文本等。
  • 它是轻量级的:你的内存不至于不堪重负。
  • 我还没提过 vim/neovim 的杀手级功能:help页面。我认为没有其他软件可以提供如此出色的帮助页面。真的,请尝试一下。你想知道如何配置 coc.nvim 吗?只需键入:help coc-nvim即可。
  • 带有插件管理器(我个人使用 vim-plug,还有其他很多选项),它们能让你的生活变得更加轻松。

neovim 的缺点

  • 尽管我喜欢 TUI 的速度(到目前为止,我确实还没见过更快的编辑器),但 TUI 对我来说,还是很烂。例如,如果你将一个窗口分成两个缓冲区,则你想要调用的垂直“标记”“边缘”都是实际的 Unicode 字符。终端的工作机制可以忽略那些字符,但仍会给人很笨的感觉。如果你想要 minimap 或某些文本周围的细边框,或者想要稍微复杂一些的视觉反馈,基本上都是做不到的。
  • neovim 的 GUI……不符合我的期望。它们大多数都是基于 Web 技术的,因此对我来说不是很好的选项。其他基于 Qt 的客户端感觉有些过时了。也有人想要做些新的 GUI,但他们还没有准备就绪。
  • coc.nvim 有时会感觉很奇怪,容易出问题。例如在编辑 Java 时,尝试跳至符号的定义(或只是向上查找符号)时,它经常会超时,体验很差。
  • 在编辑器运行时更​​改我的颜色方案是在浪费时间,而且会造出来很多损坏的语法高亮模式 bug。真可惜!

IntelliJIDEA

这个编辑器,我只能简单谈一谈,因为我才开始在工作中使用它(社区版)。我用的是原始版本,几乎没有修改。我只用它编辑 Java。

IntelliJIDEA 的优点

它对 Java 的支持确实很完美。它能为你做很多事情,其中​​一些真的给我留下深刻印象:

  • 允许我在函数内选择代码块的重构机制,要求编辑器“将其移至专用函数中”。其实,所有编辑器都可以做到这一点,但令我印象深刻的是,IntelliJIDEA 能找出需要捕获的变量并将其作为函数的参数,然后在替换要移动的块时自动传递它们。真的很整洁。
  • 查找符号、查找实现的函数、继承的类、超类……速度都快如闪电,并且都可以很好地呈现给你,我喜欢。
  • 语法高亮很不错。我特别喜欢 var 声明以及将参数传递给函数时的内联类型说明。

IntelliJIDEA 的缺点

  • 我正在使用社区版,它仅支持 Java 和其他一些配置语言。你没有 profiler 这样的东西,将来要是能加进来就太好了!
  • 尽管编辑器的异步部分令人印象深刻,但有时它会时不时索引项目,如果你使用的是笔记本电脑,那就做好电脑全速运行的准备吧!风扇会发出地狱般的声音,机器会迅速变热。
  • 我尝试了 Vim 集成,但无法正确地与 bépo 键盘映射搭配使用。我无法重新映射某些运动和 / 或模式开关,结果只能遗憾地禁用它。
  • 没有 Vim 支持,即使编辑器有很多快捷键,你还是要用鼠标来执行一些非常基本的任务。

VS Code

这个编辑器是很重要的,因为它是微软的编辑工具。大家似乎都很喜欢 VS Code,我也能感同身受。它的 UI 流畅、快速——要知道这可是基于 Web 的编辑器。LSP 支持显然是很专业而完美的。它有很多社区插件、主题和集成。就算它是基于 Web 的,总的来说,我也一直很喜欢它。

VS Code 的优点

  • 编辑器 /UI 的流畅度。
  • 语言支持很专业,并且用它编辑代码感觉很可靠。
  • 数以百万计的插件。
  • 大型社区和今天的大多数人都在用它,所以我想如果你遇到什么麻烦,随便问一下应该就能得到答案。

VS Code 的缺点

  • 毕竟,它还是用 Web 技术编写的。在所有基于 Web 的编辑器中,它是最快的,但如果你习惯使用 vim/neovim,就很难满意它的速度了。
  • vim 集成不够好 / 无法正常工作(我尝试将 h 映射到 c,请记住我用的是 bépo 键盘布局)。总之就是没法用。

emacs 和 DOOM emacs

我最近一直在使用 emacs(原始版本),因为我看到一位同事在使用 DOOM emacs,就开始尝试了。这两款编辑器放在一起介绍,因为它们非常像。在我看来,emacs 和 DOOM emacs 的关系可以用一个词来概括:团结。我不知道他们是怎么做到的,但是所有插件互相之间都融合得很好。我使用 ivy 界面做自动完成和模糊搜索,一切都做得很好。UI 非常漂亮,主题很棒(我喜欢默认的深色主题 DOOM One),编辑器非常快——当然还是比 neovim 慢,尤其是在滚动时,但总比基于 Web 的编辑器快得多。

emacs/DOOM emacs 的优点

  • 一旦设置正确(更好的默认设置等),这个编辑器就会给人很现代化的感觉(就像你在 VS Code/atom 中体验的一样)。它很流畅且设计精良。
  • Evil 模式(Vim 模式)对我而言是最好用的(当然,除了 vim 和 neovim 本身)。它们涵盖了几乎所有内容,甚至还支持 EasyMotion!
  • 你可以使用 Lisp 编写 / 配置脚本,这真是太好了!Lisp 是一种老派的精英,它已经存在很长时间,并且仍然给人新潮的印象。我很喜欢这一点。
  • 如果你使用的是 DOOM emacs,那么就能免费获得许多小实惠。它的模块方法效果很好,并提供了一种非常新颖的方式来启用 / 禁用功能。社区有大量资源可以帮你学习使用 DOOM emacs,即使你不打算使用 emacs 或 DOOM emacs,我也强烈建议你看一看。例如,我就是通过这种方式发现了我现在在 neovim 中使用的 which-key。
  • LSP 集成非常好用。它会为你下载服务器,如果你打开的文件从来没有连接过服务器,它会礼貌地询问你是否想要这样做。
  • 总的来说,emacs 和 DOOM emacs 比 vim 或 neovim 等编辑器更具交互性,我认为这种方法更好用。
  • 它使用 gtk 作为 Linux 上的主后端。我觉得这一点很值得一提,因为它不是基于 Web 的!
  • Magit 是一个很棒的工具。
  • Org-mode 也确实很棒,虽然我觉得它对我来说太大了。
  • daemon 模式很厉害,我认为所有编辑器都应该有这种东西。它允许你启动一个 emacs 实例并将 emacsclient 连接到它,从而彻底避免了加载时间。非常厉害,非常有用!

emacs/DOOM emacs 的缺点

  • 浏览大量代码时会出现卡顿,有时让人感到很不爽,特别是当你习惯用 vim/neovim 的话。大多数时候,这应该没什么问题,但是请记住,在 emacs 中滚动一直是一个问题。
  • 尽管这甚至可以看作是一个优点,但我认为 emacs 的所有出色插件让它膨胀得太厉害了,这对我来说是个问题。例如,Org-mode 是一个很棒的软件,如果它是一个独立的应用程序就好了,能让更多的人受益。开始使用 emacs,意味着你的计算机要运行 emacs 以及 emacs 中的所有应用程序。它甚至有一个 IRC 插件和一个电子邮件阅读器插件!
  • 我不确定这是怎么回事,但是 LSP 服务器感觉……同步吗?首次打开文件时,LSP 服务器启动,你需要等待几秒钟才能进入文件。我真的不知道这是否是因为配置的原因,但总之感觉不爽。
  • emacs 的默认设置确实非常糟糕。而且为了让整个过程像 DOOM emacs 一样舒心,你需要花费大量时间阅读文档并调整配置。我很喜欢这样做,但到头来……为什么 emacs 不从一开始就设置好这些默认值呢?这是出于历史原因,然后现在没有人在乎吗?

atom

最后来谈 GitHub 的编辑器 atom。我记得我首次运行 atom 时的第一反应是:“这个编辑器真漂亮。”默认的颜色方案 One 是大家都熟悉的通用颜色方案。在许多不同的编辑器中都有这个方案的 fork。

对我来说,atom 看起来很像 VS Code,但是前者的 UI 比较漂亮——与 VS Code 相比,我更喜欢 atom 的 UI。它的 UI 流畅且非常干净。从 LSP 集成到 Markdown 预览和 Vim 模式,你都可以找到许多扩展 / 插件 / 主题。

atom 的优点

  • 对我来说,atom 的杀手级功能是它能告诉你,你正在按下的按键绑定了(或清除了)哪些命令。很容易调试键绑定问题,我希望有更多的编辑器有同样的体验。其他编辑器也有类似的功能,但不如键绑定的 echo 模式那么好用。
  • 它的主题非常酷,整体的打字体验 / 自动完成过程非常可靠且一致。
  • 有很多可玩的插件。

atom 的缺点

  • Vim 模式。它对我来说并不完整,因为它也不能很好地支持我的 bépo 键盘布局。更糟糕的是,他们在alt-gr上有一个怪异的错误(他们在配置中称其为altgraph),无法正确识别它。有时它可以工作,但我从不记得要解决此问题所必须采取的步骤,而且在大多数情况下,我花了很多时间只为这么一个非常基础的功能而已。
  • 太慢了,你能感觉到 Web 世界的恶意!
  • 有时,编辑器更新后插件会损坏,然后你就少了一个功能。我在使用其他基于 Web 的软件(例如 GNOME 桌面环境)时观察到这个问题,这让我越来越怀疑这种技术选择。

总结

当开始编程时,我记得见过有人谈论 IDE/ 编辑器之战。如今,由于我尝试了许多编辑器,因此可以说并不存在所谓的编辑器战争。所有编辑器都有自己的缺点,选择合适的编辑器往往取决于个人习惯和经验。我是键盘爱好者(我自己做键盘),而且我真的很喜欢打字——不一定是代码,因此 emacs 和 vim 在那时是很明显的选项(我实际上是从 emacs 开始编码的)。几年后,我开始使用 vim 和 neovim。一年前,我又开始尝试 emacs,想要看看它发生了什么变化。结果我发现它多出来这么多有趣的事情!

我喜欢测试编辑器,是因为每个编辑器都至少有一个同行没有的杀手级功能:

  • vim 和 neovim 具有模态编辑功能,并且速度很快。几十年来,它们一直是模态编辑的首选编辑器,并且所有运动、宏、命令和助记符在这两种编辑器中都是实现最好的。
  • 对我来说,IntelliJIDEA 有着最好的 Java 体验,并有令人印象深刻(非常有用!)的重构功能。它并不是提高你生产力的必要选项,但它会让你在使用 Java 代码库时感到轻松自在,我真的希望在我使用的编辑器中有这么一个插件!
  • VS Code 有最佳的 LSP 实现,并且它的社区是最大的。如果你喜欢基于 Web 的编辑器,那就不要浪费时间再寻觅了:它就是适合你的编辑器。
  • emacs 和 DOOM emacs 具有流畅、统一的界面,其中包含许多出色的插件和应用程序。你会非常中意 Org-mode、Magit 和其他许多插件!
  • atom 具有用于键绑定的 echo 模式,用于主题和语法高亮显示的默认值也很棒,并且是市面上最友好的编辑器之一。

在所有这些编辑器上花了几周时间后,我对 vim/neovim 有了一些新看法:我觉得并不一定就要用它们,尤其是我用上了 emacs/DOOM emacs 的 Evil 模式。在我看来,一个好的 Neovim 客户端可能是像 emacs 这样的 gtk 应用程序:流畅、统一、具有出色的默认设置和对 neovim 功能的全面支持,以及对 gtk 浮动窗口和弹出窗口的支持(因为它是 neovim 原生支持的,在 TUI 中感觉有点麻烦)。我们有了很多不错的插件,可用于 git(fugitive/vim-gitgutter)、自动完成和语法高亮显示(coc.nvim/vim-lsp/vim-treesitter)。我唯一缺少的是一个出色的 GUI,它可以利用我们在 TUI 中要做的“hacks”来提供弹窗、“气泡”之类的东西。一旦有了好用的 Neovim GUI,我想这就会是我最喜欢的编辑器了。

在那之前,我会一直坚持使用 neovim TUI,因为它与我想要的东西非常接近。我希望本文能对 vim/neovim 爱好者提供一些参考,帮助大家了解现代编辑器的方方面面。这里我说的是 Vim 爱好者,但不是所有人。

我们寻觅的东西都是不一样的,而这个美好的世界有这么多编辑器可供选择,这才是关键。

它们并不适合每个人,但每个人都有自己的最佳选项。

原文链接:

https://phaazon.net/blog/editors-in-2020

2020 年 10 月 03 日 09:00 6271
用户头像

发布了 439 篇内容, 共 164.1 次阅读, 收获喜欢 901 次。

关注

评论 2 条评论

发布
用户头像
这翻译的哪一年的文章? Idea 插件支持 vim 啊
2020 年 10 月 03 日 12:32
回复
这是最新的。作者是法国人,使用的版本可能不同。
2020 年 10 月 16 日 10:36
回复
没有更多评论了
发现更多内容

开源流数据公司 StreamNative 正式加入 CNCF,积极推动云原生策略发展

Apache Pulsar

云原生 pulsar Apache Pulsar 消息系统 消息中间件

防止APP窃取用户隐私问题,OPPO安全在行动

OPPO安全

App 安全 隐私保护 数据隐私 sdk

超级TV盒子,超清秒播,解锁全网VIP资源!

程序员生活志

资源

LeetCode题解:225. 用队列实现栈,一个队列, 压入 - O(n), 弹出 - O(1),JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

anyRTC - 模仿微信音视频通话功能

anyRTC开发者

WebRTC 语音 直播 RTC 安卓

架构师0期Week13作业

Nan Jiang

oeasy 教您玩转linux 之010208 满屏乱码 bb

o

你应该了解的MySQL锁分类

X先生

MySQL 数据库 sql 数据库优化

​程序员离职后收到原公司 2400 元,被告违反竞业协议赔 18 万

程序员生活志

程序员 职场

大专生拿到阿里offer,却担心背调不过,网友:985在你面前黯淡无光

程序员生活志

面试 职场 阿里

架构师训练营第十三周总结

邵帅

限量版Netty纯手打笔记,年薪80W架构师耗时1个月整理出

Java架构师迁哥

对PageRank的理解

2流程序员

字节小组长无意中得知整个部门的薪资,自己28K,手下却有35K,怎么办?

程序员生活志

字节跳动 职场 薪资

从零开始搭建完整的电影全栈系统(一)——数据库设计及爬虫编写

刘强西

爬虫 Scrapy

解Bug之路-Nginx 502 Bad Gateway

无毁的湖光

nginx Linux TCP

架构师训练营第十三周作业

邵帅

PageRank 算法

周冬辉

抗疫代码入国家博物馆, 程序员的巅峰时刻!

程序员生活志

程序员 程序员代码

如何在一台电脑上管理多Github账号

Matrix Chan

git GitHub 版本管理工具 开发日志

Redis单线程为什么能做到高性能和io多路复用它是个什么鬼

Java架构师迁哥

GitHub上14个屌炸天的Java进阶教程、面试真题项目,建议收藏!

Java成神之路

Java 编程 程序员 Spring Boot

Fettley全球共识共享智能合约资产计划 掀起行业追捧热潮

InfoQ_967a83c6d0d7

35岁以上的程序员们,后来都干什么去了?

华为云开发者社区

程序员 职业规划 架构师

全票通过!易观开源项目DolphinScheduler进入Apache孵化器

易观大数据

超详细:完整的推荐系统架构设计

博文视点Broadview

架构 算法 推荐系统

大数据

yuanhang

Centos 7 虚拟机

克隆虚拟机

yuanhang

干货来袭!20例JavaWeb项目开发精粹;(内含源码)

Java架构师迁哥

anyRTC小程序SDK 4.0上线

anyRTC开发者

小程序 WebRTC 语音 直播 RTC

如何在企业微信上搭建一款活动报名 App

Ceelog

go 企业微信

万亿规模下美团命名服务的演进与业务赋能

万亿规模下美团命名服务的演进与业务赋能

用了VS Code、IDEA等十几款编辑器后,我总结出优秀编辑器的特质-InfoQ