来自Eclipse并且一直习惯于复制行,发现Xcode没有这样的功能是很奇怪的。或者是吗?
我知道可以改变系统范围的键绑定,但这不是我想要的。
答案 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
删除它是一个很大的时间。
简而言之,使用以下内容创建文件~/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:
重启Xcode并打开Xcode&gt;偏好&gt;键绑定。找到您的宏并定义一个快捷键:
答案 3 :(得分:9)
我尝试了键绑定解决方案,但我无法让它工作。然而,编辑我的XCode键绑定就像一个魅力。这是我如何做到的。
此解决方案不会改变剪贴板的内容!
打开XCode键绑定:
在“编辑用户脚本”对话框中
重复排队:
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
答案 4 :(得分:6)
使用Finder转到/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/
。
找到名为Resources的文件夹。右键单击它,按“获取信息”,解锁共享&amp;权限设置(通过按下锁定)并将其设置为Read&amp;为所有人写。
输入文件夹并找到文件IDETextKeyBindingSet.plist。右键单击它,按“获取信息”,解锁共享&amp;权限设置(通过按下锁定)并将其设置为Read&amp;为所有人写。
使用XCode(默认)
查找删除,右键单击并添加新行。将其命名为Delete Line。在值字段中,键入:selectLine:, deleteBackward:
。 (这也可以用于重复行:selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:
)
答案 5 :(得分:6)
由于Xcode 4使用键绑定很难实现,我使用Keyboard Maestro(Quickeys也应该运行良好,但它不完全兼容Lion)。例如,这是我的Keyboard Maestro快捷方式(绑定到⌘-⇧-D):
答案 6 :(得分:5)
我知道这个帖子已经很老但我找到了另一个使用BetterTouchTool的解决方案,您可以通过配置在一个快捷方式中执行Ctrl+A
,Ctrl+K
,Ctrl+K
序列在BTT中像这样:
(使用附加附加操作按钮附加第二个和第三个快捷方式)
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
即可答案 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的解决方案效果很好,您可能需要将输出设置为“丢弃输出”,请参阅下面的图片
P.S:我不知道如何评论他的回答。
答案 13 :(得分:2)
答案 14 :(得分:1)
如果您已经自定义了Xcode键绑定,则必须编辑文件:~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys
。只需将两个数组(如上所述)添加到Root/text
字典中。
答案 15 :(得分:1)
删除当前行的三步(看得太长,但做得非常快:D)
Cmd + →:移至行尾
Cmd + 删除:删除行开头
删除:删除空行
答案 16 :(得分:1)
答案 17 :(得分:1)
我们在Xcode 9.0上,键绑定仍无法正常工作。叹息。
我发现this gist非常有用,所以请将其重新发布在此处以供将来参考:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
</dict>
<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偏好设置,转到“快捷键”选项卡,搜索重复的行(自定义)并为其定义快捷键,如下面的图像
答案 19 :(得分:0)
从Xcode 9开始,仍然没有内置的复制行的方法。 自定义键绑定似乎有问题。
更新: Xcode 10.0 beta 6(10L232m)是一样的。
答案 20 :(得分:0)
XCodePlus删除行插件,是一个为您执行此操作的XCode。它预先安装了Alcatraz包管理器......
答案 21 :(得分:0)
对于Xcode 6.1来到Xcode&gt;偏好&gt; <键绑定>文本 还有&#34;删除到行尾&#34;并指定一个你想要的密钥。