【问题标题】:How can I make a keystroke to delete contiguous whitespace in Xcode?如何进行击键以删除 Xcode 中的连续空格?
【发布时间】:2011-11-16 05:08:26
【问题描述】:

我想找到一种在 Xcode(或者更一般地说,任何 Cocoa 文本编辑器)中进行键绑定的方法,该方法将删除(向左或向右,取决于键绑定)连续空白而不删除任何非-空白字符或换行符。

对于左空格删除,我认为逻辑是:

"如果有一个非空白或换行符立即到 克拉左边,什么都不做,否则删除所有连续的 克拉左边的空白字符,留下克拉 紧跟在第一个非空白或换行符之后 左边。”

显然,我也想要一个全等的右操作版本。

在理想情况下,我希望对换行有更复杂/智能的行为(可能删除只包含空格的连续行),但我会先满足于这个简单的行为。

我有 QuickKeys,而且我不害怕使用它。 :) 如果有人对如何在运行时修补这种行为有任何想法,我也愿意自己写一些东西——如果这种行为在我系统上的所有 Cocoa 文本编辑器中工作,那就太好了。

我不对运行 emacs、vi、vim、pico、nano、WordStar 或任何其他文本编辑器感兴趣。如果该解决方案不能在 Xcode4 中运行,那不是我的解决方案。

【问题讨论】:

  • +∞。 Xcode 迫切需要一种方法来创建自定义编辑宏并将它们映射到击键。
  • WordStar +1。 -1 表示不想使用它。
  • XVim 应该很快就会成为你最好的伙伴。至少,它已经是我的了。

标签: xcode keyboard editing


【解决方案1】:

我想出了一些 可行的方法。

首先是错误的开始......

我最初考虑制作一个 InputManager,但 InputManagers 似乎从 Snow Leopard 开始就已被弃用(我想这是有充分理由的......它们是一个巨大的安全漏洞),所以它们不是一个选择。

我还研究了使用Input Method Kit。使用输入法可能可以做我想做的事,但后来我被非标准输入法卡住了,这不是我想要的。据我所知,输入法并不是真正适合这项工作的工具。

...然后是(某种)有效的东西。

事实证明,Cocoa 文本编辑键绑定系统是可配置的。我碰巧遇到了this web page,它提供了很好的介绍。简而言之,我在 ~/Library/KeyBindings/ 中放置了一个名为 DefaultKeyBinding.dict 的 plist,它描述了几个快捷方式。这是文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>@~^</key>
    <array>
        <string>setMark:</string>
        <string>moveWordForward:</string>
        <string>moveWordBackward:</string>
        <string>deleteToMark:</string>
    </array>
    <key>@~^$</key>
    <array>
        <string>setMark:</string>
        <string>moveWordBackward:</string>
        <string>moveWordForward:</string>
        <string>deleteToMark:</string>
    </array>
</dict>
</plist>

组合键的确切语法/内容来自上述网页,但最终效果是按下 Cmd-Opt-Ctrl-Delete 设置标记,向前移动一个单词(包括word),然后向后移动一个单词(注意,这与向前移动一个单词不是相反的,因为它不会返回空格),然后删除到标记。这相当于 Shift-Opt-Right、Shift-Opt-Left、Delete。另一个键组合是相同的,只是它增加了 shift 并反转了行为。

这并不完美,因为它不是上下文感知的。如果您在调用它时没有出现空格,那么您最终会删除您所在的单词的一部分。也就是说,这是我在这一年(加)中提出的最好的事情发布了这个问题。

【讨论】:

    【解决方案2】:

    我知道一种解决方案不如使用宏快,但不是每个人都可以编写宏。

    1. 选择您需要摆脱空间的文件。
    2. 选择文本(很可能是文件中的所有文本。)
    3. 您按下“Command + [”,左移和空格的所有文本都消失了。可能需要多次按下组合键,具体取决于文本格式。
    4. 现在剩下的就是返回文本块的格式。选择文本并按组合键“Command + ]”。 XCode 将使用制表符进行缩进。

    在 XCode 的设置中应该启用 Prefer indent using: Tab.

    【讨论】:

      猜你喜欢
      • 2015-06-27
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 2019-05-08
      • 2021-06-25
      • 2019-09-12
      • 1970-01-01
      相关资源
      最近更新 更多