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

突来灵感, 设计两个 PHP 常用的快捷键.

  •  
  •   ricebna · 2023-10-20 00:51:35 +08:00 · 1869 次点击
    这是一个创建于 435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    突来灵感, 设计两个 PHP 常用的快捷键.

    PHP 的箭头符号访问方法或属性, 这个设计非常不好, 这个符号需要按两个组合键,并且距离都很远. 受够了这样的设计, 于是我把它通过 Karabiner 设计为快速敲两下减号 - 实现 ->, 完成后觉得非常 OK. 但是用了两天之后发现不够完美, 因为经常使用命令行, 很多参数是 --p 这样的形式, 敲快了就会误触发为 ->, 而刻意敲慢也终究不够随意.

    于是我的天才想法诞生了。

    换一个思路,敲 - = 为 -> ,这样多快多慢都无影响了,原本的 - - 也不受影响了。 另外顺带的,设置 = - 为 => ,对应 PHP 的数组箭头,PHP 这两个最常用的符号设计成最难敲的符号,真不知道怎么想的。

    • = 和 = - 都不是常用的符号,后者根本没有。可以放心了,完美。
    21 条回复    2023-11-09 12:06:23 +08:00
    jianchang512
        1
    jianchang512  
       2023-10-20 01:34:16 +08:00   ❤️ 1
    java8 以上支持的箭头函数也是用 “->”
    js es6 支持的箭头函数是“=>”
    go 中 chan 通道使用反向箭头 “<-”

    哪个语言都逃避不了
    ricebna
        2
    ricebna  
    OP
       2023-10-20 01:42:05 +08:00   ❤️ 1
    @jianchang512
    go 的 <- 让我马上想到了可以把 - 0 设为 <-, 哈哈, 正好也是反向, 非常的哇塞🤣
    qa2080639
        3
    qa2080639  
       2023-10-20 08:50:19 +08:00
    还有$ 我是用右下角的 ctrl 和菜单模拟 反正几乎用不到这块区域
    PRStarDust
        4
    PRStarDust  
       2023-10-20 09:00:13 +08:00
    这个想法不错,我也试试
    Lirika
        5
    Lirika  
       2023-10-20 09:17:50 +08:00
    用什么修改的?
    ZackKing
        6
    ZackKing  
       2023-10-20 10:45:11 +08:00
    我还以为一键 CV
    shellus
        7
    shellus  
       2023-10-20 11:01:28 +08:00
    我觉得你需要 github copliot ,这样就不用敲很多代码了,也不用敲很多符号了
    ricebna
        8
    ricebna  
    OP
       2023-10-20 12:01:58 +08:00
    @Lirika mac 下 Karabiner 神器, Windows 我不太清楚. 可以看这个下面我的回复 https://www.v2ex.com/t/981735#reply22
    ricebna
        9
    ricebna  
    OP
       2023-10-20 12:04:07 +08:00
    @qa2080639 我是直接 空格+4, 空格加上面一排代替 shift, 非常好用.
    箭头这个, 一觉醒来发现, idea 的最新版, 已经自动实现在对象之后敲 - 变成 -> 了, 数组也是 = 变成 => .  🤣
    qeqv
        10
    qeqv  
       2023-10-20 14:49:01 +08:00
    。。。规则怎么写的,我看了半天文档就是实现不出来
    qeqv
        11
    qeqv  
       2023-10-20 14:58:08 +08:00
    啊,没事了,原来要把组合按键延迟调高一点
    basic.simultaneous_threshold_milliseconds = 100ms
    ricebna
        12
    ricebna  
    OP
       2023-10-20 22:52:38 +08:00
    @qeqv

    simultaneous_threshold_milliseconds 我试了下, 貌似无法定义很长的时间?, 我用 to_delayed_action_delay_milliseconds 直接定义为 5s 超长, 因为这是两个不同的键, 延迟尽量长一点不影响, 这样也没有紧迫感.

    {
    "title": "Magic -= to ->, =- to => in 5 seconds",
    "rules": [
    {
    "description": "Magic -= to ->, =- to => in 5 seconds",
    "manipulators": [
    {
    "type": "basic",
    "from": {
    "key_code": "equal_sign",
    "modifiers": {
    "optional": ["any"]
    }
    },
    "to": [
    {
    "key_code": "period",
    "modifiers": ["shift"]
    }
    ],
    "conditions": [
    {
    "type": "variable_if",
    "name": "equal_sign to be arrow",
    "value": 1
    }
    ]
    },
    {
    "type": "basic",
    "from": {
    "key_code": "hyphen",
    "modifiers": {
    "optional": ["any"]
    }
    },
    "to": [
    {
    "key_code": "period",
    "modifiers": ["shift"]
    }
    ],
    "conditions": [
    {
    "type": "variable_if",
    "name": "hyphen to be arrow",
    "value": 1
    }
    ]
    },
    {
    "type": "basic",
    "parameters": {
    "basic.to_delayed_action_delay_milliseconds": 5000
    },
    "from": {
    "key_code": "hyphen"
    },
    "to": [
    {
    "set_variable": {
    "name": "equal_sign to be arrow",
    "value": 1
    }
    },
    {
    "key_code": "hyphen"
    }
    ],
    "to_delayed_action": {
    "to_if_invoked": [
    {
    "set_variable": {
    "name": "equal_sign to be arrow",
    "value": 0
    }
    }
    ],
    "to_if_canceled": [
    {
    "set_variable": {
    "name": "equal_sign to be arrow",
    "value": 0
    }
    }
    ]
    }
    },
    {
    "type": "basic",
    "parameters": {
    "basic.to_delayed_action_delay_milliseconds": 5000
    },
    "from": {
    "key_code": "equal_sign"
    },
    "to": [
    {
    "set_variable": {
    "name": "hyphen to be arrow",
    "value": 1
    }
    },
    {
    "key_code": "equal_sign"
    }
    ],
    "to_delayed_action": {
    "to_if_invoked": [
    {
    "set_variable": {
    "name": "hyphen to be arrow",
    "value": 0
    }
    }
    ],
    "to_if_canceled": [
    {
    "set_variable": {
    "name": "hyphen to be arrow",
    "value": 0
    }
    }
    ]
    }
    }
    ]
    }
    ]
    }
    qeqv
        13
    qeqv  
       2023-10-21 00:46:29 +08:00
    我的实现和你不太一样,用的是 simultaneous ,所以需要 basic.simultaneous_threshold_milliseconds 这个值调高一点
    -------------------------------------
    {"title": "=- to => | -= to ->","rules": [{"description": "=- to => | -= to ->","manipulators": [

    {"type": "basic",
    "from": {
    "simultaneous": [{"key_code": "equal_sign"}, {"key_code": "hyphen"}],
    "simultaneous_options": {"key_down_order": "strict", "key_up_order": "strict"}
    },
    "to": [
    {"key_code": "equal_sign"},
    {"key_code": "period", "modifiers": ["left_shift"]}
    ]},

    {"type": "basic",
    "from": {
    "simultaneous": [{"key_code": "hyphen"}, {"key_code": "equal_sign"}],
    "simultaneous_options": {"key_down_order": "strict", "key_up_order": "strict"}
    },
    "to": [
    {"key_code": "hyphen"},
    {"key_code": "period", "modifiers": ["left_shift"]}
    ]}

    ]}]}
    ricebna
        14
    ricebna  
    OP
       2023-10-21 10:10:49 +08:00
    @qeqv
    你的写法我也不太清楚是否对, 能实现就 OK. 还有就是时间尽量设长一点 5s 10s 最好, 这样输入就没有紧迫感.
    另外我用 Karabiner 改的键全部是键与键或组合的映射, 但其实我更想一个键能输入两个键的内容, 比如键入 a, 输入 ab. 这块还没有研究过, 不知道你有没有研究过. Karabiner 的语法并不好写, 所以测试很难.
    way2create
        15
    way2create  
       2023-10-21 22:58:23 +08:00
    我现在输入->是通过
    1-
    2ALT+-
    输入=>是
    1=
    2ALT+=
    qeqv
        16
    qeqv  
       2023-10-22 20:14:44 +08:00
    @ricebna 按 a 输入 ab 很简单,反正满足 from 里面的按键需求就会输入 to 里面的内容了
    {"type": "basic",
    "from": { "key_code": "a" },
    "to": [ { "key_code": "a" }, { "key_code": "b"} ]
    }
    lyxxxh2
        17
    lyxxxh2  
       2023-10-23 17:05:47 +08:00
    =- 和 -> 区别就是少按了下键盘

    ->可以起码带点"指向"的意思, =- ?
    看着懵逼 只能强行适应。
    为少按一下而反人类,不合适。

    js:
    []
    .filter(v => v.type === 2)
    .map(v => v.id)

    php:
    collection([]) // (laravel collection)
    ->filter(fn($v) => $v->type === 2)
    ->map(fn($v) => $v->id);


    不仅仅是.,全都比不过 js 简洁。
    我最喜欢. 用的次数太多了。
    如果$能取消最好,哈哈 想想而已。
    ricebna
        18
    ricebna  
    OP
       2023-10-28 17:41:20 +08:00
    @lyxxxh2 "=-" 映射的是 "=>", "-=" 才是 "->". 仅仅是为了将最常用的这两组符号挨在一起, 因为尖括号 ">" 在键盘区下面, 需要挪动手掌不方便.
    "=-" 映射为 "=>" 也仅仅是因为他们紧紧挨着, 如果右侧还有一个按钮,用来代替 ">" 那就会显得更自然, 但右侧是 delete 了, 没键了 😄.
    ricebna
        19
    ricebna  
    OP
       2023-10-28 17:43:00 +08:00
    @qeqv 嗯, 也差不多想到了, to 里面本就可以放多个去向, 这样就能实现更多功能了.
    luoyou1014
        20
    luoyou1014  
       2023-11-04 21:18:30 +08:00
    如果用的是 vscode 的话,可以装下我开发的插件「令」

    https://marketplace.visualstudio.com/items?itemName=luo-rori.ling

    -> 快捷命令:alt+.
    => 快捷命令:alt+shift+.
    跳转行尾增加分号命令:alt+;

    还有很多其他命令:
    alt+;跳转到行尾加;号
    alt+ctrl+;跳转到行尾加;号,但光标位于分号前
    alt+,跳转至行尾或分号前,添加,号
    alt+ctrl+,跳转至行尾或分号前,添加,号,但光标位于逗号前
    alt+shift+;跳转至行尾或分号前,添加:号
    alt+shift+/跳转至行尾或分号前,添加?号
    alt+=跳转至行尾或分号前,添加=号
    alt+.跳转至行尾或分号前,typescript,javascript,vue,python 添加.号,php 添加->号
    alt+shift+.跳转至行尾或分号前,添加=>号
    alt+[跳转至行尾或分号前,添加加[]
    alt+shift+{跳转至行尾或分号前,添加{}
    alt+shift+9 跳转至行尾或分号前,添加()
    alt+shift+0 跳转至行尾或分号前,补充),若当前行没有(,则不做任何操作
    alt+q alt+e 将当前编辑文件显示在资源管理器中
    loginv2
        21
    loginv2  
       2023-11-09 12:06:23 +08:00
    以前专门做过一个 ahk 脚本 按三次 4 直接输入$,一般情况下没人会按三次。多次也是按住 不是点击
    ```
    $4::
    if pressesCount > 0 ; > 0 说明 SetTimer 已经启动了,按键次数递增
    {
    pressesCount += 1
    return
    }
    ;否则,这是新一系列按键的首次按键。将计数设重置为 1 ,并启动定时器:
    pressesCount = 1
    SetTimer, WaitKey, 400 ;在 400 毫秒内等待更多的按键。
    return

    WaitKey:
    SetTimer, WaitKey, off
    if pressesCount = 1 ;该键已按过一次。
    {
    Gosub singleClick
    }

    else if pressesCount = 2 ;该键已按过两次。
    {
    Gosub doubleClick
    }

    else if pressesCount = 3
    {
    Gosub trebleClick
    }
    ;不论上面哪个动作被触发,将计数复位以备下一系列的按键:
    pressesCount = 0
    return

    singleClick:
    send 4
    return

    doubleClick:
    send 44
    return

    trebleClick:
    send $
    return
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2514 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:34 · PVG 09:34 · LAX 17:34 · JFK 20:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.