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

2023-10-20 00:51:35 +08:00
 ricebna

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

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

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

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

1862 次点击
所在节点    PHP
21 条回复
jianchang512
2023-10-20 01:34:16 +08:00
java8 以上支持的箭头函数也是用 “->”
js es6 支持的箭头函数是“=>”
go 中 chan 通道使用反向箭头 “<-”

哪个语言都逃避不了
ricebna
2023-10-20 01:42:05 +08:00
@jianchang512
go 的 <- 让我马上想到了可以把 - 0 设为 <-, 哈哈, 正好也是反向, 非常的哇塞🤣
qa2080639
2023-10-20 08:50:19 +08:00
还有$ 我是用右下角的 ctrl 和菜单模拟 反正几乎用不到这块区域
PRStarDust
2023-10-20 09:00:13 +08:00
这个想法不错,我也试试
Lirika
2023-10-20 09:17:50 +08:00
用什么修改的?
ZackKing
2023-10-20 10:45:11 +08:00
我还以为一键 CV
shellus
2023-10-20 11:01:28 +08:00
我觉得你需要 github copliot ,这样就不用敲很多代码了,也不用敲很多符号了
ricebna
2023-10-20 12:01:58 +08:00
@Lirika mac 下 Karabiner 神器, Windows 我不太清楚. 可以看这个下面我的回复 https://www.v2ex.com/t/981735#reply22
ricebna
2023-10-20 12:04:07 +08:00
@qa2080639 我是直接 空格+4, 空格加上面一排代替 shift, 非常好用.
箭头这个, 一觉醒来发现, idea 的最新版, 已经自动实现在对象之后敲 - 变成 -> 了, 数组也是 = 变成 => .  🤣
qeqv
2023-10-20 14:49:01 +08:00
。。。规则怎么写的,我看了半天文档就是实现不出来
qeqv
2023-10-20 14:58:08 +08:00
啊,没事了,原来要把组合按键延迟调高一点
basic.simultaneous_threshold_milliseconds = 100ms
ricebna
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
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
2023-10-21 10:10:49 +08:00
@qeqv
你的写法我也不太清楚是否对, 能实现就 OK. 还有就是时间尽量设长一点 5s 10s 最好, 这样输入就没有紧迫感.
另外我用 Karabiner 改的键全部是键与键或组合的映射, 但其实我更想一个键能输入两个键的内容, 比如键入 a, 输入 ab. 这块还没有研究过, 不知道你有没有研究过. Karabiner 的语法并不好写, 所以测试很难.
way2create
2023-10-21 22:58:23 +08:00
我现在输入->是通过
1-
2ALT+-
输入=>是
1=
2ALT+=
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
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
2023-10-28 17:41:20 +08:00
@lyxxxh2 "=-" 映射的是 "=>", "-=" 才是 "->". 仅仅是为了将最常用的这两组符号挨在一起, 因为尖括号 ">" 在键盘区下面, 需要挪动手掌不方便.
"=-" 映射为 "=>" 也仅仅是因为他们紧紧挨着, 如果右侧还有一个按钮,用来代替 ">" 那就会显得更自然, 但右侧是 delete 了, 没键了 😄.
ricebna
2023-10-28 17:43:00 +08:00
@qeqv 嗯, 也差不多想到了, to 里面本就可以放多个去向, 这样就能实现更多功能了.
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 将当前编辑文件显示在资源管理器中

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/983631

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX