129

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

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

4

22 回答 22

110

删除一行Ctrl-A转到该行的开头,然后Ctrl-K删除它,再一次Ctrl-K删除空行。(我不经常使用 Xcode,但在 Emacs 和其他带有 Emacs 类绑定的文本输入中已经习惯了,而且它似乎也可以在 Xcode 中使用。)

并复制一行:我不知道有很多程序有这个命令,但通常我只使用 Copy+Paste - 在 Xcode 中它类似于 CUA: Ctrl+A转到行首,Shift+↓</kbd>选择它,Command +C复制和Command +*V粘贴两次(一次覆盖该行,一次附加到它)。

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

于 2009-02-15T18:50:33.810 回答
92

重点是不要使用Cmd-C/Cmd-V快捷方式。我有同样的问题来自 IntelliJ,并且能够复制行Cmd-D并删除它们可以Cmd-Y节省大量时间。

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

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

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

    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:",
        "deleteBackward:"
    );
}

这将创建两个快捷方式:Ctrl-用于删除当前行和- -用于Shift复制当前行。请注意,这在您使用 Xcode 中设置的自定义键绑定时才有效。切换到“XCode Default”,一切都会正常。在 Snow Leopard 上的 XCode 3.2 上测试。KCtrlShiftD

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

于 2009-10-04T14:08:14.383 回答
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/

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

deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:

在此处输入图像描述

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

在此处输入图像描述

于 2012-10-24T12:50:47.980 回答
9

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

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

打开 XCode 键绑定:

替代文字

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

  1. 复制“Move Line Down”脚本并重命名
  2. 复制“Move Line Down.scpt”文件,重命名脚本,在脚本编辑器中通过(双击)选择文件
  3. 编辑脚本(打开“AppleScript 编辑器”)并删除“删除(段落 startLine 到 endLine)”段落。
  4. 如果您不想重新启动 XCode,您似乎必须删除并重新添加脚本。确保将“输出”设置为“丢弃输出”,否则源文件中将包含“(空)”
  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

重复行向下:

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

替代文字

于 2010-10-27T10:13:33.080 回答
7

好的,所以我让这个工作了一段时间,然后突然坏了。现在我结合了这里的不同帖子,找到了适用于 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,转到首选项/键绑定并搜索删除行。设置快捷方式。享受。
于 2015-05-21T13:09:07.143 回答
7

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

在此处输入图像描述

于 2018-11-29T11:37:28.187 回答
6

由于 Xcode 4 使使用键绑定难以实现这一点,因此我使用了Keyboard MaestroQuickeys也应该可以很好地工作,但它不完全兼容 Lion)。例如,这是我的键盘大师快捷键(绑定到⌘-⇧-D):

http://bit.ly/thC6yf

于 2011-11-20T17:06:43.863 回答
5

我知道这个线程已经很老了,但是我找到了另一种使用BetterTouchTool的解决方案,您可以通过在 BTT 中进行这样的配置来在一个快捷方式中执行Ctrl+ ACtrl+ KCtrl+序列:K

在此处输入图像描述

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

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

于 2015-02-18T23:12:38.687 回答
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>

于 2017-10-17T09:11:22.140 回答
4

使用用户脚本。

有脚本可以移动和删除行。您必须为这些脚本定义键绑定(菜单Scripts -> Edit User Scripts...,在 xCode 3.2 下)。

要复制行,您必须制作自己的脚本。但这很简单!复制“下移行”脚本并删除删除选定文本的行:

delete (paragraphs startLine through endLine)
于 2010-08-22T07:03:03.633 回答
3

三击选中整行,command-c 选中,command-v 两次复制。它不是 Xcode 功能,它只是操作系统的一部分。

于 2009-02-15T18:46:18.830 回答
3

这里有一个 XCode4 行重复的解决方案

我还在 plist 中添加了行删除:

<key>Remove Line</key> <string>selectLine:, deleteBackward:</string>

于 2012-04-27T09:07:26.017 回答
3

无需修改 Xcode。你可以只使用 Xcode 扩展Linex

在此处输入图像描述

于 2017-10-20T15:05:58.143 回答
2

damien.flament的解决方案效果很好,您可能需要将输出设置为“丢弃输出”,请参见下图

用户脚本设置

PS:我不知道如何评论他的回答。

于 2010-08-25T09:48:38.667 回答
2

如上所述,关闭 XCode 并 在部分~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys内部插入以下内容:<dict><key>text</key>

    <key>^D</key>                                                                                                      
    <array>                                                                                                            
        <string>moveToLeftEndOfLine:</string>                                                                               
        <string>deleteToEndOfLine:</string>                                                                                      
    </array>                                                                                                           
    <key>^K</key>                                                                                                      
    <array>                                                                                                            
       <string>selectLine:</string>                                                                               
       <string>copy:</string>                                                                                     
       <string>moveToEndOfLine:</string>                                                                          
       <string>insertNewline:</string>                                                                            
       <string>paste:</string>                                                                                    
       <string>deleteBackward:</string>                                                                           
    </array>

启动 XCode 并享受CTRL- SHIFT-DCTRL- SHIFT- K
如果您想要CTRL-DCTRL- K,请在键定义中使用^d^k。确保文件中没有重复的键绑定。

使用 XCode 3.2 对我来说效果很好

于 2012-01-15T09:48:07.600 回答
2

这可以使用BetterTouchTool。CMD+D 将复制一行。像这样创建一个新的快捷方式:

在此处输入图像描述

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

于 2015-10-28T09:03:01.003 回答
1

如果您已经自定义了 Xcode 键绑定,则必须编辑文件:~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. 只需将两个数组(如上所述)添加到Root/text字典中。

于 2010-06-16T19:14:37.570 回答
1

三步删除当前行(看太长,但做的很快:D)

Cmd+→</kbd> : move to end of line
Cmd + Delete : delete to begin of line
Delete : delete empty line

于 2015-09-22T10:05:31.100 回答
0

对于 Xcode 6.1 到 Xcode > Preferences > KeyBindings > Text 并且有“删除到行尾”并分配你想要的键。

于 2015-01-17T22:58:48.290 回答
0

XCodePlus 删除线插件,是一个为您执行此操作的 XCode。它预装了 Alcatraz 包管理器...

https://github.com/payliu/XcodePlus

于 2015-09-23T11:29:47.860 回答
0

从 Xcode 9 开始,仍然没有内置的方法来复制行。自定义键绑定似乎有问题。

更新: Xcode 10.0 beta 6 (10L232m) 是一样的。

于 2017-10-17T12:37:56.610 回答
0

去这个地址:

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

然后将 IDETextKeyBindingSet.plist 文件复制到某个位置,然后打开复制的文件并插入

selectLine:, copy:, paste:, paste: like this picture 在此处输入图像描述 并保存并替换此地址中的复制文件 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

然后重新启动 xcode,打开 xcode 首选项,转到键绑定选项卡,搜索重复行(自定义)并为其定义短键,如下图所示

[1]:https://i.stack.imgur.com/UTeZu.png

于 2019-10-21T10:31:47.453 回答