如何在LightTable的Vim中更改默认ESC以退出插入模式?

时间:2013-05-16 16:31:15

标签: vim lighttable

我发布这个问题主要是为了提供我已经到达的答案(因为我在网上其他地方没有发现任何问题,并且没有问到如何做到这一点),希望能为未来的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:toggle vim mode"的命令选项。这会在编辑器(或instarepl)中打开和关闭vim。您可以通过"设置:更改键绑定/快捷键"将此命令绑定到热键组合。命令。这将打开一个新选项卡,您可以在其中输入左侧的新键绑定。当前的键绑定显示在右侧。

我在以下的上下文中使用SHIFT-i:editor.keys.normal。 (这意味着我不能直接在文本中使用大写"我"但在实际操作中使用程序编辑 - 特别是clojure - 这几乎不会导致问题,如果是,你可以使用小写的i,然后备份并替换char。)这有效地使" II" (SHIFT-i SHIFT-i)退出插入模式的方法。第一个SHIFT-i退出vim并让你进入正常的WYSIWYG编辑器。下一个SHIFT-i会让你回到vim,但是在命令模式下。瞧!您已从vim插入模式进入vim命令模式。

希望这有助于其他LightTable vim用户。

3 个答案:

答案 0 :(得分: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. 在user.behaviors文件的:editor部分添加以下选项: (:lt.plugins.vim/set-options {"enableInsertModeEscKeys" true, "insertModeEscKeys" "jk" "insertModeEscKeysTimeout" 200})
  7. 重启LT,您应该能够使用jk(或您在insertModeEscKeys中设置的任何键)退出插入模式

答案 1 :(得分:3)

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

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

答案 2 :(得分:-2)

对于Windows用户,您的LT插件文件夹位于用户目录中隐藏的AppData文件夹中。例如C:\Users\_username_\AppData\Local\LightTable