在Finder.app中,您可以点击Enter以编辑当前所选文件或文件夹的名称。
OS X将仅自动选择文件名部分,而不选择扩展名:
这非常有用,因为这样您就可以开始输入新名称,而不必担心意外更改文件扩展名。
但是,这似乎仅适用于“已知”文件类型。如果尝试使用未知扩展名,则会选择整个文件名(包括扩展名):
我尝试映射可以.bar
通过⌘+ I→“全部更改” 打开所有文件的应用程序,但仍然出现上述行为。
“已知”文件类型列表存储在哪里?有没有一种方法可以使OS X识别新文件类型?
在Finder.app中,您可以点击Enter以编辑当前所选文件或文件夹的名称。
OS X将仅自动选择文件名部分,而不选择扩展名:
这非常有用,因为这样您就可以开始输入新名称,而不必担心意外更改文件扩展名。
但是,这似乎仅适用于“已知”文件类型。如果尝试使用未知扩展名,则会选择整个文件名(包括扩展名):
我尝试映射可以.bar
通过⌘+ I→“全部更改” 打开所有文件的应用程序,但仍然出现上述行为。
“已知”文件类型列表存储在哪里?有没有一种方法可以使OS X识别新文件类型?
Answers:
此SuperUser帖子对我有用:
您需要浏览至要用于打开这些文件的应用程序,然后编辑其捆绑包。右键单击该应用程序以处理这些文件扩展名,然后选择显示包内容。导航至
Contents
,然后进行编辑Info.plist
。您可能需要属性列表编辑器,它是Apple开发人员工具的一部分。如果幸运的话,它采用XML格式。编辑此文件,CFBundleDocumentTypes
并为所需的扩展名添加一个条目。
我使用TextEdit作为打开.bar
文件的默认应用程序。我唯一做的不同的是将TextEdit中使用的XML更改Info.plist
为:
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>bar</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>BarDocument</string>
<key>CFBundleTypeName</key>
<string>Bar Document</string>
<key>CFBundleTypeRole</key>
<string>Document</string>
</dict>
…然后我使用LSRefresh.app刷新了启动服务数据库中的TextEdit。然后,它按照您的建议进行了工作,尽管它可能会破坏Lion上Textedit(和任何其他已签名应用程序)的代码签名。
xxx.bar
并选择open with
?
“已知”文件类型列表存储在哪里?
“文件类型”的正式术语是 统一类型标识符 (UTI),UTI的数据库由Launch Services维护 。
使用终端,您可以使用该lsregister
工具查看Launch Services数据库的内容,该工具存储在:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
不必每次都指定要运行的长路径lsregister
,而是可以将其目录临时添加到您的PATH
:
PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"
然后lsregister
只需输入以下内容即可运行:
lsregister
要查看启动服务数据库的内容:
lsregister -dump
有没有一种方法可以使OS X识别新文件类型?
苹果公司的这篇文章 “声明新的统一类型标识符”提供了有关如何执行此操作的有用信息。这是完整的过程:
创建一个虚拟应用程序以注册启动服务:
有两个键可供选择:
UTExportedTypeDeclarations
–用于您自己的自定义文件扩展名。UTImportedTypeDeclarations
–对于已存在但OS X无法识别的文件扩展名。选择最适合您需要的钥匙。
然后在Info.plist文件的最后两行(</dict></plist>
)之前,添加以下代码:
<key>KEY</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>IDENTIFIER</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>EXTENSION</string>
</array>
</dict>
</dict>
</array>
进行以下更改:
KEY
为您选择的键(UTExportedTypeDeclarations
或UTImportedTypeDeclarations
)。IDENTIFIER
为合适的反向DNS标识符:
com.mycompany.mytype
com.idsoftware.wad
EXTENSION
为文件扩展名(不带前导点),例如:wad
。这是启动服务接受新的UTI所需的最低代码。您还可以添加以下可选属性:
UTTypeConformsTo
–请参阅下面的附录。UTTypeDescription
–用户可见的描述,将显示在Finder中。UTTypeIconFile
–如果将Apple Icon Image
文件添加到虚拟应用程序的Contents / Resources文件夹中,并在此属性中添加其文件名,则具有新文件名扩展名的文件将使用此图标。UTTypeReferenceURL
–描述此类型的参考文档的URL。这是显示所有可选属性的完整示例:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>com.idsoftware.wad</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>wad</string>
</array>
</dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Doom WAD file</string>
<key>UTTypeIconFile</key>
<string>DoomWAD.icns</string>
<key>UTTypeReferenceURL</key>
<string>http://en.wikipedia.org/wiki/Doom_WAD</string>
</dict>
</array>
在终端中运行以下命令:
lsregister <PATH_TO_APP>
用<PATH_TO_APP>
您的虚拟应用程序的路径替换,例如:
lsregister ~/Desktop/MyDummyApp.app
如果现在创建带有新文件扩展名的文件,然后在Finder中选择它并单击Enter,则Finder应该自动仅选择文件名部分,而不选择扩展名。
如果您查看启动服务数据库的内容:
lsregister -dump
您应该找到列出的新UTI:
type id: 50364
bindableKey: 12608
generation: 1
uti: com.idsoftware.wad
description: Doom WAD file
flags: imported active apple-internal untrusted
icon: DoomWAD.icns
conforms to: public.data
tags: .wad
如果以后要注销新的UTI,请将-u
选项传递给lsregister
:
lsregister -u ~/Desktop/MyDummyApp.app
OS X声明了此处列出的UTI的层次结构: 系统声明的统一类型标识符。
这是层次结构中的一些UTI:
public.content
public.text
public.rtf
public.html
public.xml
public.plain-text
public.source-code
public.c-source
public.c-header
com.sun.java-source
public.image
public.jpeg
public.tiff
public.png
public.audiovisual-content
public.movie
public.audio
每个UTI“符合”其父UTI:
例如,
public.html
定义HTML文本的UTI 符合基本文本标识符public.text
。在这种情况下,一致性可使可以打开常规文本文件的应用程序将HTML文件标识为也可以打开的HTML文件。(参考)
创建新的UTI时,最好将UTTypeConformsTo
属性设置为现有的UTI之一。
例如,如果你的新UTI是一种类型的源代码,那么你应该设置的UTTypeConformsTo
属性public.source-code
,以便它可以通过可以打开任何应用程序打开
public.source-code
或public.plain-text
或public.text
文件。
CFBundleTypeExtensions
是遗留密钥,在OS X 10.5中已弃用。自2007年以来最好的方法是宣布新的尿路感染,提到这里,并在描述我的答案。