Xcode重复行
在编辑菜单中有一个Duplicate
命令(带有默认的快捷键⌘D ),但是(正如Halley指出的那样)在Xcode的Interface Builder部分中用于复制。
那么,您如何( 轻松地 )在Xcode 4中复制一行?
相关的问题 (与工作答案)的Xcode 3 …和哪些不适用于Xcode 4。
为什么不只是复制和粘贴?
因为它很繁琐,需要太多的杂技:
(1) :移动到行开始,然后按⇧^ E ,然后用⌘C复制,移动到新行,指定光标, 最后粘贴⌘V ;
或(2) : ^ A (将光标设置为开始行), ^ SPACE (设置标记), ^ E (将光标设置为行尾), ⇧^ W ( Select to Mark
;自定义),复制,换行等。
正如弗兰克·施罗德(在相关问题中 )所说:
整点不是使用Cmd-C / Cmd-V快捷键。
- 去这个包含力量黑暗面的文件夹:
- 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
。 我现在没有狮子机器可用…当我有机会后,我会看这个。
- Xcode 4.2或
- 打开
IDETextKeyBindingSet.plist
。 -
添加一个新的字典和一个新的命令项作为下面的截图(命名他们你想要的):
这就是:
selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:
-
重新启动Xcode并转到首选项 – 键绑定,search您的命令。
-
设置命令的组合键:
-
最后释放了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的duplicateLineUp和duplicateLineDown的崇高文本用户,请将以下内容添加到您的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