5

我最近开始学习 vi,浏览了一些教程并尝试习惯它。但我对此仍有一些疑问。

对于小的文件更改似乎很好,但是一旦我开始尝试做更大的事情,它似乎就缺乏了。例如,我习惯于进行代码格式化、导入组织、对所有包的简单概述以及 IDE 提供给我的其他内容。我看到了一些关于如何将 vi 用作 IDE 的教程,但充其量只是感觉很尴尬。

现在我只是想知道,vi 的典型用例是什么?它通常用于编辑小文件,还是可以用于较大的项目?如果你在更大的项目中使用它,你如何让它发挥作用?或者使用带有 vi 键绑定的 IDE 会更容易吗?

4

12 回答 12

24

由于以下原因,人们使用 Vi(m) 等非 IDE 编辑器进行编码,

  1. 它们不会分散注意力,让您专注于工作。
  2. 它们不会弄乱您的屏幕区域,为您提供更多代码空间
  3. 他们更快
  4. 他们在手指敲击时具有更好/更快/更酷的文本操作
  5. 您碰巧将手从键盘上移开以握住鼠标,将鼠标拖到那里然后单击。
  6. 它们还具有支持调试器、文档查看器等其他工具的灵活性。
  7. 他们也有办法获得诸如代码折叠之类的东西。

对于理想工作周期是坐、写代码、测试、调试、更多代码、测试调试的普通程序员来说。Vi 提供了一个简单而强大的环境,可以更快、更高效地完成工作。

对于使用 IDE 多年的人来说,这可能就像使用一些史前工具一样,但是一旦他们经历了最初的日子,就没有回头路了。他们会觉得没有比这更好的了。

于 2009-08-21T08:35:14.933 回答
12

为什么,哦,为什么,做那些#?@!疯子用vi?

于 2009-08-21T08:25:49.773 回答
7

我还没有在 python 中做过任何你称之为大项目的事情(只有很少的测试脚本),但我专门使用 Vim 来编写大型嵌入式 C 应用程序,而且我从来没有真正觉得需要 IDE。

Vim 启动速度快,使用速度极快,并且(通过一些定制)可以完成IDE 可以完成的大多数事情。它将完成代码完成、代码自动缩进和重新格式化,并且非常擅长重构。项目插件 http://www.vim.org/scripts/script.php?script_id=69使得管理包含大量文件的项目和taglist 插件http://www.vim.org/scripts/script变得非常容易.php?script_id=273非常适合浏览源代码。它还允许您将 C 代码与 python 代码、汇编代码和 Latex 文档并排打开,而无需为每个代码使用不同的工具。

总的来说,我认为 Vim 为您提供了一件其他编辑器很少能做到的非常有价值的东西,我很难失去它:我可以将一个窗口分成三个部分,如下所示:

GVIM 拆分窗口

每个子窗口都可以显示一个单独的文件或(如屏幕截图所示)文件的一个单独部分。我想 emacs 可以做到这一点(尽管我可能是错的),但我怀疑许多 IDE 可以。这对于重构和引用文件的其他部分非常有用。

于 2009-08-21T08:33:13.737 回答
6

多年来,我一直使用 VI(M) 和 Emacs 作为我的主要编辑器……我尝试切换到 IDE,但发现它们无法摆脱我的束缚。一段时间后,我总是回到 VI(M) 或 Emacs。一个主要原因是我发现我的手需要在 IDE 中过多地离开键盘,因为它们经常需要鼠标……而且我懒得为所有事情设置自己的快捷方式。

于 2009-08-21T08:20:41.530 回答
3

这就是我使用它的原因。

  1. 启动速度很快
  2. 它可以跨多个平台使用,并且可以在所有 Unix 机器上使用
  3. 它使用起来很快(常见操作的击键,基于单词/段落的操作等)

但是,我使用 IDE 进行大规模的开发工作,因为考虑到它们的代码意识和重构能力,我无法相信它们可以在生产力方面被击败。我使用 Eclipse,但我在其中插入了一个 VI 编辑器模拟器。有关更多详细信息,请参阅此答案

于 2009-08-21T08:21:51.060 回答
2

我看过一些关于如何将 VI 用作 IDE 的教程,但充其量只是感觉很尴尬。

一开始有一件事情要做:把你的审美意识抛到脑后。你永远不会在 VIM 中获得与在体面的 IDE 中相同的图形体验。

也就是说,VIM 实际上确实提供了成熟 IDE 的许多功能,并且还有很多优势。我几乎所有的开发工作和所有的文本文档(使用Vim-LaTeX)都使用 VIM——尽管我实际上已经为 Apple 的办公套件 iWorks 付费。

不过,有一点仍然困扰着我:我无法让 IntelliSense 工作。对我来说,这是一个巨大的问题,尤其是在使用 VB、C# 或 Java 等语言时,这些语言都存在出色的 IDE 支持。

所以,VIM 的学习曲线是陡峭的,但是一旦你通过了某个点,一切都会变得很尴尬。事实上,对比 VIM 的编辑体验,你会发现突然觉得尴尬的是 IDE,因为它们虽然擅长记账,但在编辑方面却很烂。

于 2009-08-21T08:33:55.747 回答
2

我经常在远程系统上工作,为集群编程,或者在无头机器上编辑配置文件。所有这些都可以通过文件传输、常规 IDE 和另一个文件传输来完成,但是通过 SSH 使用 VIM 要快得多。

于 2009-08-21T08:38:23.367 回答
1

Vim 不太擅长代码意识。它擅长的是文本操作。它为您提供了编辑文本的工具,而不是为您编辑的工具。如果您只是进行“小”编辑而不阅读偶尔的“您希望知道的 vim 命令”,您将永远无法理解所提供的功能。

代码格式化

格式化是用 = 完成的。您还可以将 equalprg 指向外部程序来为您进行格式化。

进口组织

Vim 将无法删除未使用的导入,但如果您选择导入行

:'<,'>sort

所有软件包的简单概述

:vs .

这将打开一个包含当前工作目录的垂直窗口:)

总之,vim 不能替代您的 IDE,但它可以让您编辑文本。

于 2009-08-21T15:35:20.240 回答
1

您几乎可以在任何地方找到(或轻松安装)它 -在所有可以实现标准 C 库的系统上运行,包括 UNIX、Linux、DOS、Windows、Mac、BeOS 和 POSIX 兼容系统。

登录远程服务器并自信地编辑配置文件的能力是无价的。

于 2010-03-19T19:24:44.950 回答
0

像往常一样:根据您要做的工作选择您的工具!;-) 我正在使用 Vim 和 Visual Studio。您不必只选择一个。

  • 如果您需要 IDE,请使用 IDE。Vim 是为文本操作而设计的。
  • 它支持任何语言。尝试使用 Visual Studio 编辑 Ruby 脚本。
  • 大文件的性能比大多数 IDE 好得多。尝试使用 IDE 分析具有 100k 行或更多行的日志文件。
  • 它在许多平台上运行,如果您必须在服务器上编辑文件,您可以通过远程控制台使用它。
  • ...

IDE 是专门的工具,可以很好地解决它们所针对的问题。Vim 是一个令人难以置信的灵活和强大的通用工具。

于 2009-08-21T08:25:07.607 回答
0

这显然是一个热门话题,所以我将列出为什么我更喜欢 IDE 编辑器进行编码的原因。1)我更喜欢能够折叠我的代码部分(我不知道 Vi(m) 是否可以),而不必记住执行此操作的命令或键入它。

2)我更喜欢一键编译按钮/命令,而不是必须记住我的编译命令和它的选项库

3)我更喜欢更简单的高亮复制粘贴操作,而不必……啊啊啊啊啊!!

好吧,现在你明白了。我不是在抨击 Vi(m) 我只是认为让你的编码环境的元素和功能在视觉上表现出来可以让你的头脑更清晰,并鼓励你探索你可能不知道存在的选项。

于 2010-03-19T19:39:24.653 回答
0

我更喜欢 vim 而不是 vi 并且不喜欢将它们混为一谈。Vim 提供了一些非常方便但并不总是显而易见的特性。已经提到的是屏幕分割。此外,您可能需要检查 ctags 或 exctags。这些允许您在 vim 中跳转代码库。我可以将光标放在被调用的方法上,跳转到定义,跳转到该方法中的定义等。对于追踪错误非常强大。Cscope 是另一个类似的程序。

Vim 还将允许您在环境中运行任意 shell 命令,并具有强大的搜索和替换功能。

所以 IDE 将提供其中的大部分,vim 将提供什么超过传统的基于 GUI 的 IDE?这很简单,它在 CLI 上运行。

这使我可以登录到我的开发框,运行屏幕(对于不熟悉的人来说肯定是要检查的东西:http ://www.gnu.org/software/screen/ )并在我的开发框中的屏幕会话中运行多个 vim 会话。现在,当我下班时,我可以像离开时一样离开我的工作会话,即使在运行构建时也是如此。当我第二天上班时,我可以从我的环境中连接起来,就好像我从未离开过一样。

特别喜欢 vim 或 vi 的另一个原因是它几乎可以在任何 Unix 环境中找到。

于 2010-03-19T19:58:43.933 回答