【问题标题】:Remove default code snippets in Xcode 6删除 Xcode 6 中的默认代码片段
【发布时间】:2015-01-31 12:57:49
【问题描述】:

有人在 Xcode 中使用默认代码 sn-ps 吗? 那里有太多无用的代码 sn-ps,以至于我什至不想在那里创建我的 sn-ps。 所以在ST上寻找答案,但他们并没有太大帮助。

是否有任何改进,以便我可以在 Xcode 6 中删除代码 sn-ps?

如果有进一步的问题,我可以导入或导出自定义的 sn-ps,以便在不同的计算机上使用它们吗?

非常感谢,

【问题讨论】:

  • 默认代码sn-ps是什么意思?您是在谈论 viewdidload viewwillappear 方法吗? init 方法是您创建对象所必需的,其余两个方法可以删除,如果您不想要。

标签: xcode xcode6 code-snippets


【解决方案1】:

是的,您可以删除默认的 sn-ps。 由于 sn-ps 保存在 XML 中的 plist 文件路径中:

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/SystemCodeSnippets.codesn-ps

您可以使用以下代码在TextEdit 中创建一个空的sn-ps 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
    <array></array>
</plist>

并将其保存为SystemCodeSnippets.codesnippets。 将其替换为上面命名的文件夹中的文件,不再有默认的系统sn-ps。

【讨论】:

  • 很好的答案!提示:如果您在 Applications 文件夹中的 Xcode 下没有看到文件夹结构,则只需右键单击 Xcode 并选择“显示包内容”。在 Xcode 8 中仍然有效。
  • 但是要注意Xcode更新会重置plist gile,你必须再做一次,或者干脆写一个拷贝文件脚本
【解决方案2】:

在 Xcode 10 中,默认的 sn-ps 位于

/Applications/Xcode.app/Contents/PlugIns/IDESourceEditor.framework/Versions/A/Resources/SystemCodeSnippets.codesnippets

要删除内容,请将其更改为

<?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">
<array></array>
</plist>

【讨论】:

    【解决方案3】:

    有一个应用叫SnippetEdit

    它可以将你所有的默认 Xcode sn-ps 转换为用户 sn-ps。 我用 Xcode 7 Beta 和 Xcode 6 尝试过。

    但是您不应该在 Xcode 中删除用户 sn-ps,因为它们是默认的 sn-ps。因为 Xcode 只是重新创建它们 :-(.

    至少你可以这样改变它们。更改标题和内容。

    【讨论】:

      【解决方案4】:

      我只使用 swift sn-ps 并且还想删除所有这些 c、c++ 和 objC sn-ps。文件“/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/Current/Resources/SystemCodeSnippets.codesn-ps”中的清理似乎有效:我在代码 sn 中只剩下三个 swift sn-ps -p 库面板。过滤和选择这些 sn-ps 有效,但 Xcode 在按下回车键时崩溃了几次,而在 sn-ps 的过滤器字段中。 所以我恢复了旧文件并再次获得了完整列表。

      在 stackoverflow 中搜索让我确信不要删除默认的 sn-ps,而是使用与用户 sn-p 相同的 ID 和更高的版本号来存储它们。

      作为一个小的编程任务,我创建了一个 OS X Projekt,并在生成的 AppDelegate.swift 的 applicationDidFinishLaunching 中使用以下代码:

        func applicationDidFinishLaunching(aNotification: NSNotification) {
          let filepathOfSystemSnippets = "/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/Current/Resources/SystemCodeSnippets.codesnippets"
      
          let folderForUserSnippets = "\(NSHomeDirectory())/Library/Developer/Xcode/UserData/CodeSnippets"
      
          print("reading \(filepathOfSystemSnippets)")
          let arrayOfDicts = NSMutableArray(contentsOfFile: filepathOfSystemSnippets)
          //        print("arry has \(arrayOfDicts?.count) entries")
          for (ix, dict) in arrayOfDicts!.enumerate() {
              let userDict = NSMutableDictionary(dictionary: dict as! [NSObject : AnyObject])
              userDict["IDECodeSnippetVersion"] = 2
              userDict["IDECodeSnippetTitle"] = "free user snippet \(ix) "
              userDict["IDECodeSnippetSummary"] = ""
              userDict["IDECodeSnippetContents"] = ""
              userDict["IDECodeSnippetLanguage"] = "Xcode.SourceCodeLanguage.Swift"
              userDict["IDECodeSnippetCompletionPrefix"] = ""
              userDict["IDECodeSnippetUserSnippet"] = true
      
              if let id = dict["IDECodeSnippetIdentifier"] as? String {
                  let pathOfUserSnippet = "\(folderForUserSnippets)/\(id).codesnippet"
                  if NSFileManager.defaultManager().fileExistsAtPath(pathOfUserSnippet){
                      print("snippet with id \(id) already exists in \(pathOfUserSnippet) -> don't write.")
                  } else {
                      userDict.writeToFile(pathOfUserSnippet, atomically: false)
                      //                    print("write snippet with id \(id) in \(pathOfUserSnippet)")
                  }
              }
          }
      
      }
      

      我使用在答案中找到的硬编码文件夹名称。因此,如果它们在 Xcode 的未来版本中发生更改,则可能需要更改。

      运行应用程序后,用户的 sn-p 文件夹中会填充大约 60 个已清理的 sn-ps,准备好用自己的源代码填充。

      【讨论】:

        【解决方案5】:

        答案是:是的,

        用户生成的这些代码sn-ps保存在path中

        ~/Library/Developer/Xcode/UserData/CodeSnippets

        您可以简单地传递它们以保存和恢复它们。所以你可以与其他人分享它们,另一方面,在其他 Mac 上使用它们。

        【讨论】:

        • 问题不是在哪里可以找到用户创建的sn-ps,而是标准的sn-ps。
        猜你喜欢
        • 1970-01-01
        • 2011-08-20
        • 2011-05-01
        • 1970-01-01
        • 2015-03-27
        • 2018-12-16
        • 1970-01-01
        • 2015-07-10
        • 2014-02-07
        相关资源
        最近更新 更多