Xcode重复行

在编辑菜单中有一个Duplicate命令(带有默认的快捷键⌘D ),但是(正如Halley指出的那样)在Xcode的Interface Builder部分中用于复制。

那么,您如何( 轻松地 )在Xcode 4中复制一行?


相关的问题 (与工作答案)的Xcode 3 …和哪些不适用于Xcode 4。


为什么不只是复制和粘贴?

因为它很繁琐,需要太多的杂技:

(1) :移动到行开始,然后按⇧^ E ,然后用⌘C复制,移动到新行,指定光标, 最后粘贴⌘V ;

(2)^ A (将光标设置为开始行), ^ SPACE (设置标记), ^ E (将光标设置为行尾), ⇧^ WSelect to Mark ;自定义),复制,换行等。

正如弗兰克·施罗德(在相关问题中 )所说:

整点不是使用Cmd-C / Cmd-V快捷键。

  1. 去这个包含力量黑暗面的文件夹:
    • Xcode 4.2或/Developer/Library/PrivateFrameworks/IDEKit.framework/Resources/Developer/Library/PrivateFrameworks/IDEKit.framework/Resources
    • Xcode 4.3:我不知道,也许是/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources 。 我现在没有狮子机器可用…当我有机会后,我会看这个。
  2. 打开IDETextKeyBindingSet.plist
  3. 添加一个新的字典和一个新的命令项作为下面的截图(命名他们你想要的): 编辑plist

    这就是: selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:

  4. 重新启动Xcode并转到首选项 – 键绑定,search您的命令。

  5. 设置命令的组合键: 键绑定

  6. 最后释放了Xcode上的键绑定的力量…享受它!

适用于Xcode版本7.1,7.3,7.3.1,8.0,8.1,8.2,8.3

编辑下面的文件,

 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist 

在terminal中试试这个来打开文件。

 open /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist 

附加下面的xml snipets。

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

编辑的文件的屏幕截图。

在这里输入图像说明

并遵循@海雷的第四和第五步。

今天,我为Xcode 5编写了一个非常小的插件,用于删除和复制行和select。

你可以从我的GitHub回购下载: XcodeKit插件 – https://github.com/ptfly/XcodeKit

@海蕾的回答相当不错,但是却发现了剪贴板内容的不良副作用(留下的是重复行内容),这正是我试图避免的手工复制/粘贴方法的一部分。

所以,我改变了命令序列:

 moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank: 

如果你把NSTextKillRingSize设置为1以外的东西,2 yank: s可能无法正常工作,但我敢肯定1是默认的,你必须做一些不平凡的工作来改变它(它需要添加进入~/Library/Preferences/.GlobalPreferences.plist )。

为什么复制一行? 重复整段更好。 我的序列:

重复的当前段落

 selectParagraph:, delete:, yank:, moveToBeginningOfParagraph:, yank:, moveUp:, moveToEndOfParagraph: 

删除当前段落

 selectParagraph:, delete:, moveUp:, moveToEndOfParagraph: 

在Xcode 4.6中工作正常

我想知道为什么没有人提到使用和方向键( )来移动光标并select整行(通过添加</ s> )。

我通过使用 + (而不是ctrl + A )将光标移动到行首来定期复制整行(复制),然后使用 + + (而不是ctrl + + E )来select整个行行到最后,然后复制/粘贴。

我遇到了其他线程似乎没有人使用这些键盘快捷键。 他们在OS X是全球性的,我一直在使用它们! 更less的手工杂技;)

我会考虑修改命令序列来:

 selectLine:, copy:, moveToEndOfLine:, insertNewline:, deleteToBeginningOfLine:, paste:, moveToBeginningOfLine:, deleteBackward: 

添加的deleteToBeginningOfLine维护重复行的缩进。

Xcode 7.1,仍然没有线路复制和删除的快捷方式。 这是我曾经使用过的唯一没有这种快捷方式的IDE。 而我无法想象没有这两个关键捷径的开发人员的生活。

根据我读过的内容,我为这些快捷方式设置了我的Xcode,并在以下地址发表了博文: http : //jixte.com/2016/03/30/line-duplicate-and-deletion-in-xcode-7-x /

这是如何做到的:

首先,我们需要修改一个位于Xcode.app包内的plist文件(需要编辑sudo)

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

查找<key>Insertions and Indentations</key><dict>标签下添加以下内容:

 <key>Insert New Line Below</key> <string>moveToEndOfLine:, insertNewline:</string> <key>Insert New Line Above</key> <string>moveUp:, moveToEndOfLine:, insertNewline:</string> <key>Duplicate Current Line</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> 

然后在<dict>标签下的<dict> <key>Deletions</key>部分find它们:

 <key>Delete Current Line</key> <string>selectLine:, delete:</string> <string>selectLine:, delete:</string> 

在这里输入图像说明

现在打开/重新启动Xcode,进入首选项,并转到“密钥绑定”选项卡。 使用search栏进行过滤并查找新的快捷方式。 然后点击快捷方式描述的前面为其分配一个您喜欢的快捷方式。 确保您的快捷方式不会与现有快捷方式冲突。

在这里输入图像说明

insertLineBreak至less需要在新行上复制,没有它,我在同一行上复制

这是我从我的IDETextKeyBindingSet.plist删除( CTRL + D )和重复( CMD + SHIFT + D )条目。 (在/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources中)

我只是将它们设置在Xcode 4.6.1中(基于上面和其他地方的user570753的答案)

  <key>Custimozed</key> <dict> <key>Delete Current Line</key> <string>deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:</string> <key>Duplicate Current Line</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, deleteToBeginningOfLine:, paste:, moveToBeginningOfLine:, deleteBackward:</string> </dict> 

任何希望在XCode中匹配sublime的duplicateLineUpduplicateLineDown的崇高文本用户,请将以下内容添加到您的IDETextKeyBindingSet.plist文件中

 <key>Line Duplications</key> <dict> <key>Duplicate Current Line Above</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:, moveUp:</string> <key>Duplicate Current Line Below</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> </dict> 

如果其他人被拒绝访问编辑IDETextKeyBindingSet.plist,你可以给自己的读/写权限:

 sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist 

好吧,我已经想出了这个:

 selectParagraph:, delete:, yank:, moveToBeginningOfLine:, setMark:, yank:, moveToBeginningOfLine:, moveLeft:, selectToMark: 
  • 不接触剪贴板
  • 与多行工作
  • select添加的行,所以可以多次使用而不重新select

由于我在每次XCode更新后应用此更改,因此我已经为此创build了一个脚本。 可能会造成一些伤害,但我试图使它相对安全。 它会复制文件,然后用perlreplace其副本和附加命令。

 cp /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist ~/Desktop/IDETextKeyBindingSet.plist; sudo perl -pi -e 's/\<string\>selectWord:\<\/string>/'$'\<string\>selectWord:\<\/string\>\n\t\t\<key\>Duplicate Selection\<\/key\>\n\t\t\<string\>selectParagraph:, delete:, yank:, moveToBeginningOfLine:, setMark:, yank:, moveToBeginningOfLine:, moveLeft:, selectToMark:\<\/string>/g' /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist 

编辑:小修复编辑2:更改为段落select