不想让iBooks始终粘贴我复制的内容的“摘录”


30

我阅读了iBooks和其他一些资源,并在EverNote中收集了笔记。当我从iBooks复制文本以使其作为其他外部应用程序(例如EverNote)中的笔记时,它会一直粘贴源信息,这很烦人,每次复制粘贴后我都必须删除它们。例如:

“To bind this class using Ninject, I specify the value of the constructor parameter using the WithConstructorArgument method in the AddBindings method, as shown in Listing 6-20.”

Excerpt From: Adam Freeman. “Pro ASP.NET MVC 5.” iBooks. https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewBook?id=4CB3769B56E7D2A905C0332D53D7E31D

2
你无法避免这一点。苹果公司出于法律和版权考虑采用了这种方式。坏消息对您来说要习惯了。:-(
konqui 2014年

也许您可以构建一个Automator脚本-但我不确定您是否可以编辑文本复制+粘贴过程...
bMalum

3
当您实际上有权复制短语时,这真的很烦人:'(
Rubens Mariuzzo

1
来到这里是因为从Swift书中的示例粘贴很烂。从iBooks获得文献资料的另一个原因是Kindle上的所有编程书籍。
Dirk Bester

2
@konqui他们知道我们可以删除该权利。这不是很聪明。这是一项基本任务的烦人样板。
atilkan

Answers:


11

这篇博客文章提供了如何使用带有键盘快捷键的Automator脚本来执行此操作的示例。

在Automator中,创建一个不接收任何输入的新服务。请执行以下三个操作:

  1. 获取剪贴板的内容
  2. 运行Shell脚本
  3. 复制到剪贴板

将其放入“运行Shell脚本”操作中:

# strip out iBooks citation
sed -E -e 's/^[ ]?[0-9]* //g' | sed -E -e 's/“[ ]?[0-9]?[ ]?//g' | sed -E -e 's/”$//g'  | sed -E -e 's/^(Excerpt From).*//g'

Automator中的“删除iBooks引用”服务

保存服务后,您可以为该操作分配快捷方式,例如I,在系统偏好设置>键盘>快捷方式>服务中,。然后,如果要摆脱iBooks添加的文本,请在粘贴之前点击该快捷方式。


感谢Amir,超级乐于助人,多年来困扰着我!
GGx-恢复莫妮卡·塞利奥

真的不是真的有问题吗?如果您复制粘贴的其他内容与正则表达式匹配,该怎么办?
t0mgs

@ t0mgs,那么您只需在粘贴之前不使用分配的快捷方式
马丁

我想是合法的。谢谢!
t0mgs

5

您可以使用Keyboard Maestro触发以下AppleScript:

set original_clipboard to the clipboard
set paragraph_count to count of paragraphs of original_clipboard
-- assuming the last two paragraphs are what you want to strip out--
-- that is, the blank line and the attribution
set new_clipboard to paragraphs 1 thru -2 of original_clipboard as string
set the clipboard to new_clipboard
-- now you can paste

使用Keyboard Maestro,您将创建一个新的宏,该宏由某些击键(可能是Command-Option-V)触发,第一步是使用上述脚本“执行AppleScript”(在执行部分中)。下一步将是“粘贴”(在“剪贴板”部分中)。您将复制文本,然后单击要粘贴的文本,然后按Command-Option-V将其粘贴而没有最后两段。

只要其他宏程序知道如何执行AppleScript,它们也会起作用。


我使用了您的解决方案,但最终结果包括引号。如何摆脱这种情况,以便删除周围的引号?
Michael Jaq

您甚至不需要外部程序-将AppleScript放入自动服务,然后将自动服务设置为键盘快捷键。
Wowfunhappy

@MichaelJaq 我的答案包含Keyboard Maestro的宏,该宏也将引号引起来。
罗里·奥肯

@MichaelJaq可以在此线程的shell脚本中使用此方法,它将删除引号。将“执行AppleScript”更改为“执行Shell脚本”。此AppleScript并未删除它们,因此仅得到了部分结果。
MarkBTomlinson

3

我为ClipMenu(macOS剪贴板实用程序)创建了一个脚本,以删除不需要的信息:

return clipText.replace(/^“/, '').replace(/”\s*Excerpt.*iBooks\.\s?$/, '');

另存为 /Users/USERNAME/Library/Application Support/ClipMenu/script/action/iBooks.js


3

以下是从iBooks复制文本的步骤:

  1. 突出显示您要复制的段落。
  2. 弹出窗口将自动打开,或者您必须右键单击所选段落以打开弹出窗口。
  3. 从弹出窗口中选择“添加注释”选项。
  4. 所选/突出显示的文本将显示在左窗格中。
  5. 右键单击左侧面板中的段落,然后选择“复制”选项。

我创建了一个视频来演示其工作原理:https : //youtu.be/ZQLl_Gl9TMw

编码愉快!


>所选/突出显示的文本将显示在左窗格中。左窗格是什么?错了 没有任何左侧窗格
绿色

3

这是设置键盘Maestro宏的方法,以在从iBooks复制文本的那一刻剥离多余的文本,包括引号。

首先,创建一个名为“ iBooks特定映射”的宏组,然后在“这些应用程序中可用”中添加iBooks。(在最新的macOS版本中,该应用程序将被命名为Books而不是iBooks。)

键盘大师中的“ iBooks特定映射”组

然后创建一个名为“无引文复制”的宏。为其分配热键C。为宏执行以下操作:

  1. 剪贴板>复制
  2. 剪贴板>搜索和替换
    • 搜索:系统剪贴板
    • 用于:正则表达式(区分大小写)
      • ^“
    • 并替换为:
      • (留空)
  3. 剪贴板>搜索和替换
    • 搜索:系统剪贴板
    • 用于:正则表达式(区分大小写)
      • ”\s*Excerpt.*Books\.\s?$
    • 并替换为:
      • (留空)

这是在Keyboard Maestro中的外观:

键盘大师中的“无引证复制”宏

现在,使用该键盘快捷键复制的iBooks中的所有文本都将在两端去除多余的文本。


感谢Filip Suk对正则表达式的回答
罗里·奥凯恩

对于那些iBooks被“ Books”替换的用户,只需使用”\s*Excerpt.*Books\.\s?$
Tim N.

@TimN。谢谢。我更新了答案和屏幕截图以使用该正则表达式,因为该正则表达式对于两个应用程序名称均适用。
罗里·奥肯

1

来自Amir Raminfar的回答。如果您要不使用命令C直接复制以将内容保存到剪贴板,则这是一种方法。

只需更改Workflow即可将当前内容接收到:“ Books.app”中的“ text”,并禁用获取剪贴板的内容。


欢迎问不同。这是对先前答案的评论,而不是对独立答案的评论。不应该是它自己的答案。请参阅“ 如何回答”以获取此处提供答案的提示。-评论
fsb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.