突来灵感, 设计两个 PHP 常用的快捷键. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ricebna
V2EX    PHP

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

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

    突来灵感, 设计两个 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 我不太清楚. 可以看这个下面我的回复 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 t 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   &nsp; Solana     2607 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 15:06 PVG 23:06 LAX 07:06 JFK 10:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86