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

Vim 黑科技之 GlobalVim--在任意输入场景中使用 vim

  •  4
     
  •   einsxiao · 2019-05-15 03:46:58 +08:00 · 7565 次点击
    这是一个创建于 2018 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GlobalVim,顾名思义,全局 vim,在全系统所有输入环境生效。这就很 bug 了。

    推荐大家试试,用来聊天打字回帖最爽了。

    项目主页:GlobalVim

    GlobalVim 并不只是一款提供 vim 按键绑定的简单程序,它还提供包含寄存器,宏录制,正则替换等等高级功能。

    还有一点,GlobalVim 完美支持中文。所以说聊天打字回帖最爽了。

    第 1 条附言  ·  2019-05-16 04:08:34 +08:00
    2019.05.16 升级,寄存器鲁棒性加强,visual 模式替换 bug 修复,支持选取任意键做 GeeKey 热键。移除安装文件权限要求。
    第 2 条附言  ·  2019-06-09 17:48:46 +08:00
    代码已开源到 https://github.com/einsxiao/GlobalVim
    想试一试的同学可以用源代码,也可以微软商店直接下 uwp 打包直接安装。
    要把源码跑起来需要编译安装 PyHook3 (前置条件具备的话,pip 会直接编译的),python 环境 3.7
    在大家建议下,加了些功能,改了很多 bug ;但是还是有报告 shift 未弹起的 bug,由于不能复现,暂时无能为力啦。
    欢迎有兴趣的同学一起完善。
    47 条回复    2019-06-09 17:58:17 +08:00
    20015jjw
        1
    20015jjw  
       2019-05-15 03:57:09 +08:00 via Android
    现在就试 棒
    20015jjw
        2
    20015jjw  
       2019-05-15 03:59:37 +08:00 via Android
    nvm 不是开源就算了 这还是 exe 分发 mac 用户只能 pass
    AlanCheng
        3
    AlanCheng  
       2019-05-15 09:28:09 +08:00
    ahk 复用 CapsLock, 来用于其他快捷键了, 可能与 GeeKey 冲突, 要是有合适的解决方案, 才能更愉快の使用这大杀器了
    qcts33
        4
    qcts33  
       2019-05-15 09:35:09 +08:00
    能稍微解释一下实现的原理吗,这么黑科技然后又是二进制分发,不说别的,我担心出现兼容性问题之后不好恢复……
    ace12
        5
    ace12  
       2019-05-15 09:45:21 +08:00
    这就很 bug 了。。。
    youngxu
        6
    youngxu  
       2019-05-15 09:52:11 +08:00 via Android
    又不开源,还是个 exe
    bian
        7
    bian  
       2019-05-15 09:55:37 +08:00
    不开源不敢用,这权限太大了吧
    aiwoshishen
        8
    aiwoshishen  
       2019-05-15 09:55:46 +08:00
    这个跟 svim 有什么不一样
    fyibmsd
        9
    fyibmsd  
       2019-05-15 10:03:27 +08:00
    这个站有人用 windows 吗
    Maboroshii
        10
    Maboroshii  
       2019-05-15 10:21:17 +08:00
    我以为 windows 不会有人用 vim
    Arnie97
        11
    Arnie97  
       2019-05-15 10:41:33 +08:00 via Android   ❤️ 2
    exe … 还建议用户安装自签根 CA … 告辞
    szzhiyang
        12
    szzhiyang  
       2019-05-15 12:15:30 +08:00
    Power Keys 的空格编辑不知比 Vim 高到哪里去了。

    https://PowerKeys.GitHub.io
    loading
        13
    loading  
       2019-05-15 12:23:50 +08:00 via Android
    不敢用,告辞。
    einsxiao
        14
    einsxiao  
    OP
       2019-05-15 12:52:13 +08:00
    近期开源敬请关注 https://github.com/einsxiao/GlobalVim
    einsxiao
        15
    einsxiao  
    OP
       2019-05-15 12:52:38 +08:00
    @aiwoshishen 是一样的,我改了个名字
    einsxiao
        16
    einsxiao  
    OP
       2019-05-15 12:54:09 +08:00
    @AlanCheng CapsLock 可以 在设置里面禁用
    einsxiao
        17
    einsxiao  
    OP
       2019-05-15 12:55:13 +08:00
    @qcts33 马上开源,敬请关注,实现原理很简单哩,直接拦截键盘事件
    yuuko
        18
    yuuko  
       2019-05-15 13:51:19 +08:00 via Android
    所以说 mac 平台呢
    AlanCheng
        19
    AlanCheng  
       2019-05-15 14:04:23 +08:00
    @einsxiao

    1. GlobalVim 禁用了 CapsLoack, 无法快捷键启动 GlobalVim 了, 所以, 为了快捷键的启停, 建议允许自定义 Globalkey 的启用快捷键
    2. 另, 多用 HHKB 配列, CapsLock 使用 fn+Tab 组合键实现的, Geekey+v 等于 按键 fn+Tab+v, 3 键勉强能尝试着按, 还是希望能允许自定义合适自己的快捷键, 尽量避免改变用户快捷键习惯
    einsxiao
        20
    einsxiao  
    OP
       2019-05-15 14:28:12 +08:00
    @AlanCheng 好的,谢谢建议,已加入计划
    einsxiao
        21
    einsxiao  
    OP
       2019-05-15 14:29:58 +08:00
    @AlanCheng 另外 fn 键不是每个键盘都有的,譬如我键盘就没有
    hljjhb
        22
    hljjhb  
       2019-05-15 14:31:25 +08:00 via Android
    最新 release 习惯为 latest,newest 有点怪😂
    einsxiao
        23
    einsxiao  
    OP
       2019-05-15 14:34:04 +08:00
    @hljjhb 已更正
    Kevin1996
        24
    Kevin1996  
       2019-05-15 14:34:48 +08:00
    希望能开发 mac 平台的
    xml123
        25
    xml123  
       2019-05-15 23:40:34 +08:00
    想法不错,不过打开之后随便按了几个键程序就卡死了,用的是绿色版,也没提示什么证书不被信任
    einsxiao
        26
    einsxiao  
    OP
       2019-05-16 04:10:00 +08:00
    @AlanCheng 已支持选取任意键做 GeeKey 热键。欢迎关注。
    einsxiao
        27
    einsxiao  
    OP
       2019-05-16 04:10:38 +08:00
    @Kevin1996 已计划,敬请期待
    einsxiao
        28
    einsxiao  
    OP
       2019-05-16 04:12:35 +08:00
    @xml123 请问是什么软硬件版本,是怎么卡死的?我目前几台电脑上还没有出现过死掉的情况。所以不知道会在哪里出问题。
    AlanCheng
        29
    AlanCheng  
       2019-05-16 09:12:37 +08:00
    @einsxiao
    痛点, 似乎没有解决呢
    Geekey 热键, 似乎是只能设置一个按键呢, 而且, 设定后, 此按键便无法再用做他原本的用途了呢~
    xml123
        30
    xml123  
       2019-05-16 10:22:29 +08:00
    @einsxiao #28 软件是从项目主页上下的最新版( v2019.05.16 ),系统是 win10 1809,打开这个程序进入 vim 模式,随便按几个键就未响应了。还有什么其他的信息需要提供吗?
    xml123
        31
    xml123  
       2019-05-16 10:29:14 +08:00
    @xml123 #30 另外好像 shift 键会被卡住(按任意键的效果会表现为 shift+这个键)
    einsxiao
        32
    einsxiao  
    OP
       2019-05-16 12:57:20 +08:00
    @xml123 我猜测是软件冲突。您有没有可能在空闲时候试下把其他软件关测试一下呢?如果光跑 globalvim 没问题的话,就是软件冲突,然后如果可能,依次开就可能知道是哪款软件。
    einsxiao
        33
    einsxiao  
    OP
       2019-05-16 13:05:11 +08:00
    @AlanCheng 嗯,不是可以理解成以下做法可以更好一点:

    1. 首先提供一个和 geekey 无关的快捷键来开关 vim 模式。
    2. GeeKey 热键可以设成例如 hhkb 上稍微好按的 shift+control。

    对第二条,我本来以为,对 hhkb 来说,设置成任意键的话,左右 alt 牺牲一个,应该影响不大的
    xml123
        34
    xml123  
       2019-05-16 13:06:18 +08:00
    @einsxiao #32 换了另一台电脑试了试,没有卡死的情况了,但是还是会出现 shift 卡住的现象
    einsxiao
        35
    einsxiao  
    OP
       2019-05-16 13:09:59 +08:00
    @xml123 谢谢,globalvim 模式在实现 visual 模式时确实会对 shift 按键进行频繁的 cover uncover,

    我没有对刚发布的版本进行充分测试,容我在多几个环境下试一下。
    einsxiao
        36
    einsxiao  
    OP
       2019-05-16 13:17:53 +08:00
    @xml123 我在一台 dell 笔记本上测试的时候,当 numlock 锁定时,就会出现 shift 被按下的情况,您看是否于此有关?
    xml123
        37
    xml123  
       2019-05-16 13:22:45 +08:00   ❤️ 1
    @einsxiao #36 确实,把 numlock 关了之后好像可以正常用了
    AlanCheng
        38
    AlanCheng  
       2019-05-16 14:34:42 +08:00
    @einsxiao

    最好是, 将长按『\』或其他 vim 中未用到的短触发键 作为 Geekey, 短按依然是其原用途

    短触发键, 一般多是输出键(26 英文+符号), 空格长按, 有可能具有连续输出空格的要求, 或有可能被其他软件用作其他用途了, 便不属于短触发键

    我的一个客制化键盘, 便可以将长按 f 键设置为切换层, 进入第二层键盘布局, 又可以将 hjkl 定制为方向键
    如此一来, 我便可以 长按 f 键+hjkl, 实现方向功能, 如果短按 f, 便依然是输出 f

    当时考虑 f 键, 是因为 f 键, 在左手定位指上, 而且 vim 中 f 的用途主要是短触发(查找当前行), 所以长安 f 键成为切换布局的首选了
    einsxiao
        39
    einsxiao  
    OP
       2019-05-16 14:52:51 +08:00
    @AlanCheng 喔,那我明白了,要实现这个也很简单,谢谢开我之眼界

    当初也有类似尝试,但我会经常有按下热键,却不做其他动作就放开热键的习惯,所以当时并没有设想到还可以这选择

    那这样方案怎么样:

    增加一个选项,选项让热键是屏蔽模式,还是长短键模式,这样就两全其美了。
    einsxiao
        40
    einsxiao  
    OP
       2019-05-16 18:11:31 +08:00
    @AlanCheng 最新版本已经添加长短按功能,

    我遇到的唯一问题是,假如使用 f 键做热键的话,那么由于组合键下 f 功能被阻塞,那么很有可能,在打字比较快的情况下,在 f 还没有被放开时,其它键已经按下(中文状态似乎没有这个问题,英文时就比较容易遇到)。

    当然这都是在 f 作为组合键热键,而不是开关键的前提下。

    我个人对开关键方案,在 vim 模式可用的情况下,的需求就没有那么大了。
    AlanCheng
        41
    AlanCheng  
       2019-05-16 20:35:01 +08:00
    @einsxiao

    好像双击 d(vim 删除行), 就卡住了
    einsxiao
        42
    einsxiao  
    OP
       2019-05-16 21:53:13 +08:00
    汗,真是抱歉。请问,是什么环境下面呢?

    关于 hhkb 方案,我觉得使用 esc 作为 GeeKey 键,使用长按 GeeKey,短按还是 esc 的配置,简直棒。
    einsxiao
        43
    einsxiao  
    OP
       2019-05-16 22:43:00 +08:00
    primary primary Primary Primary primary Primary
    xml123
        44
    xml123  
       2019-05-16 23:47:27 +08:00
    lz 更新还是挺勤的,不过模仿 vim 的程度还是太低了,希望能够继续改进,另外和 numlock 的兼容问题是否有希望解决呢
    einsxiao
        45
    einsxiao  
    OP
       2019-05-17 00:18:30 +08:00
    @xml123 抱歉,从来没有用过 numlock,实际中何种情形下会用呢?

    另外,由于 GlobalVim 追求的目标是在操作系统的普遍输入环境的 vim 习惯,所以,并不打算提供很多不常用功能,当然目前还有一些简单的命令,也是欠缺的,譬如,yG, 这些可以通过自定义解决,当然,我也会在后续更新中完善。

    还有,很多高级功能基本需要分析当前语境,而由于输入环境的多样性,并没有统一的方法获得文本,唯一简单且统一的方法是通过剪切板,但效果并不是很好。这些需要很多工作,我认为这些需求并不迫切,所以目前高级功能不考虑。当然时间允许的话,我会继续尝试的。最近比较空,过段时间,我把代码稍微弄好看一点,github 开源之后,欢迎大家一起探讨,改进。
    xml123
        46
    xml123  
       2019-05-17 10:09:22 +08:00
    @einsxiao #45 没用过 numlock 是因为用的不是全尺寸键盘吗?一般来说只要有小键盘区的,numlock 默认都是锁上的,不大会有人把小键盘区用来移动光标吧。
    关于 vim 的功能,已经实现的我还是可以发现一些不一致的,比如 dd 只会删除一行的内容,但是不会删除行本身。此外我觉得最基本的“编辑命令”和“移动命令”可以任意组合,这应该不算是不常用的功能吧,具体来说就是 y,c,d,v 这些命令,可以和 0,^,$,w,W,e,以及{i,a}{w,W,',",{,(}等等这些随意组合,.重复上一次编辑,我觉得这些都算是很基础的功能。
    不过这些实现起来还要兼容各种编辑环境可能确实很复杂,但是如果只是提供少量的 vim keybind,我觉得实用性并不算太大。与其用你这个软件,不如用另一种方法:给一个快捷键绑定这样一种功能,保持当前编辑区内容到文件用 vim 打开,待 vim 编辑完保存后再把文件的内容粘贴回编辑区。
    这种方法兼容性不算差,还能获得完整的 vim 功能,但它的缺陷是编辑体验不够完美,窗口来回切,割裂感比较强。相比之下,lz 这个方法体验就要好一些。想法还是很好的,希望能进一步把功能完善下去。
    einsxiao
        47
    einsxiao  
    OP
       2019-06-09 17:58:17 +08:00
    @AlanCheng 谢谢
    @xml123 谢谢提议,vim popup 好像已经有了。你说的这些功能大部分就着源码应该比较容易添加了。不过本人太懒,因为目前功能够用,没有动力鼓搞了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 09:54 · PVG 17:54 · LAX 01:54 · JFK 04:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.