idea - JetBrains 系列軟件內置IDE宏參數(shù)
前情提要:
最近在學習pyqt框架進行pythonGUI的開發(fā),安裝過程中有需要將一個python腳本配置成IDE的?
External Tools 方便使用

可以達到的效果是在項目管理器中選中一個文件即可對這個文件格式進行轉換
但是缺點是只能選中目錄中的第一層文件 因為腳本中的宏替換為projectDir
當我們的文件處于項目深層目錄中講無法找到文件
深度思考> 既然projectDir為項目目錄,那是否可以拿到當前選中的那個文件的父目錄呢
進行一番搜尋找到了答案
以下是IDE內置的所以宏參數(shù)

描述
$AffectedModuleNames$
與當前文件相關的https://www.jetbrains.com/help/idea/creating-and-managing-modules.html的名稱,以逗號分隔。
$Classpath$
項目的完整類路徑。
$ClasspathEntry$
類路徑中與當前文件相關的條目。
$ClipboardContent$
系統(tǒng)剪貼板的當前內容。
$ColumnNumber$
插入符號在當前文件中所在的列號。
$ContentRoot$
當前文件所屬https://www.jetbrains.com/help/idea/content-roots.html目錄的路徑。
$FileClass$
由當前文件定義的類的名稱。
$FileDir$
包含當前文件的目錄的絕對路徑。
$FileDirName$
包含當前文件的目錄的名稱。
$FileDirPathFromParent(dir)$
包含當前文件的目錄的路徑,該目錄相對于指定為參數(shù)的父目錄。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$
顯示用于選擇文件的文件系統(tǒng)對話框。
$FileRelativeDir$
當前文件相對于模塊https://www.jetbrains.com/help/idea/content-roots.html目錄所在的目錄的路徑。
$FileRelativePath$
相對于模塊內容https://www.jetbrains.com/help/idea/content-roots.html目錄的當前文件的路徑。
$IsMake$
如果使用 執(zhí)行編譯,則返回。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)$
采用路徑作為參數(shù),并將所有分隔符轉換為正斜杠。
例如,將返回 .$UnixSeparators(\foo\bar)$/foo/bar

?使用$FileDir$即可拿到當前選中文件目錄的絕對路徑 將腳本的工作目錄從項目根目錄設置為文件所在目錄即可實現(xiàn)需求

以上資料來自IDE官網(wǎng)
https://www.jetbrains.com/help/idea/built-in-macros.html
除此之外 官網(wǎng)還描述了如何自定義宏參數(shù)的功能和使用Path環(huán)境變量指向項目外的路徑