来自 Eclipse 并且一直习惯于重复行,很奇怪发现 Xcode 没有这样的功能。或者是吗?
我知道可以更改系统范围的键绑定,但这不是我想要的。
来自 Eclipse 并且一直习惯于重复行,很奇怪发现 Xcode 没有这样的功能。或者是吗?
我知道可以更改系统范围的键绑定,但这不是我想要的。
删除一行: Ctrl-A转到该行的开头,然后Ctrl-K删除它,再一次Ctrl-K删除空行。(我不经常使用 Xcode,但在 Emacs 和其他带有 Emacs 类绑定的文本输入中已经习惯了,而且它似乎也可以在 Xcode 中使用。)
并复制一行:我不知道有很多程序有这个命令,但通常我只使用 Copy+Paste - 在 Xcode 中它类似于 CUA: Ctrl+A转到行首,Shift+↓</kbd>选择它,Command +C复制和Command +*V粘贴两次(一次覆盖该行,一次附加到它)。
(来自一个一直在输入和编辑文本的人,经常在不同的程序中,偶尔会因为在文本输入中进行一些更正时不得不用一个愚蠢的小部件分散自己的注意力而生气,以至于他无法避免记住这些序列和习惯)
重点是不要使用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复制当前行。请注意,这仅在您不使用 Xcode 中设置的自定义键绑定时才有效。切换到“XCode Default”,一切都会正常。在 Snow Leopard 上的 XCode 3.2 上测试。KCtrlShiftD
有关 Mac OS X 键绑定的更多信息:http: //funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html
删除类似 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 > Preferences > KeyBindings。找到你的宏并定义一个快捷键:
我尝试了键绑定解决方案,但我无法让它工作。然而,编辑我的 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
好的,所以我让这个工作了一段时间,然后突然坏了。现在我结合了这里的不同帖子,找到了适用于 XCode 6.3.1 的解决方案。
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/
使用 Finder前往。
找到名为 Resources 的文件夹。右键单击它,按获取信息,解锁共享和权限设置(通过按锁)并将其设置为所有人的读写。
进入文件夹,找到文件IDETextKeyBindingSet.plist。右键单击它,按获取信息,解锁共享和权限设置(通过按锁)并将其设置为所有人的读写。
使用 XCode 打开文件(默认)
找到删除,右键单击并添加新行。例如,将其命名为 Delete Line。在值字段中,键入:selectLine:, deleteBackward:
。(这也可以用于重复行selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:
:)
由于 Xcode 4 使使用键绑定难以实现这一点,因此我使用了Keyboard Maestro(Quickeys也应该可以很好地工作,但它不完全兼容 Lion)。例如,这是我的键盘大师快捷键(绑定到⌘-⇧-D):
我知道这个线程已经很老了,但是我找到了另一种使用BetterTouchTool的解决方案,您可以通过在 BTT 中进行这样的配置来在一个快捷方式中执行Ctrl+ A、Ctrl+ K、Ctrl+序列:K
(使用附加附加操作按钮附加第二个和第三个快捷方式)
PS:来自 Eclipse,其中Cmd+D是删除行 ^^
我们在 Xcode 9.0 上,键绑定仍然无法正常工作。叹。
我发现这个要点很有帮助,所以在这里重新发布以供将来参考:
/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>
使用用户脚本。
有脚本可以移动和删除行。您必须为这些脚本定义键绑定(菜单Scripts -> Edit User Scripts...,在 xCode 3.2 下)。
要复制行,您必须制作自己的脚本。但这很简单!复制“下移行”脚本并删除删除选定文本的行:
delete (paragraphs startLine through endLine)
三击选中整行,command-c 选中,command-v 两次复制。它不是 Xcode 功能,它只是操作系统的一部分。
这里有一个 XCode4 行重复的解决方案
我还在 plist 中添加了行删除:
<key>Remove Line</key>
<string>selectLine:, deleteBackward:</string>
无需修改 Xcode。你可以只使用 Xcode 扩展Linex
damien.flament的解决方案效果很好,您可能需要将输出设置为“丢弃输出”,请参见下图
PS:我不知道如何评论他的回答。
如上所述,关闭 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- K。
如果您想要CTRL-D和CTRL- K,请在键定义中使用^d
和^k
。确保文件中没有重复的键绑定。
使用 XCode 3.2 对我来说效果很好
如果您已经自定义了 Xcode 键绑定,则必须编辑文件:~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys
. 只需将两个数组(如上所述)添加到Root/text
字典中。
三步删除当前行(看太长,但做的很快:D)
Cmd+→</kbd> : move to end of line
Cmd + Delete : delete to begin of line
Delete : delete empty line
对于 Xcode 6.1 到 Xcode > Preferences > KeyBindings > Text 并且有“删除到行尾”并分配你想要的键。
XCodePlus 删除线插件,是一个为您执行此操作的 XCode。它预装了 Alcatraz 包管理器...
从 Xcode 9 开始,仍然没有内置的方法来复制行。自定义键绑定似乎有问题。
更新: Xcode 10.0 beta 6 (10L232m) 是一样的。
去这个地址:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet
然后将 IDETextKeyBindingSet.plist 文件复制到某个位置,然后打开复制的文件并插入
selectLine:, copy:, paste:, paste: like this picture 在此处输入图像描述 并保存并替换此地址中的复制文件 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet
然后重新启动 xcode,打开 xcode 首选项,转到键绑定选项卡,搜索重复行(自定义)并为其定义短键,如下图所示