Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time



DirTags are relative paths that appear as variables in the Powershell prompt that update as you navigate. It's geat for saving keystrokes when navigating folder structures.

A basic example

Consider this overly simple project structure:

    - docs
        - internal
            - server
    - src
        - server

Let's say that we are working in project1/src/server. While editing server code, we may wish to create a documentation file in docs/internal/server...

PS C:\project1\src\server> subl ..\..\docs\internal\server\

Simple enough, but we did have pay attention to current folder depth. Let's try a DirTag:

In dirtags.json:

  "dirTags": [
      "name": "docs",
      "path": "docs"

PSDirTag will walk up the current path to find the first folder with that name, setting it as variable $docs. It wil update upon prompt refresh (more on that later).

PS C:\project1\src\server> $docs

I use autocomplete: PS C:\project1\src\server> subl $docs/i and press {tab}...

Powershell resolves the path... PS C:\project1\src\server> subl C:\project1\docs\internal\ ... and I may continue typing the command: PS C:\project1\src\server> subl C:\project1\docs\internal\server\

A slighter better example

Folder name docs maybe bit a bit too generic, so let's narrow it down to internal server docs:

In dirtags.json:

  "dirTags": [
      "name": "serverdocs",
      "path": "docs\\internal\\server"

I can now tab-complete and use the new dirtag:

PS C:\project1\src\server> $serverdocs

Consider a scenario where it is common to work with multiple projects with the same folder structure. Assume there is another folder, project2, with a similar folder structure to the example above. I may access the same dirtag from anywhere in project2:

PS C:\features\project2\src\server> $serverdocs

The optional but complementary workspaceTags

WorkspaceTags provide:

  • A variable to an absoute path.
  • Derived variables for all dirtags that have a matching path under each workspace. Access another projects dirTags from anywhere.
  • Think project folder or maybe a vcs repository.

Consider this dirtags.json:

  "dirTags": [
      "name": "serverdocs",
      "path": "docs\\internal\\server"
      "name": "servercode",
      "path": "src\\server"
  "workspaceTags": [
        "name": "mainline",
        "path": "C:\\project1"
        "name": "devline",
        "path": "C:\\features\\project2"

Variables $mainline $devline are now registered and work as expected.

PS C:\> cd $devline
PS C:\features\project2>

In addition, each dirTag is checked for existence in each workspace. These variables now exist as well:

$mainline_serverdocs points to C:\project1\docs\internal\server

$mainline_servercode points to C:\project1\src\server

$devline_serverdocs points to C:\features\project2\docs\internal\server

$devline_servercode points to C:\features\project2\src\server

As with any variable, you may locate them via tab completion.


Step 1: Installation

Via PowerShell Gallery (Powershell v5 required)

Install-Module -Name PSDirTag -Scope CurrentUser

Via GitHub (PowerShell v3+ required)

Clone or download this repo to $env:homepath\documents\WindowsPowerShell\Modules

Step 2: Configuration

Place a json config file named dirtags.json in your $profile folder. Add any dirTags or workspaceTags as desired.

Example dirtags.json file:

  "dirTags": [
      "name": "projtools",
      "path": "src\\tools"
      "name": "appimg",
      "path": "resources\\data\\images"

Step 3: Load the module

Import-Module PSDirTag

optional verbose mode

import-module PSDirTag -force -verbose -ArgumentList $true

Either of these lines may be placed in the PowerShell profile script, accessible via variable $PROFILE.


See all tags in scope relative to the current directory.



Run the following

Unregister-DirtagsPrompt; Remove-Module PSDirTag


  • Support multiple possible paths per tag.


DirTags are relative paths that appear as variables in the Powershell prompt that update as you navigate. Saves keystrokes when navigating folder structures.




You can’t perform that action at this time.