vim - 与 GUI 文本编辑器相比,Vim/Emacs 提供了哪些具体的生产力提升?

标签 vim emacs text-editor

这并不是一个巨魔或火焰诱饵或类似的东西。我一直在使用Vim作为我几个月来选择的控制台编辑器(用于在终端中编辑配置文件),但我认为我无法忍受我日常编写 Web 应用程序的工作,我用一个GUI 文本编辑器(哪一个并不重要)。

我觉得我的 GUI 文本编辑器可以完成我工作所需的一切。它具有不错的搜索/替换功能,并且可以自动完成两者的历史记录。它具有语法突出显示、行编号、选项卡式界面、轻松复制和粘贴等功能。我当前的编辑器唯一缺少的是正则表达式匹配,但是有很多 GUI 文本编辑器可以执行正则表达式搜索/替换。

鉴于我刚才所说的,除了安装在每台计算机上之外,Vim(甚至 Emacs)相对于 GUI 文本编辑器还有哪些生产力优势。我希望特定任务在 Vim/Emacs 上更好/更快,或者现有 GUI 文本编辑器无法完成。

最佳答案

对于 Vim:

  • 与大多数编辑器相比,Vim 与其他工具(shell 命令、脚本、编译器、版本控制系统、ctag 等)的集成更好。即使是像 :.! 这样简单的东西,将命令的输出通过管道传输到缓冲区,在大多数 GUI 编辑器中也找不到。

  • 选项卡式界面不如 Vim/Emacs 提供的“窗口”界面那么好。您可以同时并排查看两个或多个文件。您在屏幕上看到的越多,您就越能腾出时间来思考问题,而不是在心里记下变量名和函数签名。

  • 不要低估 Vim 正则表达式的威力。有很多 Vim 特定的扩展来匹配特定的列、标记、光标位置、某些类别的字符(关键字、标识符)等。

  • 集成的 diffgrep(独立于平台,因此您无需在每次更换计算机时下载和学习新工具)。

  • 视觉 block 模式(用于编辑列)是许多编辑器所缺乏的,但我不能没有它。我使用此功能让工作中的人们感到震惊和敬畏,只需按几个按键即可进行一些编辑,否则有人会花十分钟手动完成。

  • 多个复制/粘贴寄存器。当你只有一个时,你最终会经历奇怪的扭曲以避免破坏剪贴板。你不应该这样做。

  • Vim 的撤消/重做系统是无与伦比的。输入一些内容,撤消,输入其他内容,您仍然可以返回您输入的第一个内容,因为 Vim 使用撤消树而不是堆栈。在几乎所有其他程序中,您输入的第一条内容的历史记录都会在这种情况下丢失。

  • 在 Vim 中移动、复制、粘贴和删除文本的速度非常快。这些命令很简单,只需按一次按键即可组合。将您小心、费力的鼠标突出显示和 Ctrl-X 的所有次数加起来,然后将它们全部替换为 da( (删除一组匹配的括号及其中的所有内容)。这样可以节省更多时间比你想象的还要多

  • 小事情,例如 * 搜索光标下的单词,或 . 重复命令,或 % 在左括号和右括号之间跳动。太多了,无法一一列出。

  • 内置脚本语言和强大的键映射和宏功能,因此编辑器可以按照您需要的任何方式进行扩展。大量脚本已编写并可下载。

如果你仔细观察,你会发现即使其他编辑器也有的功能,Vim 往往做得更好。所有编辑器都有语法高亮显示,但 Vim 几乎为所有文件格式提供了语法文件,通常带有大量配置选项,而且编写自己的语法文件非常简单。许多编辑器都可以处理不同的文件编码,但 Vim 为您提供了非常具体且万无一失的方法来设置文件编码并在它们之间进行转换。 Vim 给我留下深刻印象的第一件事是,与我当时遇到问题的其他编辑器相比,它如何完美地处理制表符/空格缩进选项和 Unix/DOS 换行符。

其中许多要点同样适用于 Emacs(以不同但通常同样强大的方式)。

关于vim - 与 GUI 文本编辑器相比,Vim/Emacs 提供了哪些具体的生产力提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088387/

相关文章:

visual-studio - Visual Studio 2015 : Lines in text editor

vim - 检查 Vim 中当前是否有来自命令调用的函数的事件视觉选择

c++ - 在 QtCreator 或 vim 中使用具有模式的所有常量

emacs save-excursion不能恢复点吗?

emacs - 合并组织模式表中的单元格

react-native - 有什么好的 React-Native 文本编辑库?

Vim 快速修复和远程编译

vim - 如何让 vim 使用从 1 而不是 0 开始计数的相对行号

emacs - 如何移动CEDET自动生成的ede-projects.el和srecode-map.el?

javascript - 在 onclick 数据上将数据插入 opencart 编辑器