Xcode 重复/删除行

来自 Eclipse 并且一直被用于复制行,发现 Xcode 没有这样的功能是非常奇怪的。真的吗?

我知道可以更改系统范围的键绑定,但这不是我想要的。

78446 次浏览

三次单击可以选择整行,命令 -c 可以选择,命令 -v 可以复制两次。它不是 Xcode 函数,它只是操作系统的一部分。

删除一行 : ABC0-A去行首,然后 ABC0-K去删除它,另一次 ABC0-K去删除空行。(我并不经常使用 Xcode,但我已经习惯了在 Emacs 和其他类似 Emacs 绑定的文本输入中使用 Xcode,它似乎在 Xcode 也可以工作。)

为了复制一行 : 我不知道有多少程序有这样的命令,但通常我只是使用 Copy + Paste-在 Xcode,它是 CUa-like: ABC0 + A来到行的开头,ABC2 + 来选择它,命令 + C来复制,命令 + * 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-K和用于复制当前行的 Ctrl-Shift-D。请注意,如果你是使用自定义密钥绑定集在 Xcode 的 没有,这将工作。切换到“ XCodeDefault”,应该可以正常工作。在雪豹上的 XCode 3.2上进行了测试。

关于 Mac OS X 键绑定的更多信息: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

如果您已经定制了 Xcode 密钥绑定,则必须编辑文件 ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys。只需将这两个数组(如上所述)添加到 Root/text字典中。

使用用户脚本。

还有移动和删除行的脚本。您必须为这些脚本定义键绑定(菜单 剧本-> 编辑用户脚本..。,在 xCode 3.2下)。

要复制行,你必须制作自己的脚本。但这很简单!复制“向下移动行”脚本并删除删除选定文本的行:

delete (paragraphs startLine through endLine)

该解决方案由 Damien Flence工程伟大,你可能需要设置 输出到“丢弃输出”看到下面的图片

Userscripts setting

附注: 我不知道如何评论他的回答。

我尝试了键绑定的解决方案,但它不能让它工作。然而,编辑我的 XCode 密钥绑定非常有效。我是这么做的。

此解决方案不更改剪贴板的内容!

打开 XCode 密钥绑定:

alt text

在“编辑用户脚本”对话框中:

  1. 复制“向下移动行”脚本并重命名它
  2. 复制“ Move Line Down.scpt”文件,重命名脚本,在脚本编辑器中通过(双击)选择 file via
  3. 编辑脚本(打开“ AppleScript 编辑器”)并删除“删除(从 startLine 到 endLine 的段落)”段落。
  4. 如果不想重新启动 XCode,似乎必须删除并重新添加脚本。确保将“ Output”设置为“ Discard Output”,否则源文件中将出现“(null)”
  5. 我稍微修改了一下脚本,选择了正确的行:

重复排队:

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

alt text

由于 Xcode 4使得使用密钥绑定很难实现这一点,所以我使用了 键盘大师(速战速决也应该能够很好地工作,但是它不完全与 Lion 兼容)。例如,下面是我的键盘大师快捷键(绑定到 something-something-D) :

Http://bit.ly/thc6yf

如上所述,关闭 XCode 并在 <key>text</key>部分的 <dict>内的 ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys处插入以下内容:

    <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-DCTRL-SHIFT-K
如果需要 CTRL-DCTRL-K,则在键定义中使用 ^d^k。确保文件中没有重复的密钥绑定。

XCode 3.2对我来说很好用

有一种解决方案可以在 给你上进行 XCode4行复制

我还在 plist 中添加了行删除:

删除行 < string > selectLine: ,delete teBackward:

删除一行,比如 eclipseCTRL + 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:

enter image description here

重新启动 Xcode 并打开 Xcode > Preferences > KeyBindings。查找宏并定义一个短键:

enter image description here

对于 Xcode 6.1,可以访问 Xcode > Preferences > KeyBindings > Text 还有一个“删除到行尾”并分配所需的键。

我知道这个线程已经很老了,但是我找到了另外一个使用 BetterTouchTool 更好的触摸工具的解决方案,你可以在一个快捷方式中执行 Ctrl + ACtrl + KCtrl + K序列,在 BTT 中像这样配置:

enter image description here

(使用“附加操作”按钮追加第二个和第三个快捷方式)

PS: 来自 Eclipse,其中 Cmd + D是 delete 行 ^ ^

好吧,这个我用了一会儿,突然就坏了。现在我已经结合了不同的帖子,找到了一个适用于 XCode 6.3.1的解决方案。

  1. 使用 Finder 转到 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/

  2. 找到名为 Resources 的文件夹。右键单击它,按下获取信息,解锁共享和权限设置(按下锁) ,并设置为读取和写入所有。

  3. 输入文件夹并找到文件 IDETextKeyBindingSet.plist。右键单击它,按下获取信息,解锁共享和权限设置(按下锁) ,并设置为读取和写入所有。

  4. 用 XCode 打开文件(默认值)

  5. 查找删除,右键单击并添加新行。例如,将其命名为 Delete Line。在 value 字段中,键入: selectLine:, deleteBackward:。(对于重复的行: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:也可以这样做)

  1. 启动 XCode,进入首选项/键绑定,搜索删除行。设置快捷方式。

删除当前行的三个步骤(看太长,但做得非常快: D)

Cmd + : 移动到线的末端
Cmd + Delete: 删除行的开头
删除空行

XCodePlus 删除行插件,是一个 XCode,为您做到这一点。它预先安装了恶魔岛软件包管理器..。

Https://github.com/payliu/xcodeplus

这是可能的使用 BetterTouchTool 更好的触摸工具。 CMD + D 将复制一条线。 创建一个新的快捷方式如下:

enter image description here

使用“附加操作”按钮追加第二个和第三个快捷方式

我们使用的是 Xcode 9.0,键盘绑定仍然无法工作。

我发现 这个要点非常有帮助,所以在这里重新发布它,以备将来参考:

  1. 打开 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. 将下面的 XML 片段添加到该文件的底部 </dict>之上
  3. 转到 Xcode 首选项-> 键绑定-> 文本标签-> 滚动,直到看到复制
  4. 单击“重复当前行”,为其添加快捷方式,例如 Cmnd + D (解决任何重复绑定)
  5. 打开 Xcode

< 键 > 复制 >/键 > < dict > < 按键 > 复制当前线路 < string > moveToBeginningOfLine: ,delete teToEndOfLine: ,yank: ,insert tNewline: ,moveToBeginningOfLine: ,yank: 重复行 < string > selectLine: ,copy: ,moveToEndOfLine: ,insert tNewline: ,粘贴: ,deleteBackward: < key > 删除行 < string > selectLine: ,delete teBackward: 译自: 美国《科学》杂志网站

但是仍然没有内置的方法来复制行,比如 Xcode 9。 自定义键绑定似乎有问题。

更新: Xcode 10.0 beta 6(10L232m)是相同的。

不需要修改 Xcode,只需使用 Xcode 扩展 Linex即可

enter image description here

要删除 Xcode 10.1中的行,请按照下面的截图步骤添加快捷键。

enter image description here

去这个地址:

应用程序/Xcode.app/内容/框架/IDEKit.Framework/资源/IDETextKeyBindingSet

然后在某处复制 IDETextKeyBindingSet.plist 文件,然后打开复制的文件并插入

复制,粘贴,粘贴: 就像这张照片 在此输入图像描述 并将其保存并替换在此地址/Applications/Xcode.app/content/Framework/IDEKit.Framework/Resources/IDETextKeyBindingSet 中复制的文件

然后重新启动 xcode,打开 xcode 首选项,进入 keybinding 选项卡,搜索重复行(自定义)并为其定义短键,如下图所示

Https://i.stack.imgur.com/utezu.png