使用命令行Vim与GUI Vim的原因

时间:2010-01-27 18:41:57

标签: vim macos editor macvim

背景

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

我刚刚发布了一项调查,询问哪些编辑程序员对我的应用程序使用感兴趣。很多使用Vim的人都直接从命令行使用它。

为什么不使用GUI Vim?

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

这提供了哪些优势?据我了解,您可以从命令行向文件发送文件,就像命令行Vim一样容易。

12 个答案:

答案 0 :(得分:18)

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

  1. vim在任何平台上都非常棒。 GUI实现可以 而变化。
  2. 熟悉 - 熟悉vim并不意味着什么 熟悉vim包裹ina GUI - 特别是#1。
  3. “Elite Complex”; - )
  4. 对cli vim的用户没有明确的优势。

答案 1 :(得分:17)

有人可能无法获得gui(想想ssh)或只是习惯性的力量。

答案 2 :(得分:12)

虽然我没有使用GUI版本独有的任何功能(在编辑时从不触摸鼠标)但我发现GVIM更适合于字体渲染和色彩管理。因此,使用cli版本的唯一原因是无法访问图形环境(例如通过ssh访问远程计算机时)。使用GVIM还可以重用被调用的终端,而无需使用screen

答案 3 :(得分:10)

  • 能够在vim提供

    下运行screen
    • 可靠性:如果X或终端应用程序崩溃,它将保持活跃状态​​。不确定这对Mac有多适用。
    • 在终端选项卡中复用会话的选项。实际上我最终很少使用终端标签。设置层次screen会话并移动它们的分支是可能的(尽管有点令人困惑)。 screen非常棒。这还提供了一个额外的文本缓冲层,您可以在其中使用regexp进行搜索 - 如果您生成一个页面长的shell命令并且您正在寻找特定的单词,这将非常有用。
    • 从另一台计算机连接到现有会话或在网络中断后重新连接的能力
    • 和朋友
  • 除了可以使用screen之外,控制台vim还提供了更好的shell集成。虽然可以从gvim中运行shell命令(同样,我不确定这是如何适用于Mac的,我是一个Linux人员),但是有一些限制。我很少使用gui vim所以我不确定确切的限制。例如,删除ANSI颜色代码。我发现这很烦人,因为我倾向于以这种方式与SCM交互,例如在提交之前运行:!git diff --cached来检查索引中的更改。如果它着色,它会使得更快更令人满意(mmm,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

    这也假设您使用的是用于深色背景色的colourscheme;我使用修改后的delek

  • 虽然我没有尝试过这个,但是也可以选择在支持该模式的终端上以256色模式运行控制台vim - 我相信它包括大多数或所有现代模式。这可以使GUI颜色方案的大部分细节可用于控制台vim^["mp

  • 我也喜欢它生活在它开始的地方,并且快速启动。因此,如果我在shell中导航,按照我的惯例,我可以编辑文件而不会中断该流程或者不得不将该操作转移到不同的概念性空间。减少需要跟踪的事情是一大优点。能够进行后台处理也是有帮助的,例如,如果我需要通过xclip获取未导出的shell变量的内容。如果我生成了一个GUI窗口,我可能会在记住shell的位置时遇到一些麻烦,或者可能已经关闭了它。

  • 我使用gui vim的主要原因是它从gui app(例如浏览器)产生的东西更有意义。在实践中我从来没有这样做过,我怀疑它只相当于只有一个新的终端窗口弹出一个新的控制台vim。虽然有一些(窗口管理器)窗口管理功能可供gui实现专用。这与您正在讨论的用例非常相似。

答案 4 :(得分:5)

gvim实际上只是一个基本的终端模拟器,其中运行了vim,顶部有一些菜单和工具栏按钮。

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

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

在Windows上我更喜欢gvim。在Linux上,它是在gnome-terminal中的vim,这是很好的,可配置的比你好。

答案 5 :(得分:3)

避免(或至少最小化)使用鼠标。

答案 6 :(得分:3)

  • 一些gvim变种无法处理 我的一些热键

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

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

  • cli通常比gui工作得快, 特别是如果真的跑 textmode控制台(不可能在 mac虽然)

  • 使用几乎没有任何好处 GUI版本,我松散的能力 在屏幕上运行,ssh,暂停 使用ctrl + z进行处理等等。

答案 7 :(得分:2)

对于巨大的文件(在我的情况下为100-500MB .csv或.xml文件),vim的性能更高。

当用于比较文件时,gvim击败了vim(gvimdiff):设置字体(想要更多内容在屏幕上?),拖动窗口分割线(想要看到更多的一个文件而不是另一个)等等

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

答案 10 :(得分:1)

  • 渲染速度
  • 正确的shell集成
    • 暂停(C-z),
    • 备用终端,
    • 统一复制/粘贴
    • 更好的quickfix集成(所有外部程序在终端内部运行,而不是弹出窗口......)
  • 网络不可知:可以在ssh上运行
  • 使用GNU屏幕,可以通过互联网分离/附加会话;

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

  • 鼠标支持与:se mouse +=a相当;这样可以选择,用鼠标拖动窗口边框,甚至通过ssh
  • 上的GNU屏幕

答案 11 :(得分:0)

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

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

对我来说这只是一个习惯。 vim运行良好。也许gui提供更多,我应该探索它,但是vim的工作方式与我期望的方式相同,并希望它能够实现。