从我所看到的。 emacs等..在终端运行。这有什么好处吗?编写和组织事情似乎更麻烦。我并不是想要主观,我对emacs,vim,nano等一无所知。想知道更多,也许可以使用其中之一。
答案 0 :(得分:21)
你的问题很难。即使他们确实在终端运行,这也不是他们的主要优势。我现在正在谈论Emacs和Vim。简而言之,他们已经存在至少20年(Vim)或更多(Emacs),他们有一个非常活跃的社区,他们是可编写脚本的,所以如果你知道如何和他们,你可以用它们做任何事情。非常强大。
他们有一个相当大的学习曲线,所以你可能最终会在他们身上摸索数周,如果不是几个月,那么在变得精通之前。学习它们的主要动机是生产力。与记事本相比,你可以用极少量的击键来做一些非常棒的事情。
试一下。如果你喜欢它,坚持一段时间,忍受痛苦,然后你会看到好处。这几乎就像去健身房。
答案 1 :(得分:14)
现在大多数人都使用IDE。他们帮助您分析已经编写的内容。这些东西可能非常有用和有用,但它们并没有真正帮助实际编辑代码的核心任务。工具制造商所依赖的是,这些额外的东西提供了足够的好处,它将超过vim和emacs作为编辑者的效率。在大多数社区中,他们几乎赢得了这场战斗,主要是因为新开发人员面临着很好的代码完成和重构支持之间的选择,这种支持很容易使用,而且他们在大约6个月内看不到任何好处的编辑会去简单的方法。我知道我做了。
我现在是个小伙子。 Vim似乎并没有真正具有同样的生产力上限,我已经使用它超过一年,而且经常会遇到一些我不知道的事情让我更快。即使没有它,我使用它越多,我正在做的事情的思考就越少,这再次使我更快。此外,vim适用于每种语言和平台,并且安装在任何开箱即用的UNIX服务器上。它没有任何负载屏幕,几乎跳到屏幕上,与大文件一起工作,并且永远不会减速或崩溃。您学习的技能将适用于您在职业生涯中所做的一切,而不是在您更换平台时会改变的IDE。
Vim是一项投资,但是如果你谈论的是你几乎每天都要使用8-10个小时的生活,那么学习曲线将变得完全无关紧要。
答案 2 :(得分:9)
使用nano没有真正的理由。几乎任何东西都更好。
至于vim和emacs,这就是我所说的last time this came up:
我对vi keybindings不熟练,但我更喜欢整体Emacs。这些编辑拥有如此强烈的追随者的原因是因为他们提供的编辑模型比新系统更强大,这就是为什么提供“vi keybindings”或“emacs keybindings”是不够的,即使你没有使用任何扩展功能或emacs或vi的自定义。
我只会谈论Emacs的模型,因为我最了解它。今天文本编辑的通用模型涉及文本缓冲区,其中可以插入,删除,选择和剪切/复制/粘贴文本到系统剪贴板。
Emacs缓冲区当然可以支持这些操作。除了跟踪每个窗口的光标位置,它们都可见,它们还跟踪其中的“标记”。 “点”(光标位置)和“标记”之间的文本称为“区域”,大致对应于主流编辑中的选择。
不同之处在于,Emacs会跟踪标记环中设置标记的最后几个位置,您可以通过击键(或两个,具体取决于您的配置)返回它们。我觉得这非常有用,特别是因为许多改变你在缓冲区中的位置的Emacs命令在旧位置设置了标记。一个例子是我在编辑Python模块时需要在文件顶部添加一个import语句。转到缓冲区顶部的按键(Alt-<)设置标记。我添加了import语句。我按下Ctrl-u Ctrl-Space,然后我回到了我开始的地方。我可以继续这样做以循环回到以前的位置。 (也许我需要在添加导入语句时选择一些文本。)
另一个(也是众所周知的)Emacs的区别在于杀戮戒指。用于从缓冲区中删除文本的大多数按键将文本保存到kill ring,然后可以使用“yank”命令(Ctrl-y)调用它。基本功能是随后的yank命令检索较旧的已删除文本。因此,您可以连续删除几个文本部分,然后按顺序检索它们。你也可以在猛拉后用Alt-y循环杀死戒指,删除检索到的文本并在戒指中插入下一个条目。
Emacs在1978年拥有这些功能。在任何程度上采用它们的唯一其他主要系统是NeXTStep(现在由Cocoa继承)。其他工具为特定任务提供了更多功能,可以使用比Emacs Lisp更易于使用的语言扩展,并且具有更好的可视化界面......但是Emacs在文本编辑方面仍然更好。这就是为什么,一旦你知道如何使用它,它就很难戒掉。
答案 3 :(得分:6)
Vim更难学(你必须记住你想要使用的命令),但比我见过的任何IDE或GUI编辑器都强大得多。
vim的部分秘诀是它继承的行模式,最终来自Ken Thompson自己编写的ed(1)文本编辑器。它非常强大:它可以用于重构,甚至可以放入脚本中。它基于正则表达式替换。
拥有所有这些功能,因为它是一个老式的终端/ xterm应用程序,它会立即启动,并且永远不会有可检测的延迟。
我已经多次转到IDE和gui编辑,但继续回到vim。我想这一次我会坚持下去,拯救自己绕道而行。
笔记: 功能
如果您的IDE支持重构,那么找到使用IDE的理由。我只是将它用作复杂的编辑任务示例。
值得注意的是,vim似乎有助于对抗RSI,让您的双手更放松。这些命令是未修改的键,所以你不需要紧张你的手腕按住控制或元或命令或bletch或其他什么。
答案 4 :(得分:4)
使用VIM / Emacs可以获得两件事(大致):
两者都需要投入时间来学习。但是一旦你使用任何其他编辑器学习它们会感到自卑。
答案 5 :(得分:3)
Emacs和Vim是我能想到的最精美和多用途的软件。
在unix环境中工作时更为明确,其中纯文本文件用于所有内容(代码,脚本,配置,进程等)。
这些工具需要一些时间来学习,甚至需要更多的掌握,但是它们可以让你整天都有意想不到的生产力。
我在1990年左右开始使用它们。二十年后,它们位于我的列表顶部。它们是我配置机器时安装的第一个工具,当我当前的IDE卡住时,它们总能让我更进一步......想想regexrename数千个文件,应用复杂的文本文件重新格式化,或任何其他文本导向任务。
答案 6 :(得分:2)
我曾经使用过Visual Studio和eclipse。他们不擅长 原始文本编辑为emacs。他们相当慢和支持 少语言。
我听到有关emacs的唯一有意义的反对意见是“不 intellisense“。我在编辑时不使用VS / Eclipse Intellisense 那里。此外,emacs中的自动完成机制是优越的, 从我所知道的。 (例如,自动填充变量名称)。
当然,它确实需要学习曲线。对于emacs,我判断1个月的日常使用会带你到日常使用的舒适能力。
答案 7 :(得分:1)
我经常使用vi(我现在正在使用它,因为我不能为启动xserver而烦恼,因为它可以快速启动),但这只是因为我必须学习它(以及它' “我的意思是一个相当小的命令子集”很多年前,它对远程编辑文件很有用,有时甚至是gedit或者其他不可用的东西。
只是为了旧时的缘故,我刚刚开始使用emacs来看我有多讨厌它,然后我不得不谷歌一张备忘单告诉我如何关闭它。所以我认为说它不直观是公平的。
我认为,使用神秘的键组合在绿色黑色终端上工作比使用友好的GUI坐在那里更容易将自己想象为Neo(Matrix)。
答案 8 :(得分:1)
Vim拥有大量命令,如果这些命令不足以完成您重复执行的任务,您可以定义自己的命令。但是,只有在知道这些命令的数量非常少的情况下才能有效地使用Vim,所以你没有足够的数量来学习如何开始(尽管你会在几天内摸索)。您还可以根据正则表达式搜索应用命令,如果要对满足某些复杂条件的每一行应用特定更改,这可能非常方便。我无法想象这些日子里的不编码。