有人在Xcode中使用默认代码段吗? 那里有太多无用的代码片段,因此我甚至不想在那里创建我的片段。 所以寻找ST的答案,但他们没有多大帮助。
有没有改进,所以我可以删除Xcode 6中的代码片段?
有关更多问题,我可以导入或导出自定义代码段,以便在不同的计算机上使用它们吗?
非常感谢,
答案 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上使用它们。