1
0
mirror of https://github.com/skywind3000/z.lua synced 2026-03-22 07:39:48 +00:00

3 Commits

Author SHA1 Message Date
skywind3000
92fc98d392 update doc 2019-02-16 14:43:54 +08:00
skywind3000
0b159b6c25 1.5.2: be aware of all arguments in fzf completion 2019-02-16 14:40:48 +08:00
skywind3000
6e330ab46f update doc for dirstack 2019-02-15 20:55:50 +08:00
3 changed files with 24 additions and 19 deletions

View File

@@ -341,7 +341,7 @@ alias zh='z -I -t .'
第一列数据代表该路径多少秒以前访问过,第二列是路径名称。此时,你可以试着敲几个字母,用 fzf 的字符串模糊匹配进行定位或者用光标键的上和下CTRL+J/K 也可以)来上下移动,最后按回车 cd 过去,或者 ESC 放弃。
版本 `v1.5.1` 引入了模拟 "dir stack" 可以通过: `z -``z --` 和 `z -{num}` 来操作:
版本 `v1.5.1` 引入了模拟 `dirstack` 可以通过: `z -``z --` 和 `z -{num}` 来操作
```bash
# 显示当前的 dir stack
@@ -361,8 +361,11 @@ $ z -
=> cd -
```
这个 `dirstack` 是根据 z.lua 的路径历史数据库计算的出来的,所以和具体的 shell 或者操作系统都没有关系。你退出再登陆不会丢失这些路径历史,不同的 shell 之间也可以共享同一份历史数据。
注意:最好把增强匹配模式打开,这样查看历史路径时可以把当前路径过滤掉。
## Tips
推荐一些常用的命令别名:

View File

@@ -343,21 +343,7 @@ NOTE: To enable this, command `fzf` must be found in `$PATH` before initializati
## Most Recently Accessed Path
We always use `cd -` to go back to last accessed directory, but with the help of `fzf` we can achieve this productively:
```bash
alias zh='z -I -t .'
```
The new alias `zh` (jump to history) uses a parameter `-t` to sort the result by time and `-I` to use `fzf` for selection. the result is:
![](images/mru.png)
The first column indicates how many seconds ago you have visited, and the second column is the path name. With `zh`, you can type some character to use string matching in fzf, or use `<Up>`/`<Down>` (as well as `CTRL+j/k`) to move the selector (red `>`) up and down.
At last, press `<enter>` to accept or `<ESC>` to give up.
Version `v1.5.1` has introduced a simulated "dir stack", which can be manipulated by `z -`, `z --` and `z -{num}`:
`z.lua` provides a fast way to visit MRU directories without typing any keyword. That is `dirstack`, which records recently visited paths and can be manipulated by `z -`, `z --` and `z -{num}`:
```bash
# display current dir stack
@@ -377,6 +363,22 @@ $ z -
=> cd -
```
The `dirstack` is calculated from z.lua's database, and has no dependency on shells or systems. You will not lost records after re-login, and history can be shared across shells and sessions.
There is another way to access MRU directories interactively by utilizing parameter `-I` (fzf) and `-t` (sort by time):
```bash
alias zh='z -I -t .'
```
The new alias `zh` (jump to history) uses a parameter `-t` to sort the result by time and `-I` to use `fzf` for selection. the result is:
![](images/mru.png)
The first column indicates how many seconds ago you have visited, and the second column is the path name. With `zh`, you can type some character to use string matching in fzf, or use `<Up>`/`<Down>` (as well as `CTRL+j/k`) to move the selector (red `>`) up and down.
At last, press `<enter>` to accept or `<ESC>` to give up.
Remember to enable the [enhanced matching](#enhanced-matching) algorithm, the current working directory can be skipped with it.
@@ -448,6 +450,7 @@ As you see, z.lua is the fastest one and requires less resource.
## History
- 1.5.2 (2019-02-16): be aware of all arguments in fzf completion.
- 1.5.1 (2019-02-15): new: simulated dir stack by `z -`, `z --` and `z -{num}`.
- 1.5.0 (2019-02-14): fixed minor issues in backward jumping.
- 1.4.7 (2019-02-13): Don't use regex in backward jumping (use plain text instead).

5
z.lua
View File

@@ -4,7 +4,7 @@
-- z.lua - a cd command that learns, by skywind 2018, 2019
-- Licensed under MIT license.
--
-- Version 1.5.1, Last Modified: 2019/02/15 11:26
-- Version 1.5.2, Last Modified: 2019/02/16 14:25
--
-- * 10x faster than fasd and autojump, 3x faster than z.sh
-- * available for posix shells: bash, zsh, sh, ash, dash, busybox
@@ -1900,8 +1900,7 @@ if [ "$TERM" != "dumb" ] && command -v fzf >/dev/null 2>&1; then
# To redraw line after fzf closes (printf '\e[5n')
bind '"\e[0n": redraw-current-line'
_zlua_fzf_complete() {
local query="${COMP_WORDS[COMP_CWORD]}"
local selected=$(_zlua | sed "s|$HOME|\~|" | $zlua_fzf --query "$query" | sed 's/^[0-9,.]* *//')
local selected=$(_zlua -l "${COMP_WORDS[@]:1}" | sed "s|$HOME|\~|" | $zlua_fzf | sed 's/^[0-9,.]* *//')
if [ -n "$selected" ]; then
COMPREPLY=( "$selected" )
fi