【问题标题】:Copy file name and path in Sublime在 Sublime 中复制文件名和路径
【发布时间】:2025-12-08 00:25:01
【问题描述】:

我试图找到命令、插件或任何可以做到这一点的东西。基本上我需要两个键盘快捷键。一个复制当前文件路径(只有当前目录,不是文件名)。另一个只复制文件名(带有扩展名,例如“test.txt”)。

【问题讨论】:

    标签: windows sublimetext3 sublimetext


    【解决方案1】:

    您可以使用这样的简单插件来完成此操作(如果您不确定如何安装,请参阅此video on using plugins in Sublime):

    import sublime
    import sublime_plugin
    
    import os
    
    
    class CopyFilePathCommand(sublime_plugin.TextCommand):
        def run(self, edit, name=False):
            path, filename = os.path.split(self.view.file_name())
    
            sublime.set_clipboard(filename if name else path)
            self.view.window().status_message(
                'Copied file %s' % ("name" if name else "path"))
    
        def is_enabled(self, name=False):
            return self.view.file_name() is not None
    

    这实现了一个名为 copy_file_path 的命令,默认情况下会将当前文件的路径复制到剪贴板,如果您将 true 传递给 name 参数的值,则切换到复制文件的名称.

    状态栏中会显示一条消息,告诉您复制了哪些内容,并且该命令将为尚未保存到磁盘的任何文件禁用自身(因为它因此没有复制路径)。

    示例键绑定可能如下所示:

    { "keys": ["ctrl+shift+alt+p"], "command": "copy_file_path", "args": {"name": false}},
    { "keys": ["ctrl+shift+alt+f"], "command": "copy_file_path", "args": {"name": true}},
    

    【讨论】:

    • 谢谢 xD。但是由于某种原因,复制文件名不适用于ctrl+shift+alt+f,并且当我为其分配另一个快捷方式时它可以正常工作。
    • 这通常表明外部的东西可能在 Sublime 看到它之前就吃掉了密钥,或者它读取的不是您认为的密钥。在 Sublime 控制台中,您可以 sublime.log_commands(True) 和/或 sublime.log_input(True)`;每当您按下一个键以及执行一个命令时,它都会记录下来。你可以使用它来查看 Sublime 是否看到了密钥,如果看到了,它看到了什么,以及它对你 udid 的反应如何。