2013-05-16 40 views
4

我发布这个问题很大程度上是为了提供我已经到达的答案(因为我在其他地方没有找到任何其他网上信息,并且看到没有问题要问怎么做),希望能为未来的LightTable vim用户节省一点时间。但我也想知道人们发现的任何其他解决方案,或者一般的vim LightTable问题。如何在LightTable的Vim中更改默认ESC以退出插入模式?

我已经爱上了LightTable,但是在我甚至考虑IDE之前,至少需要最低限度的vim支持。 LightTable有。然而,目前,你基本上都停留在默认的vim选项下,并且很少能够改变配置。我非常有兴趣听到这方面的未来计划(你在克里斯?)。在本地配置目录中公开一个.vimrc,即使功能受到很大限制,也是非常棒的,但是我意识到它很早就在开发中,很大程度上取决于CodeMirror能够提供什么。

我不能容忍的一件事是必须发送我的小指向上,并在左侧按ESC键退出插入模式。这太慢了,需要你的左手指离开主排,这从来都不好。我通常在vim中处理的方式是将ii映射到.vimrc中退出插入模式。默认情况下,另一个替代方法是按CTRL- [。这更好,但对我来说,这是进入emacs chording领域,由于某种原因,我右小指的手指几乎总是碰到任何一个支架键。

这是一个破解,但它是一个容忍的解决方法,直到更好的vim支持出现在LightTable/CodeMirror中。我只在最新的LightTable(0.4.9)上进行了测试,所以我不确定它适用于较早的版本(反正你可能不应该这么做),或者就此而言,会出现。

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

我使用SHIFT-i,在上下文中:editor.keys.normal。 (这意味着我不能直接在文本中使用大写字母“I”,但在实际编辑程序时 - 尤其是clojure - 这几乎不会导致问题,如果是这样,您可以使用小写字母i然后返回做一个替换字符。)这实际上使“II”(SHIFT-i SHIFT-i)退出插入模式的方式。第一个SHIFT-i退出vim并将你置于正常的所见即所得编辑器中。下一个SHIFT-i会让你回到vim,但是在命令模式下。瞧!你已经从vim插入模式转到vim命令模式。

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

回答

3

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

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

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中设置的任何键)退出插入模式
+0

直到今天,LightTable已半不可用...现在都是固定的!它甚至似乎与'jj'一起工作!非常感谢:) – Cotten

+0

不错,很高兴听到!该插件现在使用来自CodeMirror的更新版本的vim.js,并且我的用于设置上述Vim选项的补丁已被接受,但他们还没有正式发布插件更新,但我已更新了要反映的答案。 – JobJob

+0

由于性能原因请小心,只有j,k,i可以一起用于退出插入模式。如果你想要不同的密钥,你必须在这里添加它们:[vim.js#L4760](https://github.com/LightTable/Vim/blob/128269ac2898935d469cbc7fe5e4434615def738/vim.js#L4760)例如,我使用呃(dvorak) 。我花了一段时间才弄清楚这一点。 – noob

-2

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

相关问题