# easychangedirectory
> **Tools for easy cd**
[![Latest version](https://img.shields.io/crates/v/easychangedirectory)](https://crates.io/crates/easychangedirectory)
[![crates.io downloads](https://img.shields.io/crates/d/easychangedirectory?label=downloads&style=flat-square)](https://crates.io/crates/easychangedirectory)
[![Github All Releases](https://img.shields.io/github/downloads/dijdzv/easychangedirectory/total.svg)](https://github.com/dijdzv/easychangedirectory/releases)
[![codecov](https://codecov.io/gh/dijdzv/easychangedirectory/branch/main/graph/badge.svg?token=V568GOT5XP)](https://codecov.io/gh/dijdzv/easychangedirectory)
[![Apache](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](LICENSE-APACHE)
[![MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE-MIT)
[![Build Status](https://github.com/dijdzv/easychangedirectory/actions/workflows/rust.yml/badge.svg?branch=)](https://github.com/dijdzv/easychangedirectory/actions/workflows/rust.yml)
[![release](https://github.com/dijdzv/easychangedirectory/actions/workflows/release.yml/badge.svg?branch=)](https://github.com/dijdzv/easychangedirectory/actions/workflows/release.yml)
Dual-licensed under [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT).
[Features](#features) / [Usage](#usage) / [Support shell](#support-shell) / [Installation](#installation) / [Environment variable](#environment-variable)
## Features
- Can change paths visually
- The `cd` functionality can also be used as-is
![demo](./assets/demo.gif)
## Usage
Command `ed`
| Key | Description |
| ------------------ | ------------------------------------------- |
| `↑` `k` | Move up |
| `↓` `j` | Move down |
| `←` `h` | Move parent directory |
| `→` `l` | Move Child directory |
| `Home` | Move to top |
| `End` | Move to bottom |
| `PageUp` | Skip a little and move up |
| `PageDown` | Skip a little and move down |
| `Enter` `c` `;` | Change directory to current directory |
| `Esc` `Ctrl+c` `q` | Exit and return to original directory |
| `Insert` `Ctrl+s` | Search mode switch (Char key will not work) |
| `Backspace` | Delete one character from the search string |
| `Delete` | Delete all search strings |
| `V` | Open VSCode in the current directory |
| `p` | Print the selected filepath |
If it does not work, try restarting the shell.
## Support shell
- Bash
- Fish
- Powershell
- Zsh
## Installation
[Install](#install) and [Register in the shell](#register-easychangedirectory-in-shell)
### Install
- If you can use Cargo
```
cargo install --locked easychangedirectory
```
- Download from Release page
- Download the data appropriate for your environment and place it in a directory with a path
We will add more as needed.
### Register **_easychangedirectory_** in shell
Bash
Add to `~/.bashrc` (Change as necessary)
```bash
eval "$(easychangedirectory --init bash)"
```
Run `. ~/.bashrc` as needed
Fish
Add to `~/.config/fish/config.fish` (Change as necessary)
```fish
easychangedirectory --init fish | source
```
Run `. ~/.config/fish/config.fish` as needed
Powershell
Add to the file found by `echo $profile`
```powershell
Invoke-Expression (& { (easychangedirectory --init powershell | Out-String) } )
```
Run `. $profile` as needed
Zsh
Add to `~/.zshrc` (Change as necessary)
```zsh
eval "$(easychangedirectory --init zsh)"
```
Run `. ~/.zshrc` as needed
## Environment variable
You can check all environment variable values with `ed --env`.
- `_ED_PWD`
- If the value is `1`, print current directory after execution
- `_ED_SET_BG`
- If the value is `1`, set black background
- `_ED_SHOW_INDEX`
- If the value is `1`, the index is displayed on the left side of the list
- `_ED_VIEW_FILE_CONTENTS`
- If the value is `1`, the file contents can be viewed
- Preview is possible without setting
- `_ED_LOG`
- If the value is `1`, output log to `HOME/.easychangedirectory/ed.log`
- If an environment variable appropriate for `HOME` is not found, panic ensues.
- Log output location will be printed upon completion