【问题标题】:What specific productivity gains do Vim/Emacs provide over GUI text editors?与 GUI 文本编辑器相比,Vim/Emacs 提供了哪些特定的生产力提升?
【发布时间】:2010-11-08 11:19:42
【问题描述】:

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

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

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

【问题讨论】:

  • 我不记得我的任何 Windows 机器上都安装了 vim...
  • @Greg:它不会被动安装。你出去自己做。要么你不是一个真正的软件开发者,要么你已经做了很多事情,以至于你现在正在睡梦中安装vim。 :-)
  • 这应该被标记为社区 Wiki 问题,因为它是主观的。
  • @Yooder:为什么人们总是抱怨社区 wiki 问题?我没有找到任何管理社区 wiki 的规则。

标签: vim emacs text-editor


【解决方案1】:

这并不完全是一项特定的任务,但对于那些可能患有 RSI 的人来说,在 vim 中你的手永远不会离开键盘这一事实几乎是无价的。实际上,我在工作时最终在鼠标上左撇子,因为它让我的手更少地伸手去拿鼠标(我家的键盘没有数字键盘,所以我可以把它放在右边)。

另一个小好处是,IIRC,最初的 vi 旨在通过非常慢的远程连接加快编辑文件的速度。当然,今天这种情况几乎没有发生,但如果您的连接速度确实很慢,那么祝您运行 gui 文本编辑器并让它具有响应性。

【讨论】:

  • 如果您的连接速度确实很慢,我建议您使用 Emacs 和 Tramp。
  • 通过 sftp 编辑更改,保存时同步。
  • @Roman:使用 Emacs 和 Tramp 基本上(或多或少)无需任何额外的努力完全——最多您必须输入一次或两次密码。之后,编辑远程文件就像编辑本地文件一样,保存会将更改自动发送到远程计算机。
【解决方案2】:

我为微型程序使用轻量级 emacs 克隆所获得的“生产力增益”是它像涂了油的闪电一样启动。在 Visual Studio 完成加载“沙盒”解决方案之前,我通常可以在 C# 中编写一个快速测试程序。

当然,我可以让 Visual Studio 保持打开状态(或者 另一个 VS 打开,如果我当时正在使用它),但如果我让它闲置一段时间,它就会被换掉同时等。

对于任何重要规模的东西——或者如果我不知道我正在使用的 API——IDE 是前进的方向,IMO。

【讨论】:

  • 以守护模式运行emacs,“启动时间”很简单。
【解决方案3】:

(vim 是我的毒药;我确信 emacs 提供了类似的收益)

最大的收获:无需触摸鼠标。

对我来说,最方便的方法是通过几次击键向前跳到(或之前)一个特定的字母或字母组合,或者向后跳。以相同的条件向前跳转两次或十次,只需在其前面加上一个数字即可。

如果您必须重复编辑,请向前跳到该位置(2-3 次击键),然后点击“。”重复上一次编辑。如果搜索条件相同,则向前(或向后)跳转更容易 - 一次按键。

基本上,只需很短的准备时间,您就可以学习十到二十个键盘快捷键,这意味着您无需不断移动手来抓住鼠标。如果您必须一直抓着鼠标,那么您的编辑动作/命令数量是您的三到四倍。

几天后,当你在 GUI 编辑器中时,你会发现每次你必须伸手去拿鼠标(或点击 <Down> 15 次)时,你都会变得脾气暴躁。

【讨论】:

  • 应该注意的是,如果您使用的是 gVim(或者如果您安装了 gpm 并且在终端中只使用普通的 vim),您可以根据需要实际使用鼠标。在某些情况下,使用鼠标会派上用场。
  • 我的 .vimrc 中有“set mouse=a”,以防万一我确实需要滑动一堆视觉文件 ;)
  • 是的,鼠标可以节省选择文本区域或将光标移动到大量文本中的特定位置的时间。否则就是浪费。
  • 从它的声音来看,我可以在其他编辑器中使用 Ctrl+Left 或 Ctrl+Right 执行您描述的操作。我还不断听到您可以执行“d5w”之类的操作来删除 5 个单词……但是 Ctrl+Delete 执行此操作更快。
  • Ctrl-Right 只是向前移动一个单词。你必须做 5 次才能前进五个字。在 vim 中,您可以输入 5w 前进 5 个单词 :) 或 9w 前进 9 个单词。或 ) 进入下一个句子的开头,或 } 进入下一段。有很多小的一键或两键快捷键可以在各种巧妙的方向上移动。如果您想删除直到您刚刚移动到的所有内容,您只需在移动命令前加上 d。所以删除三个句子,d3) 就是你所需要的:)
【解决方案4】:

我想说最大的优势之一是 vim 编辑器的可扩展性。如果我想在 CVS 上工作,我可以使用 CVSMenu 插件并将其添加到我的编辑器中以获得该功能。

语法高亮、特定文件的行为等也是如此。各种事情都可以在 vim 中定制。

不确定您是否可以在 GUI 类型编辑器中轻松做到这一点。

【讨论】:

    【解决方案5】:

    我认为专用文本编辑器的真正强大功能之一是宏编辑。重复对很多程序员来说是痛苦的,而编写适当的宏可能是一种娱乐性的边缘。如果您不是通过键盘完成所有操作,那么创建宏将需要一组额外的命令,而不是使用您已经在使用的命令。

    【讨论】:

    • 可定制性是几乎所有 GUI 编辑器都缺少的功能。您可以使用第 3 方宏扩展实用程序(AutoKey,等等)来帮助解决其中的一些问题,但将其内置到编辑器中很方便。
    • 哦,记录一下。我使用 Microsoft 产品,使用 VimEmu for Visual Studio 真是天赐之物。不过还是喜欢回到我的终端和 Vim :)
    • ViEmu 绝对是天赐之物。我想说的是,没有它,Visual Studio 绝对无法使用。 :)
    • Windows 上的文本板有这个功能,而且非常简单:点击记录,执行宏,然后保存。您还可以为其分配快捷方式。不幸的是,我还没有在 Linux 上找到对应的(TP 可以在 Wine 上运行,但看起来很丑,并且缺少一些 Linux 功能)。
    • @DisgruntledGoat - 如果您可以将 ctrl-X (“命中记录”和 ctrl-X )视为“保存”,那么您现在已经在 Linux、Windows、Unix 上找到了等价物,以及 Emacs 已移植到的所有其他平台。
    【解决方案6】:

    我在 windows 上使用 gvim,所以从技术上讲,它是一个 GUI 文本编辑器,但它是 vim..

    为了提高生产力,我发现:

    1. 我从来不用鼠标,因此我的速度更快。
    2. 使用 vim 键绑定与鼠标移动相比,搜索、替换、复制/粘贴等都更快(一旦克服了学习曲线)
    3. 如前面的 cmets 所述,RSI 显着降低。自从我搬到 vim 后,我的手腕一直感谢我。
    4. 轻巧快速

    【讨论】:

      【解决方案7】:

      远程桌面仅快速显示本机 Windows 应用程序。我们曾尝试使用 Eclipse 在 unix 下进行开发。你知道吗?这甚至是不可能的。

      第二个原因是我们可以扩展我们的 Vims 和 Emacs,以一种特殊的方式从数据库浏览中完成所有项目特定的任务,以突出显示和自动完成我们自己的元语言。

      【讨论】:

        【解决方案8】:

        真正喜欢 vim 的一件事是“中继器”命令。基本上,通过在命令模式下按.,它会重复您的上一个操作。这只是“程序员文本编辑器”通常没有的非常酷的功能的一个示例。

        【讨论】:

        • 哦,是的!这是最甜蜜的命令之一!我不能没有代码:-)
        【解决方案9】:

        对我来说,最大的生产力是

        • 我几乎可以通过键盘完成所有操作。
        • 强大的宏。
        • 在我使用 9 个操作系统的 20 年职业生涯中,基本的键盘绑定没有改变。我几乎可以在任何系统上运行,并且已经熟悉编辑器。
        • 几乎所有您可能想要在文本编辑器中使用的功能都已添加。

        【讨论】:

          【解决方案10】:

          对于 Vim:

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

          • 选项卡式界面不如 Vim/Emacs 提供的“窗口式”界面好。您可以同时并排查看两个或多个文件。你在屏幕上看到的越多,你就越能解放思想去思考你的问题,而不是对变量名和函数签名进行心理簿记。

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

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

          • 视觉块模式(编辑列)是许多编辑器所缺乏的,但我不能没有。我用这个让工作中的人们感到震惊和敬畏,在几个按键中进行一些编辑,否则有人会花费 10 分钟手动完成。

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

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

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

          • 小东西,比如* 搜索光标下的单词,. 重复一个命令,或者% 在开始和结束括号之间跳动。太多了,无法一一列举。

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

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

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

          【讨论】:

          • 这是一个很好的例子,展示了一些可以提高 vim 生产力的具体事物。
          • 你忘了提到惊人的跨平台支持。甚至可以在命令行中使用与在窗口环境中使用的相同的编辑器。
          • 选项卡式与窗口式视图的观点有点过时了。我用过的大多数 gui 编辑器都允许窗口布局。
          • Emacs 中的 Org-Mode 极大地提高了生产力。
          【解决方案11】:

          您知道,对于 vi,我认为它归结为具有插入和命令模式。虽然这看起来像是回到你不能依赖光标或特殊键的时代,但它的真正含义是,许多强大的运动和文本操作命令是最少的击键次数。高效的编码不是关于批量文本输入(“现代”编辑器中的默认设置),而是大量文本,然后是相当大的小调整,甚至更长时间的浏览。

          这对于我个人在高延迟校园网络上使用 vi 而言尤为突出。您可以在响应之前轻松获得 10 或 15 个字符。使用 vi,我可以轻松地预测这些命令将离开我的位置,并且能够以接近正常的速度工作。这种扭曲的专业知识在正常情况下是一种持续的好处 - 更少的视觉脑力专门用于持续的图形反馈。

          常见的 * 和 # 词搜索加速器非常适合翻阅代码。用于匹配括号的 % 非常有用。当然,与 ctl-] 相比看起来几乎没有多少,但加起来有一半的击键次数。

          就我个人而言,我使用的是 winvi,它添加了一些重要的东西,我相信 vim 也有。快速跳转到十六进制模式会破解很多“到底发生了什么”文本问题。而对行尾的完全灵活处理是天赐之物,它已成为文本编辑器的预期功能。最后,无论内容是什么,它都可以打开任何文件。这相当于一流的黑客技术。

          在 Unix 下,您可以快速捕获程序输出,甚至可以通过外部命令过滤文件的各个部分。一个非常强大但我认为未被充分利用的功能。

          【讨论】:

            【解决方案12】:

            我一直想知道为什么很少有人对 Vim 着迷。观看 Vim 高级用户的视频:

            https://www.youtube.com/watch?v=FcpQ7koECgk

            如果您当前的编辑器可以做他正在做的事情,则无需切换! :)

            另外,请阅读此http://www.viemu.com/a-why-vi-vim.html

            看完视频和那篇文章后,我别无选择,只好开始学习 VIM。自从我切换到 VIM 已经快一年了,我无法想象使用其他任何东西。

            【讨论】:

            • 哇,这些视频真的很棒!感谢您发布它们!
            • 非常有趣的视频,很遗憾我要花这么长时间才能在实践中记住它们。 :)
            • 第一个视频的作者需要学习可视块模式——它比更改底部文本块的宏更快。
            【解决方案13】:

            我经常使用 Vim。但它并不能代替我的UltraEdit。既然列出了很多积极的一面,我想我会反其道而行之,列出一些 Vim 的烦恼。

            • 弱 FTP 处理。我对很多站点进行“排序”,无法轻松浏览和编辑远程 FTP 服务器上的文件对我来说是一个很大的缺陷。 NWRead 不够不够好。
            • 从似乎困扰 Linux 的一般终端问题继承而来的控制台怪异。我通常使用PuTTY 连接到我的 Linux 机器(运行 Ubuntu),并且由于某种原因,箭头键在插入模式下映射到 A/B/C/D(以及整个颜色支持问题)。在 gVim 中,ctrl-tab 可以轻松映射到“bn”,但在控制台模式下却不行,这样的问题比比皆是。
            • 搜索/替换选项非常弱,界面明智。必须将整个内容输入一行,这还不够好。我觉得说 UltraEdit 中更精细的对话最终给了我更多的力量,即使实际的正则表达式支持可能要弱得多。
            • 过于依赖美式键盘布局。许多用于主要功能的键,例如 `,在我的丹麦语键盘布局上是非打印的(并且位于 arkwardly,与 $ 相同,以及许多其他键)。使用某些功能非常尴尬。

            【讨论】:

            • 对于问题 #2,安装“vim”或“vim-full”来摆脱它。
            • 恐怕问题出在其他地方。你可以在这里查看一些建议的修复 vim.wikia.com/wiki/… 但遗憾的是,这些都没有为我解决。
            • Re number 3 在 : 之后使用 ctrl-f 为您的 :s 命令等获取功能齐全的编辑堆
            • greplace 是#3 的解决方案。还有其他 grep 插件,但这就是我所需要的。比我用过的任何其他 IDE 或文本编辑器更容易查找/替换。
            【解决方案14】:

            根据我的经验,vim 和 emacs(我自己也是 vim 人,但 emacs 肯定是类似的)提供的主要生产力提升是:

            • 可以拥有现代 IDE 提供的那些功能(例如一键式编辑-构建-运行周期和内联文档以及选项卡完成等等),但您没有 必须。生产力增益?你看到的只是你想看到的。根据我的经验,IDE 并没有提高人们的工作效率,这也是因为它们显示了太多信息(各种浏览器)。恕我直言,这种“额外的力量,当你需要的时候 - 但很快”是相当大的生产力提升。

            • 编辑器在程序员中非常受欢迎,这意味着有大量的脚本、书籍和用户组可供使用。

            • 根据我的经验(我在这里只能代表 vim),普通的 vim 用户是相当优秀的软件工程师。我不知道为什么会这样(或者也许我只是幸运),但也许那些习惯了像 emacs 或 vim 这样的“旧”工具的人有正确的奉献精神(并像这样与其他人联系) )。也许这是这些编辑器的间接影响,但与其他 vim(或 emacs)人一起玩,例如事实证明 IRC 非常有趣,因为同样的人也对各种软件工程(或计算机科学)问题非常感兴趣。这些编辑似乎吸引了某种个性。 :-)

            【讨论】:

              【解决方案15】:

              我对 vi 键绑定有一定的了解,但总体上我更喜欢 Emacs。这些编辑器拥有如此狂热的追随者的原因是因为他们提供的编辑模型比新系统更强大,这就是为什么提供“vi keybindings”或“emacs keybindings”是不够的,即使你没有使用任何扩展功能或 emacs 或 vi 的自定义。

              我只会谈论 Emacs 的模型,因为我最了解它。当今文本编辑的常见模型涉及文本缓冲区,可以在其中插入、删除、选择和剪切/复制/粘贴文本到系统剪贴板。

              Emacs 缓冲区当然可以支持这些操作。除了跟踪它们可见的每个窗口的光标位置外,它们还跟踪其中的“标记”。 “点”(光标位置)和“标记”之间的文本称为“区域”,大致对应主流编辑器中的选择。

              不同之处在于 Emacs 会跟踪标记在标记环中设置的最后几个位置,并且您可以通过击键(或两次,取决于您的配置)返回它们。我发现这非常有用,特别是因为许多更改缓冲区位置的 Emacs 命令会在旧位置设置标记。一个例子是当我正在编辑一个 Python 模块并且需要在文件顶部添加一个 import 语句。用于转到缓冲区顶部的按键 (Alt-

              另一个(也更广为人知的)Emacs 的不同之处是 kill ring。大多数从缓冲区中删除文本的击键将文本保存到终止环,然后可以使用“yank”命令(Ctrl-y)调用。基本特征是后续的 yank 命令检索较旧的终止文本。因此,您可以连续删除多个文本部分,然后按顺序检索它们。您还可以在 yank 后使用 Alt-y 循环遍历 kill ring,删除检索到的文本并在 ring 中插入下一个条目。

              Emacs 在 1978 年就拥有这些特性。在任何程度上采用它们的唯一其他主要系统是 NeXTStep(现在由 Cocoa 继承)。其他工具为特定任务提供了更多功能,可以以比 Emacs Lisp 更易于使用的语言方式进行扩展,并且具有更好的可视化界面……但 Emacs 在文本编辑方面仍然更好。这就是为什么,一旦你知道如何使用它,就很难戒掉。

              【讨论】:

              • 毫无疑问,emacs 对许多人来说是一个可行的选择,因为用户太多了。但是我需要多长时间才能舒服?根据我的经验,我是一个非常快速的打字机,并且可以使用像 textmate 这样的 gui 文本编辑器很好地使用 macbook pro 触摸板。我永远无法习惯使用所有绑定的 emacs。使用大约一个月后,我的手受伤了;总的来说,我只是不确定 emacs 是否能让我更快。 mac 定位系统非常精确和快速,这些内置的 gui 文本编辑器有大量的快捷键可以做很多事情。我已经投入了很多时间,还没有看到任何收获。
              【解决方案16】:

              VIM 中的录制和回放功能非常棒,您在基于 GUI 的工具中几乎找不到。

              auto increment/decrement 为其提供数据生成功能,而无需为其编写程序。

              【讨论】:

                【解决方案17】:

                所有基于控制台的编辑器都优于 GUI 编辑器的一个优点是它们可以在终端多路复用器中运行,例如 screentmux。为什么这么好?

                • 从一个终端多路复用器控制台切换到另一个比使用鼠标甚至使用 alt-tab 从一个 GUI 控制台切换到另一个更快。这是因为控制台可以命名,并通过键入名称的几个字符来切换。
                • 如果您的编辑器会话位于终端多路复用器的控制台中,您可以从任何机器访问它们。如果我需要在家做一些工作,我可以 ssh 进入我的盒子,将已经运行的终端多路复用器附加到我的 ssh 会话中,然后就在我离开工作时离开的地方。

                【讨论】:

                  【解决方案18】:

                  多年来,我一直是一个随意的 Emacs 用户。但从未真正涉足它。然后我开始学习 Clojure(我的第一个 Lisp)并发现了 ParEdit。

                  这让我大吃一惊。

                  (有关示例,请参见此处:https://www.youtube.com/watch?v=D6h5dFyyUX0

                  Lisp + ParEdit 是我有过的最棒的编辑体验。没有其他东西能接近。 Lisp 不再是一种难写的语言,这让我不得不担心平衡许多恼人的愚蠢括号。使用 ParEdit,一致的 Lisp 结构成为一个巨大的好处,因为相同的树转换 - slurping、barfing、拆分和连接 - 在任何地方都可以工作,在控制结构和数据结构中都是如此。 ParEdit 可以防止我犯愚蠢的错误。几乎不可能出现语法错误。

                  与 Eclipse 不同,这不是一些总是在后台运行的费力的实时检查,会烧毁我的处理器。它没有任何成本......当我要求 ParEdit 时,它只是简单地进行了正确的结构更改。

                  (一般来说,Emacs 的速度与它需要的一样快。不像 Eclipse,它就像在胶水里打字。)

                  我发现的下一件事是 Yasn-p (http://emacswiki.org/emacs/Yasnippet)。再一次,我以前没有用过这样的东西。不仅仅是一个添加样板的宏,而是一个动态的、可导航的表单。

                  最后的乐趣是意识到如果我想自己扩展这个东西,拥有更多这些高级生产力工具,我可以使用 Lisp 本身的强大功能。

                  【讨论】:

                    【解决方案19】:

                    由于自 2003 年以来程序员和 C# 用户经常使用 vim/emacs,因此从这种偏见观点来看,这样做是公平的,否则不公平的比较(另一个可能是 VS C++ 与 Visual Assist X 与 vim/emacs 中的 C++):

                    对于 C# 和 Visual Studio:

                    1. 我刚刚统计了这一行的击键次数:

                          public List<string> Names = new List<string>();
                      //  3      3    3      1111111111111            211   =3+3+3+8+5+2+1+1 = 26 keys strokes + 3 uses of Shift while typing the line above in VS C# 2013 vs 47 key strokes for non-IntelliSense IDE's
                      //                              (IntelliSense offers the List<string> because that's what you're likely after here but you can type something else if you want)
                      // https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction explains on how this is impl. for C#. In C++ I've heard of 3rd party VS plugin that improves or replaces the VS C++ auto-complete
                      
                    2. 我阅读了有关跳转代码的 emacs 功能。我不认为它具有完全一样的功能。不过它也有类似的功能。这是VS的缺点。有很多小功能,但随着时间的推移它们会停止工作。最后我检查了跳转功能不起作用,但那是几年前的事了。 VS 引入了一个新的图形跳转功能,我一直在使用它。它需要鼠标或触摸。

                    3. 这就是 emacs/vi 获胜的地方。如果您必须在代码中跳来跳去,VS 功能要么不存在,要么没有经过足够的测试。

                    基于鼠标的 GUI 导航的问题在于

                    a) 就像坐在非常静止的位置可能不好,如果是这样,鼠标往往会使您的手指也处于静止位置。我的手腕疼痛随着轨迹球的改变而消失了。我首先尝试了垂直鼠标,但它没有解决问题。

                    b) 我理想的键盘应该是两排功能键,没有小键盘,这样我可以把轨迹球放得更近一些,让跳跃距离更容易承受。

                    然而,最终,如果你想在几个特定的​​地方之间跳转,显然“标记环”更有效。 VS 有一些类似的东西......上次我使用它,它只是不能可靠地工作......

                    c) 并且可能有大量的小功能会随着每个版本的发布而中断,因此这是 VS 的缺点。

                    这个“闭源”问题的解决方案:用 C# 编写整个 VS,然后允许修改/编辑编译的代码(在运行时,将更改保存为在下次启动时可选加载的补丁)而不释放源代码。这可以通过让反编译器在进入时输出代码来完成。与本机编译器的工作方式相差 180 度。然后二进制文件成为源代码和可执行文件,而不是一堆 .cs 文件和 .exe 文件等。存在几乎可以做到这一点的第 3 方工具,因此“修改”C# exe 相当简单,但我建议将其用于合乎逻辑的结论:在 .exe 和 .dll 中甚至包含 cmets。与已编译的 C/C++ 应用程序相比,这些文件仍然很小。优化?您还可以包含预先优化的代码。当 modder 在应用程序运行时修改 exe 时,未修改的“AST”和随附的优化二进制文件会重新插入。与 C# 编译器中的想法相同,但更进一步。下一步:用这种语言编写整个操作系统,这样即使 Windows 是封闭源代码,也可以轻松修改它,因为源代码随每个二进制文件一起提供。无需设置环境、编译、链接。只需在运行时修改操作系统。类比:如果您使用 Common Lisp 编写 Web 浏览器,您可以在不停止浏览器的情况下编辑 Web 浏览器并使用与浏览器相同的语言构建网页。

                    【讨论】:

                      【解决方案20】:

                      (我的背景是使用 Visual Studio 和其他 IDE 几年,然后 使用 Vim 15 年,最近使用 Emacs 6 个月。)

                      长寿 — Vim/Emacs 是 FOSS, 并且已经存在了几十年。他们的使用不会 下降,它们的功能也不会破坏/消失/改变很多, 所以你可以依靠围绕你的整个职业工具箱核心 只掌握一个编辑器。

                      终端远程/无处不在的访问——虽然两者都很好 用于编辑远程文件的系统,您也可以将它们安装在 您曾经登录过的任何系统。

                      REPL 驱动开发——两者都有各种形式的“SLIME”模式 它集成了您正在使用的任何类型的 REPL。例如,我已经 从未遇到过像提供的那样强大的迭代开发 CIDER.

                      Linting — 无论您使用什么语言,都可能有一些 linting工具,是否内置 编译器或外部工具。这些与无缝集成 Emacs/Vim,近乎实时地显示您的编码失误。

                      助记命令语法——虽然两者都需要一些时间 学习,这些编辑器以聪明的系统着称,用于访问—— 甚至记住——数以千计的命令,只需几次击键和 键组合。这些可以完全消除使用鼠标的需要,如果 你太喜欢了。

                      内置帮助系统 — 许多人的离线文档 语言及其 API 在这些编辑器中很常见, 并且可以以同样简单的方式访问广大的 他们提供的综合帮助系统。已自动完成 为大多数常用语言添加。此外,还有丰富的 几乎所有帮助主题的讨论帮助。

                      导航——标签、paredit-likes、标记、窗口、制表符、vim-rails' jumping, 以及更多内置插件。

                      包管理器/存储库 — Emacs 有一些(elpa、melpa、 果酱)和 Vim 的也很好(vundle,病原体, etc)。 我不知道任何围绕 IDE 提供任何东西的社区 与这些相媲美。我看到超过 5,000 个包裹 package-list-packages.

                      不仅仅是编辑 — Emacs 在这方面走得最远,能够 阅读新闻、浏览网页、管理电子邮件、编辑电子表格、创建 演示文稿,并组织任何事情。

                      集成其他所有功能 — 调试器、浏览器同步、 编译、shell、测试运行。

                      无限可定制 — Elisp 是一种非常强大的语言 扩展/修改 Emacs。 VimL 是 Vim 的等价物。有书 写在两者上。根据您的喜好调整颜色主题和行为!

                      【讨论】:

                        猜你喜欢
                        • 2012-09-21
                        • 2010-10-23
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-07-04
                        • 2010-09-28
                        • 2018-12-23
                        相关资源
                        最近更新 更多