# 内置 IDE 宏

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

IntelliJ IDEA 提供了许多内置  宏 ，这些变量可用于为 [外部工具](configuring-third-party-tools.html)和 [运行配置](run-debug-configuration.html)定义路径、选项及其他命令行实参。 支持宏的对话框字段会在旁边显示一个加号图标 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.add.svg)：

![添加 IDE 宏](https://resources.jetbrains.com.cn/help/img/idea/2026.3/add_macros_icon.png)

宏的值取决于当前上下文。 例如，要插入包含当前文件的目录名称，请使用  `$FileDirName$` 。 要插入该目录的完整路径，请使用  `$FileDir$` 。

|  宏  |  描述  |
| --- | --- |
|   `$WORKSPACE_DIR$`   |  当前项目所属工作区的路径。 工作区是打开的文件层次结构的根目录，可以包含多个项目。  |
|   `$PROJECT_DIR$`   |  项目  `run.json`  所在的根目录。 一个项目通常是用于开发和构建应用程序的文件集合，例如 Maven 或 Node.js 项目。  |
|   `$USER_HOME$`   |  用户主目录。  |
|   `$FILE$`   |  当前文件的绝对路径，包括扩展名。  |
|   `$AffectedModuleNames$`   |  与当前文件相关的 [模块](creating-and-managing-modules.html)的名称，用逗号分隔。  |
|   `$Classpath$`   |  项目的完整类路径。  |
|   `$ClasspathEntry$`   |  与当前文件相关的类路径条目。  |
|   `$ClipboardContent$`   |  当前系统剪贴板的内容。  |
|   `$ColumnNumber$`   |  当前文件中文本光标所在的列号。  |
|   `$ContentRoot$`   |  当前文件所属的 [content root](content-roots.html) 的路径。  |
|   `$FileClass$`   |  此文件定义的类的名称。  |
|   `$FileDir$`   |  包含当前文件的目录的绝对路径。  |
|   `$FileDirName$`   |  包含当前文件的目录名称。  |
|   `$FileDirPathFromParent(dir)$`   |     包含当前文件的目录相对于指定为参数的父目录的路径  `dir` 。       ```BASH Argument 1: /Users/jetbrains/myProjects/FileDirPathFromParent/ Argument 2: 1  ```    |
|   `$FileDirRelativeToProjectRoot$`   |  包含当前文件的目录相对于模块的 [内容根](content-roots.html)的路径。  |
|   `$FileDirRelativeToSourcepath$`   |  包含当前文件的目录相对于 sourcepath 根的路径。  |
|   `$FileEncoding$`   |  当前文件的 [encoding](encoding.html)。  |
|   `$FileExt$`   |  当前文件的扩展名。  |
|   `$FileFQPackage$`   |     当前文件的完全限定包名。       例如，在  `com.example.mypackage.MyClass` 的情况下，包的全限定名是  `com.example.mypackage` 。     |
|   `$FileName$`   |  当前文件的名称（包括所有扩展名）。  |
|   `$FileNameWithoutAllExtensions$`   |     当前文件的名称，不含任何扩展名。 这在文件扩展名被重复时很有用。 它将删除所有句点及其后的所有内容。       例如，如果文件是  `hello.txt.txt` ，则  `$FileNameWithoutAllExtensions$`  宏将返回  `hello` 。     |
|   `$FileNameWithoutExtension$`   |     不带扩展名的文件名。 这只会删除一个点号和一个扩展名的组合。       例如，如果文件是  `hello.txt.txt` ，则  `$FileNameWithoutExtension$`  宏将返回  `hello.txt` 。     |
|   `$FilePackage$`   |     当前文件的直接包名（非完全限定）。       例如，对于  `com.example.mypackage.MyClass` ，该包的名称是  `mypackage` 。     |
|   `$FileParentDir$`   |  该文件所在目录的上级目录的名称。  |
|   `$FilePath$`   |  当前文件的绝对路径。  |
|   `$FilePathRelativeToProjectRoot$`   |  当前文件相对于模块的 [内容根](content-roots.html)的路径。  |
|   `$FilePathRelativeToSourcepath$`   |  到当前文件的路径相对于 sourcepath 根目录。  |
|   `$FilePrompt$`   |  显示文件系统对话框以选择文件。  |
|   `$FileRelativeDir$`   |  当前文件相对于模块的 [content root](content-roots.html) 所在的目录路径。  |
|   `$FileRelativePath$`   |  当前文件相对于模块的 [内容根](content-roots.html)的路径。  |
|   `$IsMake$`   |  如果编译是用  `true` 执行的，则返回  `make` 。  |
|   `$JavaDocPath$`   |  JavaDoc 输出目录。  |
|   `$JDKPath$`   |  项目 [JDK](sdk.html#jdk)的路径。  |
|   `$LineNumber$`   |  光标所在的当前文件的行号。  |
|   `$ModuleFileDir$`   |  当前模块文件所在目录的绝对路径。  |
|   `$ModuleFilePath$`   |  当前模块文件的绝对路径。  |
|   `$ModuleName$`   |  当前模块文件的名称，不含扩展名。  |
|   `$ModuleSdkPath$`   |  当前模块的 [JDK](sdk.html#change-module-sdk) 路径。  |
|   `$ModuleSourcePath$`   |  当前模块的源路径。  |
|   `$OSName$`   |     操作系统名称的小写形式。       它返回  `System.getProperty("os.name")`  被截断到第一个空格字符的值。 所以它不包含具体版本，只包含操作系统系列，例如  `windows` 、  `mac` 或  `linux` 。     |
|   `$OutputPath$`   |  当前模块的输出路径。  |
|   `$Password$`   |     显示一个对话框以指定密码。 与 [$Prompt$](#prompt-macro)类似，但具有输入掩码。       您可以选择在冒号后添加提示文本，例如：  `$Password:API token$`      |
|   `$ProjectFileDir$`   |  当前项目目录的绝对路径。  |
|   `$ProjectName$`   |  当前项目目录的名称。  |
|   `$Projectpath$`   |  当前项目的源路径。  |
|   `$Prompt$`   |     显示一个用于传递任意字符串的对话框。       您可以选择性地指定提示文本和默认值，以冒号分隔，例如：  `$Prompt:Username:Alice$`      |
|   `$RemoteProjectFileDir$`   |  远程服务器上项目目录的绝对路径。  |
|   `$SelectedText$`   |  当前在编辑器中选中的文本。  |
|   `$SelectionEndColumn$`   |  选择结束的列号。  |
|   `$SelectionEndLine$`   |  所选行号的结尾位置。  |
|   `$SelectionStartColumn$`   |  选择开始的列号。  |
|   `$SelectionStartLine$`   |  所选内容开始的行号。  |
|   `$Sourcepath$`   |  项目的完整 sourcepath。  |
|   `$SourcepathEntry$`   |  与当前文件相关的 sourcepath 条目。  |
|   `$TempDir$`   |     临时文件目录。       在 Windows 上，它要么返回  `%TEMP%`  环境变量的值，要么退回到用户主目录下的  `AppData\Local\Temp` （由  `System.getProperty("user.home")`  返回）。       在其他操作系统上，  `$TempDir$`  返回  `/tmp` 。     |
|   `$UnixSeparators(path)$`   |     将路径作为参数，并将所有分隔符转换为正斜杠。       例如，  `$UnixSeparators(\foo\bar)$`  将返回  `/foo/bar` 。     |

## 项目外部资源的路径

您可以使用 [path variables](absolute-path-variables.html)指向项目外部的资源。 以与添加宏相同的方式添加配置路径变量——在变量前后加上美元符号：  `$MY_VAR$` 。

Procedure: 创建新的路径变量

1. 按 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) 打开设置，然后选择  `外观 & 行为 | 路径变量` 。

![路径变量对话框](https://resources.jetbrains.com.cn/help/img/idea/2026.3/path-variables-dialog.png)

2. 点击 !["添加"按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.add.svg)，输入变量的名称和值，然后点击   OK   以应用更改。

## 自定义宏

您可以使用  `com.intellij.ide.macro.Macro`  扩展点为您的插件定义自定义宏。 然后，注册该 macro 到  `plugin.xml` ：

```XML

<macro implementation="full.macro.class.Name"/>


```

有关可用扩展点的更多信息，请参阅 [IntelliJ Platform Plugin SDK 文档](https://plugins.jetbrains.com/docs/intellij/extension-point-list.html#intellijplatformremoteserversimplxml)。

