A replacement for tree
command that uses git ls-files
as source of file when
possible.
tre can also create shell aliases that, when executed, opens the file associated with it with the default editor. Here's that function in action:
… in case you missed it: "22" is listed in front of "README.md" and typing "e22" opened the file! See how to set this up.
Runs on Unix as well as Windows PowerShell.
brew install dduan/formulae/tre
scoop bucket add dduan https://github.com/dduan/scoop-bucket
scoop install tre
snap install --devmode --beta tre
- Clone this repository:
git clone https://github.com/dduan/tre.git
. - Ensure you have Rust and Cargo installed. If not, follow instruction here.
- In the root level of this repo, run
cargo build --release
. - Move
target/release/tre
to somewhere in your PATH environment variable.
tre provides a -e
flag that, when used, turns on the "editor aliasing"
feature. Some shell configuration will make this work better.
By default, the environment variable $EDITOR
is used as the editor. If a
value following -e
is supplied (tre -e emacs
instead of tre -e
), then
the command specified by this value will be used instead of $EDITOR
. Update
the script in the next section accordingly.
In ~/.bashrc
or ~/.zshrc
(for example)
tre() { command tre "$@" -e && source "/tmp/tre_aliases_$USER" 2>/dev/null; }
Create ~/.config/fish/functions/tre.fish
:
function tre
command tre $argv -e; and source /tmp/tre_aliases_$USER ^/dev/null
end
Instead of directly executing tre.exe
, we'll set up a script that's
available in your PATH
environment variable. For example, you can add
\Users\yourname\bin
to your PATH
environment variable, and created the
script there. When you use tre
, this script executes tre.exe
, and do some
additional work. The content of the script is different for PowerShell and
Command Prompt.
By default, the default program known by Windows will be used to open the
file. If a value following -e
is supplied (tre -e notepad.exe
instead of
tre -e
), then the command specified by this value will be used. Update the
scripts in the next section accordingly.
Add a tre.ps1
file:
if (Get-Module PSReadLine) {
Remove-Module -Force PSReadLine
}
tre.exe $args -e
. $Env:TEMP\tre_aliases_$env:USERNAME.ps1
Add a tre.bat
:
@echo off
tre.exe %* -e
call %TEMP%\tre_aliases_%USERNAME%.bat
The first thing you'll notice is some numbers in front of each file name in
tre's output. If pick a number, say, "3", and enter e3
in the shell, the file
after "3" will open in your default program (specified by the environment
variable EDITOR
in macOS/Linux, and picked by Windows).
Everytime tre runs with -e
, it updates a file in a temporary directory, and
adds an alias for each result it displays. And the additional configuration
simply sources this file after the command. You can manually run
in bash:
source /tmp/tre_aliases_$USER
or
in PowerShell
. $Env:TEMP\tre_aliases_$env:USERNAME.ps1
or
in Command Prompt
call %TEMP%\tre_aliases_%USERNAME%.bat
… instead of configuring your system (if you are that patient!).
MIT. See LICENSE.md
.