V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hadixlin
V2EX  ›  程序员

改善编程体验:IdeaVimExtension 安装使用

  •  
  •   hadixlin · 2019-03-20 15:37:47 +08:00 · 3140 次点击
    这是一个创建于 2060 天前的主题,其中的信息可能已经有所发展或是发生改变。

    动机

    Intellij IDEA 是个非常优秀的开发环境,提供了相当好用的快捷键,让用户有机会脱离鼠标来使用 IDE.

    另外官方还提供了 IdeaVim 插件,熟悉 vim 的用户可以使用几乎与 vim 相同的方式操作 IDEA 的编辑器来编写代码.但是作为非英文用户,却有一个"输入法切换"的痛点.

    考虑如下两种情况:

    1. 编辑器中在 insert 模式下,编写了一段中文注释,然后需要回到 normal 模式移动光标到其他位置继续编写代码.
    2. 正在编辑器 normal 模式下操作,此时突然有紧急邮件或者钉钉消息需要回复,输入法切换为中文回复后再回到编辑器.

    类似上面两种场景,当回到 normal 模式编辑器时,我们都不得不人工操作一次输入法切换,即使您已经为输入法切换设置了非常好用的快捷键(按一下 Shift),这个操作依然是恼人的,经常会忘记,输入几个字符后才发现,这可能带来误操作.

    我们的期望只有一个:

    在任何情况下,进入 normal 模式,输入法必是英文状态.

    因此我基于 IdeaVim 的扩展点开发了一个帮助切换输入法的小插件IdeaVimExtension

    IdeaVimExtension 安装使用

    1. 如果您已经是 IdeaVim 的用户,那么直接在 Intellj IDEA 的插件中心搜索IdeaVimExtension进行安装.或者到IdeaVimExtension插件主页进行下载安装.

      IdeaVimExtension 是依赖 IdeaVim 的,需要事先安装 IdeaVim

    2. 确保你的操作系统已经开启了英文输入法

      • Windows 需要开启英语美国键盘
      • macOS 需要开启 ABC 或英语美国键盘
      • Linux 支持
    3. 安装重启 IDEA 后,打开任意代码编辑器在 normal 模式下输入如下两个命令来激活 IdeaVimExtension 插件

    • :set keep-english-in-normal : 在 normal 模式保持英文状态
    • :set keep-english-in-normal-and-restore-in-insert : 在 normal 模式保持英文状态,并在回到 insert 时恢复输入法到原来的状态.例如,编写一段中文注释,用中文输入法写了一段文字,进入 normal 模式移动光标到下一行,再回到插入模式继续使用中文编辑.
    1. 上面两个命令在每次 IDEA 重启后都需要重新输入,也可以通过在用户目录下添加.ideavimrc文件,将命令添加到该文件中,这样在 IDEA 重启时可以自动执行该文件中的指令.另外,该文件中也可以添加其他受支持的 vim 指令.类似 vim 的.vimrc文件.

    接下来就可以愉快的使用全键盘操作来编写代码了.

    注意: 该插件仅支持 macOS 和 Windows 操作系统,不支持 Linux.

    如果有哪位同学可以提供 Linux 下切换输入法的动态库,我就可以支持了.

    欢迎到Github反馈问题

    1 条回复    2019-03-20 15:59:01 +08:00
    1892
        1
    1892  
       2019-03-20 15:59:01 +08:00
    linux 的输入法可以看看 fcitx
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2826 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:39 · PVG 21:39 · LAX 05:39 · JFK 08:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.