Xcode重复行

Bla*_*laz 117 keyboard-shortcuts duplication key-bindings xcode4 xcode5

一个Duplicate在编辑菜单(用默认的快捷命令D),但它(如哈雷指出的)意味着在Xcode中的Interface Builder的部分重复.

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


Xcode 3的相关问题(带有工作答案)......并且不适用于Xcode 4.


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

因为它很乏味并且需要太多的手工杂技:

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

(2) :( ^A设置光标到行开始),^SPACE(设置标记),^E(设置光标到行结束),⇧^W(Select to Mark;自定义),复制,换行等.

正如FrankSchröder(在相关问题中)所说:

重点不是使用Cmd-C/Cmd-V快捷方式.

Hai*_*lei 167

  1. 转到包含力的黑暗面的文件夹:

    • Xcode 4.2或之前: /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并转到Preferences - Key Bindings,搜索您的命令.

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

  6. 终于在Xcode上释放了键绑定的强大功能......尽情享受吧!

  • 大thanx!对于懒惰用户 - **selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:** (28认同)
  • 如果你的xCode崩溃了!关闭xCode,用任何文本编辑器打开文件并添加你的字典:`<key>自定义</ key> <dict> <key>复制当前行</ key> <string> selectLine:,copy:,moveToEndOfLine:,insertNewline: ,paste:,deleteBackward:</ string> </ dict>` (14认同)
  • @MichalStefanow,你写的位置实际上是**// Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources`别名指向的位置**.否则,我已经成功地遵循了Halley在4.3.2版本上的步骤...我建议您备份原始文件,然后在Xcode本身打开它(而不是在TextEdit中).另外,关于权限:在Finder中更改它们(仅针对文件本身;不需要递归)工作得很好. (3认同)
  • 适用于XCode 4.4.1!更改权限时遇到一些麻烦(finder或chmod 777并从终端开始使用sudo因某些原因无效).我将文件复制到其他地方,编辑它,并覆盖原来的文件,这是有效的. (2认同)
  • 我是android dev,当我开始尝试ios dev时,我意识到android studio(或intellij idea)是多么好. (2认同)

Zum*_*med 71

添加重复行适用于Xcode版本7.1,7.3,7.3.1 8.0,8.1,8.2,8.3和9.0,9.1,9.2,10.0,10.1以及

提供persiomission来编辑以下文件,大多数时候OS不允许您编辑文件.

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)

编辑以下文件,

open /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
Run Code Online (Sandbox Code Playgroud)

通过编写以下命令.

<key>Customized</key>
<dict>
  <key>Duplicate Lines</key>
  <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
  <key>Duplicate Current Line</key>
  <string>selectParagraph:, delete:, undo:, moveRight:, yankAndSelect:, moveToBeginningOfLine:, moveToEndOfLine:</string>
</dict>
Run Code Online (Sandbox Code Playgroud)

附加以下xml snipets.

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)

已编辑文件的屏幕截图.

在此输入图像描述

然后重新启动Xcode并转到Preferences - Key Bindings,搜索我们输入的命令(Duplicate Lines&Duplicate Current Line).

在此输入图像描述

而已.

  • 这些是mac用户需要的书呆子答案! (2认同)

pee*_*ess 17

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

你可以从我的GitHub repo下载它: XcodeKit插件 - https://github.com/ptfly/XcodeKit


Kel*_*lan 13

@Hailei的回答相当不错,但是有一个令人遗憾的副作用,即破坏剪贴板内容(留下它填充了重复行的内容),这正是我试图避免的手动复制/粘贴方法的一部分.

所以,我将命令序列更改为:

moveToBeginningOfLine:,
deleteToEndOfLine:,
yank:,
insertNewline:,
moveToBeginningOfLine:,
yank:
Run Code Online (Sandbox Code Playgroud)

yank:如果你NSTextKillRingSize设置了除了之外的东西,2 s可能无法正常工作1,但我很确定1是默认的,你必须做一些非平凡的工作来改变它(它需要添加一个条目~/Library/Preferences/.GlobalPreferences.plist).

  • 如果修改了这个修改:`moveToBeginningOfLine:,deleteToEndOfLine:,yank:,insertNewline:,setMark:,moveToBeginningOfLine:,selectToMark:,yank:` (5认同)

Ryc*_*chu 11

好的,我想出了这个:

selectParagraph:, delete:, undo:, moveRight:, yankAndSelect:
Run Code Online (Sandbox Code Playgroud)
  • 不接触剪贴板
  • 适用于多行
  • 选择添加的行,因此可以多次使用而无需重新选择

由于我在每次更新XCode后都应用此更改,因此我为此创建了一个脚本.可能会造成一些损害,但我试图让它相对安全.它制作文件的副本,然后使用perl替换其副本和附加命令行.

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:, undo:, moveRight:, yankAndSelect:\<\/string>/g' /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
Run Code Online (Sandbox Code Playgroud)

编辑:次要修复edit2:更改为段落选择


Bal*_*dur 9

我想知道为什么没有人提到使用箭头键()来移动光标和选择整行(通过添加).

我通过使用+ (而不是ctrl+ A)将光标移动到行的开头来定期复制整行(复制),然后使用+ + (而不是ctrl+ + E)选择整行到结尾,然后复制/粘贴.

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


bya*_*haf 9

Xcode 最终使用 \xe2\x8c\x98 + D 在 Xcode 14 中添加了此功能,请参阅此处的发行说明

\n
\n

编辑代码时,“编辑”>“复制”菜单项及其\n相应的键盘快捷键现在会复制所选文本 \xe2\x80\x94 或\n当前包含插入点的行(如果未选择任何文本)。(8614499) (FB5618491)

\n
\n

视频演示

\n


BB9*_*B9z 8

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

重复当前段落

selectParagraph:,
delete:,
yank:,
moveToBeginningOfParagraph:,
yank:,
moveUp:,
moveToEndOfParagraph:
Run Code Online (Sandbox Code Playgroud)

删除当前段落

selectParagraph:,
delete:,
moveUp:,
moveToEndOfParagraph:
Run Code Online (Sandbox Code Playgroud)

在Xcode 4.6中正常工作


zee*_*han 8

编辑:2018年12月23日 更新到Xcode 10.1后,我的所有快捷方式再次破裂.但不同的是,在更新plist文件以进行行复制后,我没有必要定义我的键绑定,它们已经存在.奇怪.

编辑:2018年 10 月14日 Xcode 10:苹果公司的高手真的很喜欢复制/粘贴,并确保每个版本的Xcode更新,都会从每个人的安装中删除行复制.我们的开发人员对Xcode中的这种废话一直非常沮丧,因为永远是唯一没有行重复选项的IDE.我刚刚更新到Xcode 10,正如您猜测的那样 - 我的所有快捷键都与我的行重复功能一起被删除.但是,它像原始答案一样可以修复.这次略有不同,你需要以下几行:

<string>selectLine:, copy:, moveToBeginningOfLine:, paste:, moveToEndOfLine:</string>
Run Code Online (Sandbox Code Playgroud)

编辑: Xcode 9:我不得不重做我的快捷方式和行复制和删除,但好的是现在你可以再次编辑IDETextKeyBindingSet.plist.这个高级苹果公司的人在发布这个版本时必须休假.

编辑: Xcode 8:Buggy,你根本无法修改IDETextKeyBindingSet.plist文件.Xcode在启动时重置它.Apple的这位高层人士真的决定让我们使用复制/粘贴而不是简单的行复制,就像所有其他IDE一样.

编辑: 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

然后查找duplicate line并在plist标签下添加以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

然后duplicate lineplist标签下面的部分找到和这些:

<key>Delete Current Line</key>
<string>selectLine:, delete:</string>
<string>selectLine:, delete:</string>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在打开/重新启动Xcode,转到"首选项"并转到"键绑定"选项卡.使用搜索栏过滤并查找新的快捷方式.然后在快捷方式说明前单击,为其指定您喜欢的快捷方式.确保您的快捷方式与现有快捷方式不冲突.

在此输入图像描述


小智 6

复制菜单项及其相应的键盘快捷键现在复制所选文本

\n

Xcode 14 Beta 3 发行说明

\n
\n

Xcode 14 Beta 3 中的新功能\n编辑代码时,“编辑”>“复制”菜单项及其相应的键盘快捷键现在会复制所选文本 \xe2\x80\x94 或当前包含插入点的行(如果未选择任何文本)。(8614499) (FB5618491)

\n
\n

  • 好的!而这仅仅用了18年!吃掉 Jetbrains (4认同)