Sublimetext3 如何使用右键单击菜单复制当前文件的完整路径而不使用文件名? 导入升华 导入升华插件 导入操作系统 类copypathCommand(升华插件.WindowCommand): def运行(自我,编辑): #视图=升华。活动窗口()。活动视图() vars=self.window.extract_variables() 工作目录=vars['file\u path'] base\u name=os.path.basename(工作目录) 升华。设置剪贴板(基本名称) 打印(“获取剪贴板”+升华。获取剪贴板())
上下文菜单Sublimetext3 如何使用右键单击菜单复制当前文件的完整路径而不使用文件名? 导入升华 导入升华插件 导入操作系统 类copypathCommand(升华插件.WindowCommand): def运行(自我,编辑): #视图=升华。活动窗口()。活动视图() vars=self.window.extract_variables() 工作目录=vars['file\u path'] base\u name=os.path.basename(工作目录) 升华。设置剪贴板(基本名称) 打印(“获取剪贴板”+升华。获取剪贴板()),sublimetext3,sublime-text-plugin,Sublimetext3,Sublime Text Plugin,上下文菜单 [ { "caption": "copypath", "command": "copypath"}, ] 这个脚本不起作用。 当我使用ctrl-v时,它会粘贴“working_dir”。 我认为问题在于sublime\u plugin.WindowCommand参数或self.window.extract\u variables(),因为我只更改了其他工作脚本的这两行。 您的插件包含多个错误以
[
{ "caption": "copypath", "command": "copypath"},
]
这个脚本不起作用。
当我使用ctrl-v时,它会粘贴“working_dir”。
我认为问题在于sublime\u plugin.WindowCommand
参数或self.window.extract\u variables()
,因为我只更改了其他工作脚本的这两行。
您的插件包含多个错误以及代码可以改进的地方
import os
不会自动导入os.path
类。您需要使用导入os.path
class copypathCommand
必须以大写字母C
开头才能创建copypath
命令,即class copypathCommand
,请参阅
sublime\u plugin.WindowCommand
,但随后在run()
方法中使用了edit
参数,该参数只能在继承自sublime\u plugin.TextCommand
的类中使用。最好对此插件使用TextCommand
,因为它已经将活动视图设置为self.view
。这就给出了类copypath命令(sublime\u plugin.TextCommand)
extract\u variables()
获取文件路径。在view
类中提供file\u name()
方法,如果视图/缓冲区未保存(即没有要返回的文件路径),则返回完整的文件路径或None
。因此,只需一次调用file\u path=self.view.file\u name()
即可检索完整路径
os.path.basename()
,但您的问题标题说您需要“当前文件完整路径,不带文件名”,这需要使用os.path.dirname()
。这就是这两种方法在返回内容方面的不同之处:
os.path.basename(“/full/path/to/folder/filename”)-->“filename”
dirname(“/full/path/to/folder/filename”)-->“/full/path/to/folder”
将所有这些放在一起组成一个工作插件,可以得到以下代码:
#保存在ST config文件夹中:../Packages/User/CopypathToClipboard.py
导入操作系统路径、升华、升华插件
类CopypathCommand(升华插件.TextCommand):
def运行(自我,编辑):
file\u path=self.view.file\u name()
如果不是文件路径:
升华状态信息(“当前缓冲区未保存”)
返回
dir\u path=os.path.dirname(文件路径)
升华。设置剪贴板(目录路径)
升华状态消息(“已将文件夹复制到剪贴板:“+dir\u路径”)
#is_enabled()仅当视图包含保存的文件时才启用插件。
#如果返回false,“copypath”命令将不可用,
#例如,命令选项板标题隐藏,关联菜单标题变灰。
def已启用(自):
如果self.view.file_name()为False,则返回True
您的上下文没有问题。升华菜单
code-尽管添加id
行,正如我在下面所做的那样,意味着命令的标题Copy Folder Path
将显示在右键单击上下文菜单中的Copy File Path
相同的菜单部分
//保存在ST config文件夹中:../Packages/User/Context.submite-menu
[
{“标题”:“-”,“id”:“文件”},
{“标题”:“复制文件夹路径”,“命令”:“复制路径”}
]
谢谢,这对我来说是个很好的答案。还有一个问题:有时按钮会变成灰色。上下文菜单中的“command”值应该是小写。对吗?要在没有可用路径时使上下文菜单中的命令变灰,需要实现已启用()
方法-请参阅上面我编辑的插件。是,上下文菜单中的“command”
值应为小写,所有升华文本命令均为小写,请参阅。另一个问题是,有时我会按照您的代码添加if语句,当我删除时,菜单立即变为灰色,按钮再次变为黑色,功能恢复正常。if语句是否有问题
Re:“另一个问题”-我不理解你的问题。请让英语说得好的人帮你写另一条评论,解释你的意思。Sry由于评论格式的限制,我对这个问题不是很清楚,我在问题描述中更新了gif!请随时检查!