Also check out Zsh Navigation Tools and Zsh Editing Workbench
Zsh Command Architect in action:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/psprint/zsh-cmd-architect/master/doc/install.sh)"
To update run the command again.
ZCA
will be installed at ~/.config/zca/zsh-cmd-architect
, config files will be copied to ~/.config/zca
. .zshrc
will be updated with only 4
lines of code that will be added to the bottom.
After installing and reloading shell give ZCA
a quick try with Ctrl-T
.
Installation With Zplugin
Add zplugin load psprint/zsh-cmd-architect
to .zshrc
. The config files will be available in ~/.config/zca
.
Add zgen load psprint/zsh-cmd-architect
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/zca
.
Add antigen bundle psprint/zsh-cmd-architect
to .zshrc
. There also
should be antigen apply
. The config files will be in ~/.config/znt
.
After extracting ZCA
to {some-directory}
add following two lines to ~/.zshrc
:
fpath+=( {some-directory} )
source "{some-directory}/zsh-cmd-architect.plugin.zsh"
As you can see, no plugin manager is needed to use the *.plugin.zsh
file. The above two lines of code are all that almost all plugin
managers do. In fact, what's actually needed is only:
source "{some-directory}/zsh-cmd-architect.plugin.zsh"
because ZCA
detects if it is used by any plugin manager and can
handle $fpath
update by itself.
Running script doc/generate_single_file
will create single-file version of ZCA
.
It can be sourced from .zshrc
. Don't forget about configuration files (copy them to ~/.config/zca
).
ZCA
allows to copy segments of commands in history, rearrange segments of current command,
delete segments of current command. This way user glues command from parts without using
a mouse. Advanced history search (multi word, without duplicate lines) allows to quickly find
the parts.
Keys are:
Ctrl-T
- start Zsh Command Architect (Zshell binding)Enter
- delete selected segment (when in command window) or add selected segment (when in history window)[
or]
- move active segment (when in command window)Shift-left
orShift-right
- move active segment (when in command window)Tab
- switch between the two available windowsg, G
- beginning and end of the list/
- start incremental searchEsc
- exit incremental search, clearing filter<
,>
,{
,}
- horizontal scrollCtrl-L
- redraw of whole displayCtrl-O
,o
- enter uniq mode (no duplicate lines)Ctrl-W
(in incremental search) - delete whole wordCtrl-K
(in incremental search) - delete whole lineCtrl-D
,Ctrl-U
- half page up or downCtrl-P
,Ctrl-N
- previous and next (also done with vim's j,k)
ZCA
is fastest with Zsh
before 5.0.6
and starting from 5.2
Channel #zplugin@freenode
is a support place for all author's projects. Connect to:
chat.freenode.net:6697 (SSL) or chat.freenode.net:6667
and join #zplugin.
Following is a quick access via Webchat
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
terminfo file, run:
{ infocmp -x screen-256color; printf '\t%s\n' 'ncv@,'; } > /tmp/t && tic -x /tmp/t
A file will be created in directory ~/.terminfo
and will be automatically
used, tmux
and screen
will work. Similar is for Linux virtual terminal:
{ infocmp -x linux; printf '\t%s\n' 'ncv@,'; } > /tmp/t && tic -x /tmp/t
It will not display underline properly, but will instead highlight by a color,
which is quite nice. The same will not work for FreeBSD's vt, ZCA
will detect
if that vt is used and will revert to highlighting elements via reverse
mode.