删除Xcode 6中的默认代码段

时间:2014-12-03 04:29:18

标签: xcode xcode6 code-snippets

有人在Xcode中使用默认代码段吗? 那里有太多无用的代码片段,因此我甚至不想在那里创建我的片段。 所以寻找ST的答案,但他们没有多大帮助。

有没有改进,所以我可以删除Xcode 6中的代码片段?

有关更多问题,我可以导入或导出自定义代码段,以便在不同的计算机上使用它们吗?

非常感谢,

5 个答案:

答案 0 :(得分:6)

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

  

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/SystemCodeSnippets.codesnippets

您可以使用以下代码在TextEdit中创建一个空片段文件:

<?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。 将其替换为上面命名的文件夹中的文件,并且不再有默认的系统片段。

答案 1 :(得分:2)

有一款名为SnippetEdit的应用

它可以将您的所有默认Xcode代码段转换为用户代码段。 我尝试使用Xcode 7 Beta和Xcode 6。

您不应删除Xcode中的用户代码段,因为它们是默认代码段。因为Xcode只是重新创建它们: - (。

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

答案 2 :(得分:2)

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

在stackoverflow中搜索此处使我确信不会删除默认代码段,而是使用与用户代码段相同的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中发生变化,可能需要更改。

在运行应用程序之后,用户代码段文件夹中填充了大约60个已清理的代码段,准备填充自己的源代码。

答案 3 :(得分:2)

在的Xcode 10默认片段是在

/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>

答案 4 :(得分:1)

答案是:是的,

用户生成的这些代码段保存在路径

~/Library/Developer/Xcode/UserData/CodeSnippets

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