3. Configuration option for doing instant selection in search mode
3. Configuration option for doing instant selection in search mode
## Installation
```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/psprint/zsh-navigation-tools/master/doc/install.sh)"
```
To update run the command again.
`ZNT` will be installed at `~/.config/znt/zsh-navigation-tools`, config files will be copied to `~/.config/znt`. `.zshrc`
will be updated with only `8` lines of code, which will be added at the bottom.
After installing and reloading shell give `ZNT` a quick try with `Ctrl-R` – this keyboard shortcut will open `n-history`.
## Installation With [Zplugin](https://github.com/psprint/zplugin)
Add `zplugin load psprint/zsh-navigation-tools` to `.zshrc`. The config files will be in `~/.config/znt`.
## Installation With Zgen
Add `zgen load psprint/zsh-navigation-tools` to `.zshrc` and issue a `zgen reset` (this assumes that there is a proper `zgen save` construct in `.zshrc`).
The config files will be available in `~/.config/znt`.
## Installation With Antigen
Add `antigen bundle psprint/zsh-navigation-tools` to `.zshrc`. There also
should be `antigen apply`. The config files will be in `~/.config/znt`.
## Single File Manual Installation
Running script `doc/generate_single_file` will create single-file version of `ZNT`.
It can be sourced from `.zshrc`. Don't forget about configuration files as described
above.
## Manual Installation
After extracting `ZNT` to `{some-directory}` add following two lines
Create aliases to avoid typing of the minus sign "-":
```zsh
alias naliases=n-aliases ncd=n-cd nenv=n-env nfunctions=n-functions nhistory=n-history
alias nkill=n-kill noptions=n-options npanelize=n-panelize nhelp=n-help
```
Don't forget to copy [configuration files](https://github.com/psprint/zsh-navigation-tools/tree/master/.config/znt). They should go to `~/.config/znt`. Moreover, `n-cd` works together with option `AUTO_PUSHD` and you should have:
```zsh
setopt AUTO_PUSHD
```
in `.zshrc` (also recommend `PUSHD_IGNORE_DUPS`). Without the option `n-cd`
will just work as incremental searcher of directory bookmarks.
## History Widget
To have `n-history` as the incremental searcher bound to `Ctrl-R` copy `znt-*`
files into the `*/site-functions` dir (unless you do single file install) and
add:
```zsh
autoload znt-history-widget
zle -N znt-history-widget
bindkey "^R" znt-history-widget
```
to `.zshrc`. This is done automatically when using the installer, zgen, antigen
or single file install. Two other widgets exist, `znt-cd-widget` and
`znt-kill-widget`, they too can be assigned to key combinations (`autoload` is done
in `.zshrc` so no need of it):
```zsh
zle -N znt-cd-widget
bindkey "^B" znt-cd-widget
zle -N znt-kill-widget
bindkey "^Y" znt-kill-widget
```
## Introduction
## Introduction
The tools are:
The tools are:
- n-aliases - browses aliases, relegates editing to vared
-`n-aliases` - browses aliases, relegates editing to `vared`
- n-cd - browses dirstack and bookmarked directories, allows to enter selected directory
-`n-cd` - browses dirstack and bookmarked directories, allows to enter selected directory
- n-functions - browses functions, relegates editing to zed or vared
-`n-functions` - browses functions, relegates editing to `zed` or `vared`
- n-history - browses history, allows to edit and run commands from it
-`n-history` - browses history, allows to edit and run commands from it
- n-kill - browses processes list, allows to send signal to selected process
-`n-kill` - browses processes list, allows to send signal to selected process
- n-env - browses environment, relegates editing to vared
-`n-env` - browses environment, relegates editing to `vared`
- n-options - browses options, allows to toggle their state
-`n-options` - browses options, allows to toggle their state
- n-panelize - loads output of given command into the list for browsing
-`n-panelize` - loads output of given command into the list for browsing
All tools support horizontal scroll with <,>, {,}, h,l or left and right
All tools support horizontal scroll with `<`,`>`, `{`,`}`, `h`,`l` or left and right cursors. Other keys are:
cursors. Other keys are:
-`H`, `?` (from n-history) - run n-help
- [,] - jump directory bookmarks in n-cd and typical signals in n-kill
-`Ctrl-R` - start n-history, the incremental, multi-keyword history searcher (Zsh binding)
- Ctrl-d, Ctrl-u - half page up or down
-`Ctrl-A` - rotate entered words (1+2+3 -> 3+1+2)
- Ctrl-p, Ctrl-n - previous and next (also done with vim's j,k)
-`Ctrl-F` - fix mode (approximate matching)
- Ctrl-l - redraw of whole display
-`Ctrl-L` - redraw of whole display
- g, G - beginning and end of the list
-`Ctrl-T` - browse themes (next theme)
- Ctrl-o, o - enter uniq mode (no duplicate lines)
-`Ctrl-G` - browse themes (previous theme)
- / - start incremental search
-`Ctrl-U` - half page up
- Enter - finish incremental search, retaining filter
-`Ctrl-D` - half page down
- Esc - exit incremental search, clearing filter
-`Ctrl-P` - previous element (also done with vim's k)
- Ctrl-w (in incremental search) - delete whole word
-`Ctrl-N` - next element (also done with vim's j)
- Ctrl-k (in incremental search) - delete whole line
-`[`, `]` - jump directory bookmarks in n-cd and typical signals in n-kill
-`g`, `G` - beginning and end of the list
-`/` - show incremental search
-`F3` - show/hide incremental search
-`Esc` - exit incremental search, clearing filter
-`Ctrl-W` (in incremental search) - delete whole word
-`Ctrl-K` (in incremental search) - delete whole line
-`Ctrl-O`, `o` - enter uniq mode (no duplicate lines)
-`Ctrl-E`, `e` - edit private history (when in private history view)
elements (grepping is done outside n-list, see the tools for how it can be
elements (grepping is done outside `n-list`, see the tools for how it can be
done). To set up non-selectable entries add their indices into array
done). To set up non-selectable entries add their indices into array
NLIST_NONSELECTABLE_ELEMENTS:
`NLIST_NONSELECTABLE_ELEMENTS`:
typeset -a NLIST_NONSELECTABLE_ELEMENTS
```zsh
NLIST_NONSELECTABLE_ELEMENTS=( 1 )
typeset-a NLIST_NONSELECTABLE_ELEMENTS
NLIST_NONSELECTABLE_ELEMENTS=( 1 )
```
Result is stored as $reply[REPLY] ($ isn't needed before REPLY because
Result is stored as `$reply[REPLY]` (`$` isn't needed before `REPLY` because
of arithmetic context inside []). The returned array might be different from
of arithmetic context inside `[]`). The returned array might be different from
input arguments as n-list can process them via incremental search or uniq
input arguments as `n-list` can process them via incremental search or uniq
mode. $REPLY is the index in that possibly processed array. If $REPLY
mode. `$REPLY` is the index in that possibly processed array. If `$REPLY`
equals -1 it means that no selection have been made (user quitted via q
equals `-1` it means that no selection have been made (user quitted via `q`
key).
key).
To set up entries that can be jumped to with [,] keys add their indices to
To set up entries that can be jumped to with `[`,`]` keys add their indices to
NLIST_HOP_INDEXES array:
`NLIST_HOP_INDEXES` array:
typeset -a NLIST_HOP_INDEXES
```zsh
NLIST_HOP_INDEXES=( 1 10 )
typeset-a NLIST_HOP_INDEXES
NLIST_HOP_INDEXES=( 1 10 )
```
n-list can automatically colorize entries according to a Zsh pattern.
`n-list` can automatically colorize entries according to a `Zsh` pattern.
Following example will colorize all numbers with blue:
Following example will colorize all numbers with blue:
local NLIST_COLORING_PATTERN="[0-9]##"
```zsh
local NLIST_COLORING_COLOR=$'\x1b[00;34m'
local NLIST_COLORING_PATTERN="[0-9]##"
local NLIST_COLORING_END_COLOR=$'\x1b[0m'
local NLIST_COLORING_COLOR=$'\x1b[00;34m'
local NLIST_COLORING_MATCH_MULTIPLE=1
local NLIST_COLORING_END_COLOR=$'\x1b[0m'
n-list "This is a number 123" "This line too has a number: 456"
local NLIST_COLORING_MATCH_MULTIPLE=1
n-list "This is a number 123""This line too has a number: 456"
```
Blue is the default color, it doesn't have to be set. See zshexpn man page
Blue is the default color, it doesn't have to be set. See `zshexpn` man page
for more information on Zsh patterns. Briefly, comparing to regular
for more information on `Zsh` patterns. Briefly, comparing to regular
expressions, (#s) is ^, (#e) is $, # is *, ## is +. Alternative
expressions, `(#s)` is `^`, `(#e)` is `$`, `#` is `*`, `##` is `+`. Alternative
will work when in parenthesis, i.e. (a|b). BTW by using this method you can
will work when in parenthesis, i.e. `(a|b)`. BTW by using this method you can
colorize output of the tools, via their config files (check out e.g. n-cd.conf,
colorize output of the tools, via their config files (check out e.g. n-cd.conf,
it uses this).
it is using this).
## Performance
## Performance
ZNT are fastest with Zsh before 5.0.6 and starting from 5.2
`ZNT` are fastest with `Zsh` before `5.0.6` and starting from `5.2`
## A tip
Zsh plugins may look scary, as they seem to have some "architecture". In fact, what a plugin really is, is that:
1. It has its directory added to `fpath`
2. It has any first `*.plugin.zsh` file sourced
That's it. When one contributes to Oh-My-Zsh or creates a plugin for any plugin manager, he only needs to account for this.
The same with doing any non-typical Zsh Navigation Tools installation.
## More
- be aware of [this](https://github.com/psprint/zsh-navigation-tools/blob/f49f910d239ae5bc6e1a5bb34930307b4f4e3ffe/zsh-navigation-tools.plugin.zsh#L35-L49)
## IRC Channel
Channel `#zplugin@freenode` is a support place for all author's projects. Connect to:
[chat.freenode.net:6697](ircs://chat.freenode.net:6697/%23zplugin)(SSL) or [chat.freenode.net:6667](irc://chat.freenode.net:6667/%23zplugin)
and join #zplugin.
Following is a quick access via Webchat [![IRC](https://kiwiirc.com/buttons/chat.freenode.net/zplugin.png)](https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin)
# Fixing tmux, screen and linux vt
If `TERM=screen-256color` (often a case for `tmux` and `screen` sessions) then
`ncv` terminfo capability will have `2`nd bit set. This in general means that
underline won't work. To fix this by creating your own `ncv=0`-equipped