4

我发布这个问题主要是为了提供我已经得到的答案(因为我在网上其他地方没有找到任何东西,也没有看到任何问题询问如何做到这一点),希望为未来的 LightTable vim 用户节省一点时间。但我也想听听人们针对这个问题找到的任何其他解决方案,或者一般来说是 vim LightTable 问题。

我已经爱上了 LightTable,但在我考虑使用 IDE 之前,至少需要最少的 vim 支持。LightTable 有。不过,目前,您主要受制于默认的 vim 选项,并且几乎无法更改配置。我很想知道这个领域的未来计划是什么(你在外面吗,克里斯?)。在本地配置目录中公开 .vimrc ,即使功能非常有限,也非常棒,但我意识到它还处于开发初期,很大程度上取决于 CodeMirror 可以提供什么。

我不能容忍的一件事是必须将我的小指向上和向左发送以按下 ESC 键以退出插入模式。这太慢了,需要你的左手指离开主行,这从来都不好。我通常在 vim 中处理这个问题的方式是映射 ii 以退出 .vimrc 中的插入模式。默认情况下的另一种选择是按 CTRL-[。这更好,但对我来说,这正在进入 emacs 和弦领域,并且由于某种原因,我的右手小指几乎总是在敲击任一方括号键时出现颤抖。

这有点小技巧,但在 LightTable/CodeMirror 提供更好的 vim 支持之前,这是一个可以容忍的解决方法。我只在最新的 LightTable (0.4.9) 上测试过它,所以我不确定它是否适用于早期版本(你可能不应该在任何情况下使用),或者,就此而言,更高版本会来的。

有一个名为“Vim:切换 vim 模式”的命令选项。这会在编辑器(或 instarepl)中打开和关闭 vim。您可以通过“设置:更改键绑定/快捷方式”命令将此命令绑定到热键组合。这将打开一个新选项卡,您可以在其中在左侧输入新的键绑定。当前的键绑定显示在右侧。

我在 :editor.keys.normal 的上下文中使用 SHIFT-i。(这意味着我不能在文本中直接使用大写的“I”,但在程序编辑的实际实践中——尤其是 clojure——这几乎不会导致问题,如果出现问题,你可以使用小写的 i 然后返回up 并执行替换字符。)这有效地使“II”(SHIFT-i SHIFT-i)成为退出插入模式的手段。第一个 SHIFT-i 退出 vim 并让您进入正常的 WYSIWYG 编辑器。下一个 SHIFT-i 让您回到 vim,但处于命令模式。瞧!您已经从 vim 插入模式转到 vim 命令模式。

希望这可以帮助其他 LightTable vim 用户。

4

2 回答 2

4

更新:我认为最新的 LightTable 版本支持这一点。如果将以下内容添加到他们的user.behaviors文件中,请有人发表评论(用户行为可通过命令窗格(ctrl-space)访问):

[:editor :lt.plugins.vim/set-options {"enableInsertModeEscKeys" true, 
                                      "insertModeEscKeys" "jk", 
                                      "insertModeEscKeysTimeout" 200}]

老答案:

最新的 LT 插件源支持这一点,但尚未发布。

要轻松安装它,请执行以下操作:

  1. 打开您的 LT 插件文件夹,例如在 OSX 上~/Library/Application Support/LightTable/plugins/Vim/
  2. (可选)将 Vim(插件)文件夹的备份保存在其他位置
  3. 删除 Vim 文件夹
  4. 下载https://github.com/LightTable/Vim/archive/master.zip
  5. 解压缩,将解压后的文件夹重命名为 Vim,然后将其移动/复制到您的 LT Plugins 文件夹(即它正在替换您刚刚删除的官方 Vim 插件)
  6. :editor在user.behaviors 文件 的部分添加以下选项:(:lt.plugins.vim/set-options {"enableInsertModeEscKeys" true, "insertModeEscKeys" "jk" "insertModeEscKeysTimeout" 200})
  7. 重新启动 LT,您应该能够使用 jk(或您在 insertModeEscKeys 中设置的任何键)退出插入模式
于 2014-07-28T14:05:48.057 回答
3

CodeMirror 的 API 的设计方式使得添加键绑定不是很复杂,但是添加对配置文件的支持并扩展默认键绑定以覆盖 Vim 的大部分功能集对我来说听起来并不是一件容易的事. 而且,考虑到 LT 甚至没有搜索/替换功能,这可能是他们 TODO 列表底部附近的东西。

那,而且 CodeMirror 是一个第三方“库”,LT 团队可能没有太多的影响力。

于 2013-05-16T17:19:20.257 回答