DirTags are relative paths that appear as variables in the Powershell prompt that update as you navigate. Saves keystrokes when navigating folder structures.
MIT License
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.
Consider this overly simple project structure:
project1
- 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\new-feature.md
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
C:\project1\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\new-feature.md
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
C:\project1\docs\internal\server
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
C:\features\project2\docs\internal\server
WorkspaceTags provide:
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.
Install-Module -Name PSDirTag -Scope CurrentUser
Clone or download this repo to $env:homepath\documents\WindowsPowerShell\Modules
Place a json config file named dirtags.json
in your $profile
folder. Add any dirTags or workspaceTags as desired.
dirtags.json
file:{
"dirTags": [
{
"name": "projtools",
"path": "src\\tools"
},
{
"name": "appimg",
"path": "resources\\data\\images"
}
]
}
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.
Get-DirTags
Run the following
Unregister-DirtagsPrompt; Remove-Module PSDirTag