前情提要:

最近在学习pyqt框架进行pythonGUI的开发,安装过程中有需要将一个python脚本配置成IDE的 

External Tools 方便使用

可以达到的效果是在项目管理器中选中一个文件即可对这个文件格式进行转换


(资料图)

但是缺点是只能选中目录中的第一层文件 因为脚本中的宏替换为projectDir

当我们的文件处于项目深层目录中讲无法找到文件

深度思考> 既然projectDir为项目目录,那是否可以拿到当前选中的那个文件的父目录呢

进行一番搜寻找到了答案

以下是IDE内置的所以宏参数

描述

$AffectedModuleNames$

与当前文件相关的https://www.jetbrains.com/help/idea/creating-and-managing-modules.html的名称,以逗号分隔。

$Classpath$

项目的完整类路径。

$ClasspathEntry$

类路径中与当前文件相关的条目。

$ClipboardContent$

系统剪贴板的当前内容。

$ColumnNumber$

插入符号在当前文件中所在的列号。

$ContentRoot$

当前文件所属https://www.jetbrains.com/help/idea/content-roots.html目录的路径。

$FileClass$

由当前文件定义的类的名称。

$FileDir$

包含当前文件的目录的绝对路径。

$FileDirName$

包含当前文件的目录的名称。

$FileDirPathFromParent(dir)$

包含当前文件的目录的路径,该目录相对于指定为参数的父目录。dir

$FileDirRelativeToProjectRoot$

包含相对于模块https://www.jetbrains.com/help/idea/content-roots.html目录的当前文件的目录的路径。

$FileDirRelativeToSourcepath$

包含相对于源路径根目录的当前文件的目录的路径。

$FileEncoding$

当前文件的https://www.jetbrains.com/help/idea/encoding.html。

$FileExt$

当前文件的扩展名。

$FileFQPackage$

当前文件的完全限定包名称。

例如,在 com.example.mypackage.MyClass 的情况下,包的完全限定名称是 com.example.mypackage。

$FileName$

当前文件的名称(包括所有扩展名)。

$FileNameWithoutAllExtensions$

不带任何扩展名的当前文件的名称。当文件的扩展名被复制时,这很有用。它将删除任何句点和随后的所有内容。

例如,如果文件为 hello.txt.txt,则宏将返回 hello。$FileNameWithoutAllExtensions$

$FileNameWithoutExtension$

不带扩展名的文件的名称。这只会删除一个句点,后跟一个扩展。

例如,如果文件为 hello.txt.txt,则宏将返回 hello.txt。$FileNameWithoutExtension$

$FilePackage$

当前文件的即时包名称(不完全限定)。

例如,在 com.example.mypackage.MyClass 的情况下,包的名称是 mypackage。

$FileParentDir$

当前文件所在目录的父目录的名称。

$FilePath$

当前文件的绝对路径。

$FilePathRelativeToProjectRoot$

相对于模块内容https://www.jetbrains.com/help/idea/content-roots.html目录的当前文件的路径。

$FilePathRelativeToSourcepath$

相对于源路径根目录的当前文件的路径。

$FilePrompt$

显示用于选择文件的文件系统对话框。

$FileRelativeDir$

当前文件相对于模块https://www.jetbrains.com/help/idea/content-roots.html目录所在的目录的路径。

$FileRelativePath$

相对于模块内容https://www.jetbrains.com/help/idea/content-roots.html目录的当前文件的路径。

$IsMake$

如果使用 执行编译,则返回。truemake

$JavaDocPath$

JavaDoc 输出目录。

$JDKPath$

项目https://www.jetbrains.com/help/idea/sdk.html#jdk的路径。

$LineNumber$

插入符号在当前文件中所在的行号。

$ModuleFileDir$

当前模块文件所在目录的绝对路径。

$ModuleFilePath$

当前模块文件的绝对路径。

$ModuleName$

不带扩展名的当前模块文件的名称。

$ModuleSdkPath$

当前模块的 https://www.jetbrains.com/help/idea/sdk.html#change-module-sdk 的路径。

$ModuleSourcePath$

当前模块的源路径。

$OutputPath$

当前模块的输出路径。

$ProjectFileDir$

当前项目目录的绝对路径。

$ProjectName$

当前项目目录的名称。

$Projectpath$

当前项目的源路径。

$Prompt$

显示传递任意字符串的对话框。

$RemoteProjectFileDir$

远程服务器上项目目录的绝对路径。

$SelectedText$

编辑器中当前选定的文本。

$SelectionEndColumn$

所选内容结束的列号。

$SelectionEndLine$

所选内容结束的行号。

$SelectionStartColumn$

所选内容开始的列号。

$SelectionStartLine$

所选内容开始的行号。

$Sourcepath$

项目的完整源路径。

$SourcepathEntry$

源路径中与当前文件相关的条目。

$UnixSeparators(path)$

采用路径作为参数,并将所有分隔符转换为正斜杠。

例如,将返回 .$UnixSeparators(\foo\bar)$/foo/bar

使用$FileDir$即可拿到当前选中文件目录的绝对路径 将脚本的工作目录从项目根目录设置为文件所在目录即可实现需求

以上资料来自IDE官网

https://www.jetbrains.com/help/idea/built-in-macros.html

除此之外 官网还描述了如何自定义宏参数的功能和使用Path环境变量指向项目外的路径

推荐内容