Xcode重复/删除行

时间:2009-02-15 18:43:41

标签: xcode line duplicate-data

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

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

22 个答案:

答案 0 :(得分:99)

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

复制一行:我不知道有多少程序有这个命令,但通常我只是使用Copy + Paste - 在Xcode中它是CUA样的: Ctrl + A 转到该行的开头, Shift + 选择它,命令 + C 复制并命令 + * V 粘贴两次(一旦覆盖线并且一旦附加到它上面。)

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

答案 1 :(得分:90)

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

从那以后,它一直困扰着我。但是,看起来其他人发现solution有效。

简而言之,使用以下内容创建文件~/Library/KeyBindings/PBKeyBinding.dict并重新启动Xcode。

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

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

这将创建两个快捷方式: Ctrl - Shift - K 用于删除当前行和 Ctrl - Shift - D 用于复制当前行。请注意,如果您使用Xcode中的自定义键绑定设置 NOT ,这将。切换到“XCode默认”,事情应该工作。在Snow Leopard上的XCode 3.2上测试。

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

答案 2 :(得分:75)

删除像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:

enter image description here

重启Xcode并打开Xcode&gt;偏好&gt;键绑定。找到您的宏并定义一个快捷键:

enter image description here

答案 3 :(得分:9)

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

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

打开XCode键绑定:

alt text

在“编辑用户脚本”对话框中

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

    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
    

    alt text

答案 4 :(得分:6)

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

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

  2. 找到名为Resources的文件夹。右键单击它,按“获取信息”,解锁共享&amp;权限设置(通过按下锁定)并将其设置为Read&amp;为所有人写。

  3. 输入文件夹并找到文件IDETextKeyBindingSet.plist。右键单击它,按“获取信息”,解锁共享&amp;权限设置(通过按下锁定)并将其设置为Read&amp;为所有人写。

  4. 使用XCode(默认)

  5. 打开文件
  6. 查找删除,右键单击并添加新行。将其命名为Delete Line。在值字段中,键入:selectLine:, deleteBackward:。 (这也可以用于重复行:selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:

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

答案 5 :(得分:6)

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

http://bit.ly/thC6yf

答案 6 :(得分:5)

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

enter image description here

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

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

答案 7 :(得分:4)

使用用户脚本。

还有用于移动和删除行的脚本。您必须为这些脚本定义关键绑定(菜单脚本 - &gt; 编辑用户脚本... ,在xCode 3.2下)。

要复制行,您必须制作自己的脚本。但它很简单!复制“Move Line Down”脚本并删除删除所选文本的行:

delete (paragraphs startLine through endLine)

答案 8 :(得分:4)

三次单击以选择整行,使用command-c选择并命令-v两次以复制它。它不是Xcode功能,它只是操作系统的一部分。

答案 9 :(得分:3)

无需修改Xcode。您只需使用Xcode扩展程序Linex

即可

enter image description here

答案 10 :(得分:3)

here

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

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

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

答案 11 :(得分: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 - D CTRL - SHIFT - ķ
。 如果你想要 CTRL - D CTRL - K ,请使用^d和{{1}而是在键定义中。确保文件中没有重复的键绑定。

使用XCode 3.2可以正常使用

答案 12 :(得分:2)

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

Userscripts setting

P.S:我不知道如何评论他的回答。

答案 13 :(得分:2)

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

enter image description here

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

答案 14 :(得分:1)

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

答案 15 :(得分:1)

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

Cmd + :移至行尾
Cmd + 删除:删除行开头
删除:删除空行

答案 16 :(得分:1)

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

enter image description here

答案 17 :(得分:1)

我们在Xcode 9.0上,键绑定仍无法正常工作。叹息。

我发现this gist非常有用,所以请将其重新发布在此处以供将来参考:

  1. 打开/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. 将以下XML代码段添加到底部</dict>
  3. 上方的此文件中
  4. 转到Xcode首选项 - &gt;键绑定 - &gt;文字标签 - &gt;滚动直至看到“复制”
  5. 点击复制当前行,为其添加快捷方式,例如。 Cmnd + D(解决任何重复绑定)
  6. 打开Xcode
  7. <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>

答案 18 :(得分:0)

转到此地址:

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

,然后在某些位置复制IDETextKeyBindingSet.plist文件,然后打开复制的文件并插入

selectLine :,复制:,粘贴:,粘贴: 喜欢这张照片 enter image description here  并将其保存并替换复制的文件到该地址/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

然后重新启动xcode,打开xcode偏好设置,转到“快捷键”选项卡,搜索重复的行(自定义)并为其定义快捷键,如下面的图像

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

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

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

https://github.com/payliu/XcodePlus

答案 21 :(得分:0)

对于Xcode 6.1来到Xcode&gt;偏好&gt; <键绑定>文本 还有&#34;删除到行尾&#34;并指定一个你想要的密钥。