Skip to content

VimEverywhere 全键盘工作流

About 910 wordsAbout 3 min

Hammerspoonkarabiner

2024-01-19

今天给大家介绍两个我在 MacBook 上面用的最多的、超级好用的软件,做按键映射。

  • Hammerspoon
  • Karabiner

一、Karabiner

1.1、Karabiner 简介

Karabiner 是 Mac 上面好用的按键映射的工具,它可以实现单个按键的映射,像是 Mac 键盘和 Win 键盘配置不同的 Config,然后在 Win 的 Config 里面将 Cmd 映射成 Alt, Alt 映射成 command,这样就方便很多;还有一种就是复杂按键的映射,比如将 Command + Ctrl + Shift +Alt 映射到 Caps 上面,因为 Caps 我们用的很少。

下面是我 Karabiner 的配置文件,欢迎大家点赞收藏: Karabiner Config

1.2、Karabiner 使用方法

接下来我们说一下如何使用 Karabiner ,它是以 Json 的格式来写配置文件的。

如果我们想实现:空格键在按下的时候映射成 Hyper 键, 如果是单独按下的话还是空格键。

但是按键快了的话,会出现误触的情况, 第二个问题就是在这样子映射过后,明显能够感觉到输入的速度变慢了。现在再看输入的速度了,还有什么好的方式来解决现在输入速度比较慢的情况。

最后使用的是Keychron Q8 的一个额外按键映射成 Caps,用 Caps 来做 Hyper 键, 还是有点不是特别的满意,如果 spacebar 能解决上面的两个问题的话,那就很 nice 了,

但是这里的 to_if_alone 还是很重要的一个知识点。

因为大多数情况下是一个左手用键盘,右手用鼠标来操作。

二、HammerSpoon

2.1、什么是HammerSpoon?

Info

What is Hammerspoon?

This is a tool for powerful automation of OS X. At its core, Hammerspoon is just a bridge between the operating system and a Lua scripting engine.

What gives Hammerspoon its power is a set of extensions that expose specific pieces of system functionality, to the user. With these, you can write Lua scripts to control many aspects of your OS X environment.

我从 Hammerspoon 的 Github 仓库摘抄了一小部分,从中不难看出我们为什么要用 Hammerspoon, Hammerspoon 是 Lua 和 Mac 系统操作之间的一个桥梁,可以用 Lua 脚本来操作 Mac。

这一点最能体检的就是 Mac 电脑按键的控制,很方便的实现了按键与程序之间的映射、实现一些自动化流程。比如使用 Hyper + c 可以打开 Chrome 浏览器,使用 Hyper+e 可以打开 Iterm2;

不仅实现了按键的快速映射,Hammerspoon 还可以快速迁移,Hammerspoon 的配置文件在~/.hammerspoon 目录下面,对于一台新的电脑,只需要下载 Hammerspoon,然后在把.hammerspoon 文件夹替换掉,就可以实现无缝迁移。

下面是我的 Hammerspoon 的 github 地址,欢迎大家点赞转发: Hammerspoon Config

Hammerspoon 是以 Lua 写的,所以要想在此基础上修改的话,需要掌握 Lua 的语法,这个也是我下一步需要尝试的。

2.2、HammerSpoon问题总结

2.2.1、在升级VS Code之后HammerSpoon报错

Some applications have alternate names which can also be checked if you enable Spotlight support with `hs.application.enableSpotlightForNameSearches(true)`.
2025-03-27 20:48:57: -- Loading extension: window
2025-03-27 20:48:57: 20:48:57 ERROR:   LuaSkin: hs.hotkey callback: /Users/dengc4r/.hammerspoon/switch-app.lua:109: attempt to call a nil value (method 'mainWindow')
stack traceback:
	/Users/dengc4r/.hammerspoon/switch-app.lua:109: in function 'toggle_application'
	/Users/dengc4r/.hammerspoon/switch-app.lua:94: in function </Users/dengc4r/.hammerspoon/switch-app.lua:92>

Changelog

10/10/25, 3:04 PM
View All Changelog
  • 1ee1e-feat(wiki): algo -on

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!