Xcode重复/删除行

Sum*_*mer 122 xcode duplicate-data line

来自Eclipse并且一直习惯于复制行,发现Xcode没有这样的功能是很奇怪的.或者是吗?

我知道可以改变系统范围的键绑定,但这不是我想要的.

Tom*_*erg 101

删除一行: Ctrl-A转到行的开头,然后Ctrl-K删除它,另一次Ctrl-K删除空行.(我不经常使用Xcode,但我已经习惯了Emacs和其他类似Emacs的文本输入,并且它似乎也适用于Xcode.)

复制一行:我不知道有很多程序有这个命令,但通常我只使用复制+粘贴 - 在Xcode中它是类CUA: Ctrl+A去行的开头,Shift+来选择它,Command + C复制和Command +*V粘贴两次(一次覆盖线,一次附加到它).

(来自一直打字和编辑文本的人,经常在不同的程序中,偶尔会因为在文本输入中进行一些修正而不得不用一个愚蠢的小部件分散注意力而感到生气,他无法避免记住这些序列和习惯)

  • 这将适用于使用Cocoa进行文本输入的所有应用程序,因为它是Cocoa Text System的一个特性.还有更多这样的快捷方式,可以在这里找到它们的列表:http://www.hcs.harvard.edu/~jrus/Site/System%20Bindings.html :) (3认同)
  • 在现代 Mac 上,'yank' 应该是 ctrl + Y。 (2认同)

小智 89

重点不是使用Cmd-C/ Cmd-V快捷键.我有同样的问题来自IntelliJ,并且只能复制行Cmd-D并删除它们Cmd-Y是一个很大的节省时间.

从那以后,它一直困扰着我.但是,看起来其他人找到了可行的解决方案.

简而言之,创建一个~/Library/KeyBindings/PBKeyBinding.dict包含以下内容的文件并重新启动Xcode.

{
    "^$K" = (
        "selectLine:",
        "cut:"
    );

    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:",
        "deleteBackward:"
    );
}
Run Code Online (Sandbox Code Playgroud)

这将创建两个快捷方式:Ctrl- Shift- K用于删除当前行,Ctrl- Shift- D用于复制当前行.请注意,这只是如果你的工作使用Xcode中的自定义键绑定集.切换到"XCode默认",事情应该工作.在Snow Leopard上的XCode 3.2上测试过.

有关Mac OS X键绑定的更多信息:http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

  • 这显然不再适用于XCode> = 4 (22认同)
  • 这应该是真正的答案.顺便说一句 - 如果你想从Eclipse导入cmd -d(删除行)快捷方式,你必须先在XCode的编辑菜单下更改添加书签快捷方式 (5认同)

Ope*_*ena 77

删除像eclipse CTRL + D这样的行(在Xcode 4.5.1上测试):

首先,改变这些权利:

sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/
Run Code Online (Sandbox Code Playgroud)

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist用Xcode自己打开并添加这个新条目:

deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

重新启动Xcode并打开Xcode> Preferences> KeyBindings.找到您的宏并定义一个快捷键:

在此输入图像描述

  • 如果要添加复制行的方法,请执行相同操作,但在粘贴IDETextKeyBindingSet.plist文件中的新值时,粘贴此代码"selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward: ". (5认同)

lev*_*han 9

我尝试了键绑定解决方案,但它无法让它工作.然而,编辑我的XCode键绑定就像一个魅力.这就是我的成就.

此解决方案不会改变剪贴板的内容!

打开XCode键绑定:

替代文字

在"编辑用户脚本"对话框中:

  1. 复制"Move Line Down"脚本并重命名
  2. 复制"Move Line Down.scpt"文件,重命名脚本,在脚本编辑器中通过(双击)选择文件
  3. 编辑脚本(打开"AppleScript编辑器")并删除"删除(段落startLine到endLine)"段落.
  4. 如果您不想重新启动XCode,则似乎必须删除并重新添加脚本.确保将"输出"设置为"放弃输出",否则源文件中将出现"(null)"
  5. 我稍微修改了一些脚本以选择正确的行:

重复排队:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range

    if startLine > 1 then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        make new paragraph at beginning of paragraph (startLine) with data theText
        set selected paragraph range to {endLine + 1, endLine + endLine - startLine + 1}
    else
        beep 1
    end if
end tell
end using terms from
Run Code Online (Sandbox Code Playgroud)

重复下线:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range
    if endLine < (count paragraphs) then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        (* delete (paragraphs startLine through endLine) *)
        make new paragraph at beginning of paragraph (endLine + 1) with data theText
        set selected paragraph range to {startLine, endLine}
    else
        beep 1
    end if
end tell
end using terms from
Run Code Online (Sandbox Code Playgroud)

替代文字

  • 上面没有明确提到,有删除行、上移行和下移行的现有脚本。接受的答案有一个缺点,即它仅在您将键绑定设置为 XCode Default 时才有效。使用脚本可以让您保留自定义的键绑定,因为脚本的键绑定与 XCode 其余部分的键绑定是分开处理的。 (2认同)

Gag*_*hir 7

要在 Xcode 10.1 中删除行,请按照以下屏幕截图的步骤添加快捷键。

在此处输入图片说明


rah*_*eel 6

由于Xcode 4使用键绑定很难实现,我已经使用了Keyboard Maestro(Quickeys也应该运行良好,但它并不完全兼容Lion).例如,这是我的Keyboard Maestro快捷键(绑定到⌘-⇧-D):

http://bit.ly/thC6yf

  • "现在以36美元购买"......偷什么大声笑......哈哈哈......直到我在Maestro网站上看到这个,我认为这可能是一个很好的解决方案 (3认同)

Joa*_*kim 6

好的,所以我让它工作了一段时间然后突然间它坏了.现在我在这里结合了不同的帖子,找到了适用于XCode 6.3.1的解决方案.

  1. 转到/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Finder.

  2. 找到名为Resources的文件夹.右键单击它,按"获取信息",解锁共享和权限设置(通过按下锁定)并将其设置为"全部读取和写入".

  3. 输入文件夹并找到文件IDETextKeyBindingSet.plist.右键单击它,按"获取信息",解锁共享和权限设置(通过按下锁定)并将其设置为"全部读取和写入".

  4. 使用XCode打开文件(默认)

  5. 查找删除,右键单击并添加新行.将其命名为Delete Line.在值字段中,键入:selectLine:, deleteBackward:.(这也有重复的线路进行:selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. 启动XCode,转到首选项/键绑定并搜索删除行.设置快捷方式 请享用.


Lau*_*yer 5

我知道这个线程是很老,但我发现使用其他的解决方案BetterTouchTool,可以执行Ctrl+A,Ctrl+K,Ctrl+K通过这样的配置在BTT一个快捷键序列:

在此输入图像描述

(使用附加附加操作按钮附加第二个和第三个快捷方式)

PS:来自Eclipse,Cmd+D删除行^^


Jan*_*sen 5

我们在 Xcode 9.0 上,键绑定仍然不起作用。叹。

我发现这个要点非常有用,所以在这里重新发布以供将来参考:

  1. 打开 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. 将以下 XML 片段添加到此文件底部上方 </dict>
  3. 转到 Xcode 首选项 -> 键绑定 -> 文本选项卡 -> 滚动直到看到重复
  4. 单击复制当前行,为其添加快捷方式,例如。Cmnd+D(解决任何重复绑定)
  5. 打开 Xcode

<key>Duplication</key> <dict> <key>Duplicate Current Line</key> <string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string> <key>Duplicate Lines</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> <key>Delete Line</key> <string>selectLine:, deleteBackward:</string> </dict>