-string中正确的反斜杠定义(macOS默认通过shell写入)

93ze6v8z  于 2023-10-23  发布在  Shell
关注(0)|答案(4)|浏览(137)

我正在尝试从终端设置macOS键盘快捷键(ctrl+shift+up_arrow)。
在从系统偏好设置手动创建它之后,我发现'^$\\U2191'就是我要找的字符串。
所以:

defaults write com.hello.app NSUserKeyEquivalents -dict-add 'Test' -string '^$\\U2191'

然而,这是我运行defaults read com.hello.app NSUserKeyEquivalents得到的结果:

{"Test" = "^$\\\\\\\\U2191";}

为什么每个反斜杠重复两次?如何正确输入只有两个反斜杠?

d7v8vwbk

d7v8vwbk1#

事实证明,当涉及到特殊字符时,编辑plist文件的唯一方法就是包含特殊字符本身。

defaults write com.hello.app NSUserKeyEquivalents -dict-add 'Test' -string '^$↓'

我不知道其他键是如何处理的,但PLIST Editor是一个很好的方法,可以在第一次手动创建快捷键后快速获取这些值。

x8diyxa7

x8diyxa72#

为了添加到Luke's answer,我想出了如何设置一个包含F4键的热键:
1.进入系统设置键盘键盘快捷方式...应用快捷方式
1.手动添加您的快捷方式(例如注:这只是为了让你可以得到你按下的键的Unicode码位;一旦你有了它,你就可以自动化了。
1.读取您刚刚设置的快捷方式。
1.使用defaults domains查找应用程序的名称。例如,我在Chrome中添加了快捷方式,所以我需要使用的域是com.google.Chrome
1.运行defaults read com.google.Chrome NSUserKeyEquivalents
你应该得到这样的输出(其中“Whatever Tab You Set”将是一个类似于“New Tab”的菜单命令):

{
    "Whatever Shortcut You Set" = "@~\\Uf707";
}

1.使用以下命令运行zshecho \\Uf707 | pbcopy(注意bash可能需要不同的语法)。剪贴板现在应该包含代表F4的特殊字符。
1.运行defaults write com.google.Chrome NSUserKeyEquivalents -dict-add "Whatever Shortcut You Set" -string '@~X'
注意:上面的X不是真正的“X”;这是字符,现在应该在您的剪贴板从步骤#4。对我来说,iTerm 2将其渲染为眼球,但这是因为U+F707没有相应的可渲染字符。
1.重新启动您刚刚设置的快捷方式的应用程序。你现在应该有快捷键F4设置为一个快捷键!

mccptt67

mccptt673#

-string参数使用双引号(“)而不是单引号('):
defaults write com.hello.app NSUserKeyEquivalents -dict-add 'Test' -string "^$\\U2191"

k7fdbhmy

k7fdbhmy4#

在大多数基于Posix的语言中,包括MacOS上使用的语言,反斜杠是一个保留字符。
为了让解析器打印一个反斜杠,你需要输入两次反斜杠。
有些脚本和实用程序会假定您需要文字打印,并插入双反斜杠代替反斜杠,以便给予文字打印,而不是查找字符。
您需要查看特定工具的文档。通常有一个选项可以关闭此功能。

相关问题