我正在寻找一种方法来将一些热键映射到Xcode中的“删除光标所在的行”。我在文本键绑定中找到了“删除到行尾”和“删除行开头”,但我不知道如何完全删除行,无论我选择了什么。 TextMate将此功能映射到Ctrl + Shift + D,如果可能,我会喜欢同样的事情。有什么想法吗?
答案 0 :(得分:30)
感谢Ashley的帮助。经过一些实验,我映射了我最喜欢的TextMate命令(重复行,删除行)。我创建了文件〜/ Library / KeyBindings / PBKeyBinding.dict 并添加了以下内容:
{
"^$K" = (
"selectLine:",
"cut:"
);
"^$D" = (
"selectLine:",
"copy:",
"moveToEndOfLine:",
"insertNewline:",
"paste:"
);
}
添加的“deleteBackward:”在删除行内容后备份一行。您也可以使用“selectLine:”。
答案 1 :(得分:14)
您可以设置一个适用于所有Cocoa应用程序的系统范围的密钥绑定文件。
要做你想做的事,它应该是这样的:
在您的主文件夹中,Library / KeyBindings / DefaultKeyBinding.dict
{
"^D" = (
"moveToBeginningOfLine:",
"deleteToEndOfLine:",
);
}
我相信如果您只想将它应用于Xcode,您可以将文件命名为PBKeyBinding.dict
,但我自己并没有尝试。您可以详细了解此系统here和here。
答案 2 :(得分:11)
由于我并不总是使用相同的xcode,所以我不想安装脚本。
Xcode使用一些emacs命令子集。我用这种方法快速删除一行。 ^ k(control-k)从光标删除到行尾。 这样做两次也会删除回车并占用下一行。 ^ a将您带到行的开头。
因此,要从头开始删除完整的行,您可以使用^ a ^ k ^ k。
答案 3 :(得分:8)
我一直在寻找解决方案,我尝试了Ashley Clark,但事实证明使用一个名为delete Line的用户脚本更简单。
完成!如果你是像我一样的Eclipse瘾君子,你可以为Move Line Up和Move Line Down做同样的事情。
答案 4 :(得分:3)
<key>Custom Keyword Set</key>
<dict>
<key>Delete Current Line In One Hit</key>
<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
</dict>
我建议您在文件 IDETextKeyBindingSet.plist 中创建自定义dictonary。
所以:
答案 5 :(得分:0)
这对我有用(Xcode 4.4.1):
与此处描述的步骤相同:Xcode duplicate line(哈雷答案)
但不是:
selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:
使用:
selectLine:,moveToBeginningOfLine:,deleteToEndOfLine:
答案 6 :(得分:0)
如果你在现代Xcode中遇到麻烦(我是),Xcode 7.2中的解决方案就是做Opena mentioned here with screenshots或in text form via Velthune's answer。由于我想要一个更直接的命令,我将命令简化为:
selectLine:, delete:, moveToBeginningOfLine:
当然在Xcode的首选项&gt;&gt;键绑定,你可以在Key列下找到命令双击并给它自己的Ctrl + Shift + D绑定。
答案 7 :(得分:0)
对于Xcode 9.0(测试版),将自定义密钥字典插入到IDETextKeyBindingSet.plist中对我来说运行正常。如果已经打开,则需要重新启动XCode,在下次启动后,您将在KeyBindings菜单下找到新的自定义快捷方式。
<key>Customized</key>
<dict>
<key>Delete Rest Of Line</key>
<string>deleteToEndOfLine:</string>
<key>Delete Line</key>
<string>moveToBeginningOfLine:, deleteToEndOfLine:</string>
<key>Duplicate Current Line</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, moveToBeginningOfLine:, paste:</string>
</dict>