15

背景

我正在构建一个应用程序,它可以检测您从文件系统中使用的文档。为此,它必须访问活动窗口的 AXDocument 属性。MacVim 提供了这个。在终端中运行 Vim 不会提供这个。

我刚刚发布了一项调查,询问对我的应用程序感兴趣的编辑器编码员使用什么。大量使用 Vim 的人直接从命令行使用它。

为什么不使用 GUI Vim?

为什么有些人更喜欢以这种方式运行 Vim 而不是像 MacVim 这样的 GUI 实现?

这有什么优势?据我了解,您可以从命令行将文件发送到 MacVim,就像命令行 Vim 一样容易。

4

12 回答 12

19

对于每个特定的开发人员,这些原因可能会有所不同,但我的猜测是:

  1. vim 在任何平台上几乎都是 vim。GUI 实现可能会有所不同。
  2. 熟悉 - 熟悉 vim 并不一定意味着熟悉包装在 GUI 中的 vim - 特别是给定 #1。
  3. “精英情结”;-)
  4. 对 cli vim 的用户没有明确的优势。
于 2010-01-27T18:46:04.950 回答
17

一个人可能无法访问 gui(想想 ssh)或只是习惯的力量。

于 2010-01-27T18:45:35.810 回答
12

虽然我没有使用 GUI 版本独有的任何功能(编辑时永远不要触摸鼠标),但我发现 GVIM 在字体渲染和颜色管理方面更令人赏心悦目。因此,使用 cli 版本的唯一原因是无法访问图形环境(例如通过 ssh 访问远程计算机时)。使用 GVIM 还允许重用调用它的终端,而无需使用screen.

于 2010-01-27T19:30:59.030 回答
10
  • 能够vimscreen提供下运行

    • 可靠性:如果 X 或终端应用程序崩溃,它将保持活动状态。不确定这对 Mac 有多大的适用性。
    • 在终端选项卡中多路复用会话的选项。因此,我实际上很少使用终端选项卡。设置层次screen结构的会话并移动它们的分支是可能的(尽管有点混乱)。 screen超级棒。这还提供了一个额外的文本缓冲层,您可以在其中通过正则表达式进行搜索——如果您生成一个页长的 shell 命令并且您正在其中查找特定单词,这将非常有用。
    • 从另一台计算机连接到现有会话或在网络中断后重新连接的能力
    • 和朋友
  • 除了可以使用之外screen,控制台vim还提供了更好的 shell 集成。虽然可以从 gvim 中运行 shell 命令(同样,我不确定这如何适用于 Mac,我是一个 linux 人),但有一些限制。我很少使用 gui vim,所以我不确定确切的限制。例如,删除了 ANSI 颜色代码。我觉得这很烦人,因为我倾向于以这种方式与 SCM 交互,例如:!git diff --cached在提交之前运行以检查索引中的更改。如果它是彩色的,它可以更快更令人满意(嗯,diffy!)阅读。

  • 我曾经觉得这gvim对于查看差异来说是一个很大的改进,但我已将终端的背景颜色更改为深色非黑色阴影,并设置

    :highlight DiffAdd ctermbg=Black
    :highlight DiffChange ctermbg=Black
    :highlight DiffDelete ctermbg=Black
    :highlight DiffText cterm=Bold ctermbg=None
    

    这样做的结果是,在差异模式下,不同的文本显示为黑色背景,而未更改的文本使用终端背景颜色着色。对于并排的差异,这非常有效,因为您可以根据另一侧立即判断给定行是更改还是添加;对于非并排,您将能够在更改的行中看到未更改的部分。

    这意味着您可以保留语法着色并仍然能够看到差异。同样,您确实需要能够将终端的背景颜色设置为独特的、深色的、非黑色的阴影。这个工具在我使用的终端仿真器(yakuake/konsoleroxterm)和许多其他仿真器中可用。^[?Mac^M"mya)^O^Op

    这也假设您使用的是用于深色背景颜色的配色方案;我使用修改后的delek.

  • 虽然我没有尝试过,但也可以选择vim在支持该模式的终端上以 256 色模式运行控制台——我相信这包括大多数或所有现代模式。这可以使控制台可以使用 GUI 颜色方案的许多微妙之处vim^["mp

  • 我也喜欢它住在它开始的地方,并且启动很快。因此,如果我在 shell 中导航,按照我的习惯,我可以编辑文件而不会中断该流程或不必将该操作转移到另一个概念性房地产。有更少的事情要跟踪是一个很大的优势。能够将其设置为背景也很有帮助,例如,如果我需要通过xclip. 如果我生成了一个 GUI 窗口,我可能会难以记住那个 shell 在哪里,或者可能已经关闭了它。

  • 我完全使用 gui vim 的主要原因是它更有意义,因为它是从 gui 应用程序(例如浏览器)产生的东西。实际上我从不这样做,我怀疑这相当于弹出一个新的终端窗口,里面有一个新的控制台 vim。尽管可能有一些(窗口管理器)窗口管理功能是 gui 实现独有的。这与您正在讨论的用例非常相似。

于 2010-06-27T20:35:59.210 回答
5

gvim 实际上只是一个运行 vim 的基本终端仿真器,顶部还有一些菜单和工具栏按钮。

因此,如果您已经拥有一个良好的、功能齐全的终端模拟器,那么您也可以使用它,因为您将在所有终端会话中使用您熟悉的相同类型的终端窗口。

另一个好处是它可以轻松切换到 vim 内的 shell,然后无缝切换出去。

在 Windows 上,我更喜欢 gvim。在 Linux 上,它是 gnome-terminal 中的 vim,它非常好且可配置,谢谢。

于 2010-07-05T00:11:13.153 回答
3

避免(或至少减少)鼠标的使用。

于 2010-01-27T18:46:00.770 回答
3
  • 某些 gvim 变体无法处理我的某些热键

  • 当我尝试编译程序时,一些会产生单独的窗口

  • 有时他们根本无法正确使用固定或终端等字体(想想“终端粗体” - 一些gvim变体只是拉伸“终端正常”而不是使用单独的字体渲染)

  • cli 通常比 gui 运行得更快,尤其是在真正的文本模式控制台中运行时(虽然在 mac 上不可能)

  • 使用 GUI 版本几乎没有任何好处,而且我会失去在屏幕中运行、ssh、使用 ctrl+z 暂停进程等等的能力。

于 2010-01-27T20:29:02.677 回答
2

我使用命令行的主要原因是我已经在终端中度过了大部分时间,而我对 vim 的使用反映了这一点。我很长一段时间都没有打开vim,只是编辑不同的文件然后打开其他文件而不关闭它;我通常打开一个或两个文件进行一些编辑,然后执行一些命令行任务,也许更改一个目录,然后在其他地方打开 vim。使用 gui 时,打开编辑器时会有很大的延迟。如果我打开它一次并让它保持打开状态,这不会打扰我,但我往往不会那样工作。所以命令行更适合我的工作流程。此外,由于 GUI 在命令行方面没有真正的好处,反之亦然,我一直坚持使用命令行,因为它更适合我。

于 2010-01-28T14:42:05.630 回答
2

vim 在处理大文件(在我的情况下为 100-500MB .csv 或 .xml 文件)时性能更高。

gvim 在用于比较文件时胜过 vim(gvimdiff):设置字体(想要在屏幕上显示更多内容?)、拖动窗口分割线(想要查看一个文件而不是另一个文件)等。

除此之外,除了处理大文件时,我没有看到其他市长差异并使用 gvim,因为我发现它在图形环境(gnome)中更方便。

于 2010-02-23T16:01:13.037 回答
2
  • 渲染速度
  • 适当的外壳集成
    • 暂停(Cz),
    • 备用终端,
    • 统一复制/粘贴
    • 更好的快速修复集成(所有外部程序都在您的终端内运行,而不是弹出窗口......)
  • 网络无关:可以通过 ssh 运行
  • 使用 GNU 屏幕,可以通过互联网分离/附加会话;

对于有时提到的“缺点”:

  • 鼠标支持与:se mouse +=a; 这允许选择,用鼠标拖动窗口边框,甚至在 ssh 上的 GNU 屏幕上
于 2011-05-25T12:12:55.883 回答
1

通过 vim + gnu 屏幕配对编码是我的卖点。我整天都在 screen/vim 中工作,它允许人们远程进入我的 screen 会话,我们都可以流畅地编辑文件。现在太热了。

于 2011-04-13T19:20:01.487 回答
0

作为一个 vim 大用户,虽然我知道 GUI vim,但我不会出于习惯使用它们。

我从 1990 年开始使用 vi,几年前改用 vim,但仍然通过别名(别名 vi=vim)调用它。

对我来说这只是习惯。vim 可以正常工作。也许 gui 提供了更多,我应该探索它,但 vim 的工作方式正是我期望和希望的。

于 2010-01-27T19:16:55.807 回答