与天地兮比寿,与日月兮齐光。这篇文章主要讲述用于复制当前文本行的Applescript?相关的知识,希望能为你提供帮助。
我想创建一个AppleScript,它将复制克拉当前所在的整条线。然而,在做了相当数量的谷歌搜索之后,我已经空了。有任何想法吗?
答案
(*
Save this as an application
Right click the application and select "Show Package Contents"
Add this to Info.plist between <
dict>
and <
/dict>
<
key>
LSBackgroundOnly<
/key>
<
true/>
launch the application with spotlight (command space)
*)tell application "System Events"
key code 123 using {command down, shift down}
key code 124 using {command down, shift down}
keystroke "c" using {command down}
end tell
另一答案下面是我为Xcode 9编写的一些代码(我最终在更新3-5-18时使用它)。我想要一个我过去25年来使用的每个文本编辑器的功能。没有选择的副本将复制当前行。代码指出插入符号的段落(行)以及是否选择了任何文本。可以修改相同的代码以包含Cut。
【用于复制当前文本行的Applescript()】我使用Keyboard Maestro执行此代码。添加以下(3)操作。您必须在执行之前禁用“Execute Applescript”宏,否则从代码中发送的Command + C将导致无限循环:禁用宏“当前宏”Execute Applescript“将AppleScript代码粘贴到编辑框中”启用宏“当前的宏”
此外,启用Xcode 9键绑定使Command + L执行选择行。使用“文本”选项卡查看较少的操作。
我还将以下内容添加到DefaultKeyBinding.dict文件中。 https://www.maketecheasier.com/fix-home-end-button-for-external-keyboard-mac/
{
/* Remap Home/End keys to be like Windows */
"UF729" = "moveToBeginningOfLine:";
/* Home */
"UF72B" = "moveToEndOfLine:";
/* End */
"$UF729" = "moveToBeginningOfLineAndModifySelection:";
/* Shift + Home */
"$UF72B" = "moveToEndOfLineAndModifySelection:";
/* Shift + End *//* page up/down and move the caret like Windows*/
"UF72C"= "pageUp:";
"UF72D"= "pageDown:";
/* Option Home/End keys Beginning/End of Document like Mac */
"~UF729" = "moveToBeginningOfDocument:";
/* Ctrl + Home */
"~UF72B" = "moveToEndOfDocument:";
/* Ctrl + End */
"$~UF729" = "moveToBeginningOfDocumentAndModifySelection:";
/* Shift + Ctrl + Home */
"$~UF72B" = "moveToEndOfDocumentAndModifySelection:";
/* Shift + Ctrl + End *//* Ctrl Home/End keys Beginning/End of Document like Mac */
"^UF729" = "moveToBeginningOfDocument:";
/* Ctrl + Home */
"^UF72B" = "moveToEndOfDocument:";
/* Ctrl + End */
"$^UF729" = "moveToBeginningOfDocumentAndModifySelection:";
/* Shift + Ctrl + Home */
"$^UF72B" = "moveToEndOfDocumentAndModifySelection:";
/* Shift + Ctrl + End */
}use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions
use application "Xcode-beta"global appNameset appName to "Xcode-beta"-- for some reason pressing command+C only works ever other time without this
--delay 0.1tell application appName
activateset theDocuments to every source document-- exit if no source documents are found
if theDocuments is equal to {} then
-- copy command must go somewhere i.e. the user might have copied an Icon.
tell application "System Events" to keystroke "c" using {command down}
do shell script "logger -t 'AS DEBUG' " &
"Applescript CopyCurrentLine - exit if no source documents are found"return -- exit script
end if-- Note:
-- window 1 is where source documents live
-- It sure would've been nice if window contained a reference to its source document but it doesn't-- if window has been edited its' name ends with " — Edited" and it needs to be trimed off
set windowName to name of window 1
if windowName ends with " — Edited" then
set windowName to my trimText(windowName, " — Edited", "end")
end if-- try to find the windows' current source document by matching window name to source document name
repeat with theDoc in theDocuments
set theDocName to name of theDocif theDocName is equal to windowName then
exit repeat -- found the document
else
set theDocName to "" -- didn't find the document
end if
end repeat-- exit if the window is not a source document
if theDocName is equal to "" then
-- copy command must go somewhere i.e. the user might have copied an Icon.
tell application "System Events" to keystroke "c" using {command down}
do shell script "logger -t 'AS DEBUG' " &
"Applescript CopyCurrentLine - exit if the window is not a source document"return -- exit script
end if--set theDoc to last source document
set docText to the text of theDoc-- get location of selected text
set {startPos, endPos} to selected character range of theDocif (my isSelectedTextRangeEmpty(theDoc)) then
-- select current line
-- I set a keybinding in Xcode so Command+L would call the Command 'Select Line'
tell application "System Events" to keystroke "l" using {command down}
end if-- copy the selection to the clipboard
set selectedText to my getSelectedText(theDoc, docText)-- restore insertion point to original location
set selected character range of theDoc to {startPos, endPos}set the clipboard to selectedText
end tellon getSelectedText(theContainer, docText)
-- get the selected text
set {startPos, endPos} to selected character range of theContainerif {endPos <
startPos} then
return ""
else
return (text startPos thru endPos) in docText
end if
end getSelectedTexton isSelectedTextRangeEmpty(theContainer)
set selectedCharacterRange to selected character range of theContainer
set {startPos, endPos} to selectedCharacterRangeif {endPos <
startPos} or ?
(selectedCharacterRange is equal to {}) or ?
(length of selectedCharacterRange is equal to 0) then
return true
else
return false
end if
end isSelectedTextRangeEmptyon trimText(theText, theCharactersToTrim, theTrimDirection)
-- "beginning", "end", "both"
set theTrimLength to the length of the theCharactersToTrim
-- TRIM BEGINNING
if the theTrimDirection is in {"beginning", "both"} then
repeat while theText begins with the theCharactersToTrim
try
set theText to characters (theTrimLength + 1) thru -1 of theText as string
on error
-- the text contains nothing but the trim characters
return ""
end try
end repeat
end if
-- TRIM ENDING
if the theTrimDirection is in {"end", "both"} then
repeat while theText ends with the theCharactersToTrim
try
set theText to characters 1 thru -(theTrimLength + 1) of theText as string
on error
-- the text contains nothing but the trim characters
return ""
end try
end repeat
end if
return theText
end trimText
推荐阅读
- 如何根据加载的文本增加我的android textview中的文本大小()
- AWS Application Load Balancer HTTP到HTTPS与EC2实例
- 使用UserRecon在超过75个社交网络中查找用户名
- 如何解决Kali Linux apt-get安装(E:无法找到软件包checkinstall)
- 如何在DOM元素上保存信息,数据属性介绍HTML5
- 从画布创建的图像具有黑色背景(HTML5)
- 每个开发人员都应了解的10条Twig技巧和基本功能
- 如何使用Typescript在Window对象上声明新属性
- 反混淆JavaScript代码并从脚本中检索源代码