用于复制当前文本行的Applescript()

与天地兮比寿,与日月兮齐光。这篇文章主要讲述用于复制当前文本行的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


    推荐阅读