有人在Xcode中使用默认代码片段吗?其中有太多无用的代码片段,以至于我甚至不想在那里创建我的片段。
所以我在ST上寻找答案,但是它们并没有帮助很大。
有没有改进方法可以删除Xcode 6中的代码片段?
如果有进一步的问题,我可以导入或导出自定义片段,这样我就可以在不同的计算机上使用它们了吗?
非常感谢,
有人在Xcode中使用默认代码片段吗?其中有太多无用的代码片段,以至于我甚至不想在那里创建我的片段。
所以我在ST上寻找答案,但是它们并没有帮助很大。
有没有改进方法可以删除Xcode 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
。
用该文件替换上述命名的文件夹中的文件,即可删除默认系统片段。
/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>
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个已清理的片段,准备好填充自己的源代码。
有一个名为SnippetEdit的应用程序。
它可以将所有默认的Xcode代码片段转换为用户代码片段。我已经在Xcode 7 Beta和Xcode 6上尝试过了。
但是,当它们是默认代码片段时,您不应删除Xcode中的用户代码片段。因为Xcode只会重新创建它们 :-(。
至少你可以通过这种方式来更改它们。更改标题和内容。