vim 式上下左右模拟, mac 和 win

2018-07-14 18:46:46 +08:00
 quilt

虽然自己的 vim 水平只能上下移动,但是依然很喜欢手不离开键盘就能实现光标移动。所以就想能够在所有程序中都能实现,但是虽然很多应用程序都有 vim 插件,毕竟不通用。

后来就发现了 touchcursor,在 win 平台能实现 space+相应按键实现。也算是曲线救国了。

后来就一直寻思 mac 平台可不可以,发现 hammerspoon,又对照着 lua 的语法手册写了个简单的实现。今天更新软件时突然想加个空格加 Y 键实现鼠标右键,发现看不懂之前写的了,所以寻思着找个觉得这个思路可用的同学告诉我一下怎么弄。

最后附上 hammerspoon 的 init.lua https://gist.github.com/zzquilt/f39bb858d7d5c954349d3b7edadfbad0

也欢迎大佬指出不足和能改进的地方。

2825 次点击
所在节点    程序员
8 条回复
caixiexin
2018-07-14 19:20:49 +08:00
Windows 的话,用 autohot key 就行了
或者买一把 poker2 可编程键盘,就能自编程实现 vim 风格移动光标
caixiexin
2018-07-14 19:24:28 +08:00
以前用过的 ahk 脚本,希望对你有帮助:


;使用 space 作为修饰键实现 vim 风格,同时保证 space 能正常使用
space::Send, {space}

;使 win10 语言切换能正常使用
#Space::
Send #{Space}
return

;vim 风格按键
space & h::Send {left}
space & j::
IfWinNotActive ,ahk_exe ONENOTE.EXE
{
Send {down}
Return
}
Else
{
;解决 onenote 下上下键映射无效的问题
Send ^{down}
Return
}
space & k::
IfWinNotActive ,ahk_exe ONENOTE.EXE
{
Send {up}
Return
}
Else
{
Send ^{up}
Return
}
space & l::Send {right}
space & i::Send {home}
space & ,::Send {end}

#!i::
Send !{Insert}
return
#!h::
Send !{left}
return
#!l::
Send !{right}
return

#+h::
Send +{left}
return
#+l::
Send +{right}
return
#+j::
Send +{down}
return
#+k::
Send +{up}
return
#+i::
Send +{home}
return
#+,::
Send +{end}
return

space & f::
Send {Enter}
return

space & c::
Send +{End}
Send {Del}
return

space & d::
Send {Home}
Send +{End}
Send {Del}
Send {Down}
Send {Home}
return

space & x::
Send {Del}
return
space & BackSpace::
Send {Del}
return

space & v::
Send {Home}
Send +{End}
return
space & y::
Send {Home}
Send +{End}
Send ^{c}
return
space & p::
Send +{Ins}
return
;合并两行
;space & space::
; Send {End}
; Send {Del}
;return
space & o::
Send {End}
Send {Enter}
return
space & u::
Send ^{z}
return


space & n::
Send {PgDn}
return
space & m::
Send {PgUp}
return
quilt
2018-07-14 22:23:06 +08:00
@caixiexin 我已经用 touchcursor 实现了,就是 mac 平台差个 space+y 实现鼠标右键。其实挺讨厌写脚本的,就像 mac 下的 lua,过一段时间,再看和天书似的
LudwigWS
2018-07-14 23:53:56 +08:00
键盘控制光标,感觉不是很方便啊。理想的方式是能够捕捉到程序的各个能够点击的组件,然后通过组合键模拟点击,以前似乎看到过这方面的软件。
yanaraika
2018-07-14 23:54:58 +08:00
买个带小红点的键盘吧,这么模拟效率不高
sqsgalaxys
2018-07-15 00:24:45 +08:00
Mac 全局输入区域的 Emacs 快捷键吧? c+n j c+p k c+f l c+b h c+a home c+e end c+d delete ..
deepkolos
2018-07-15 10:48:49 +08:00
还有一种选择: 制作一个 teensy usb to usb 转接器, 全平台兼容, 任意自定义键盘组合键

https://geekhack.org/index.php?topic=69169
quilt
2018-07-15 20:12:30 +08:00
@deepkolos 我觉得硬件总是不方便,不过也是一个方案
@sqsgalaxys win 平台可就不存在了,现在主要是在 win 平台开发,所以还是想个基本一致的体验
我现在也就差个 mac 平台 space+y 实现鼠标右键,实在是不想去看 lua 的写法了😢

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

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

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

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

© 2021 V2EX