Skip to content

z-shell/zsh-cmd-architect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo ❮ Zsh Command Architect ❯

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.

🐧 Test sh (Linux) ✅ Zsh

💡 Wiki: ZCA - Plugins

Keys Description
Ctrl+T Start Zsh Command Architect (Zshell binding)
Enter Delete selected segment (command window) or add selected segment (history window)
[ or ] Move active segment (when in command window)
Shift+left or Shift+right Move active segment (when in command window)
Tab Switch between the two available windows
g, G Beginning and end of the list
/ Start incremental search
Esc Exit incremental search, clearing filter
<,>, {,} Horizontal scroll
Ctrl+L Redraw of whole display
Ctrl+O, o Enter uniq mode (no duplicate lines)
Ctrl+W (in incremental search) - delete whole word
Ctrl+K (in incremental search) - delete whole line
Ctrl+D, Ctrl+U Half page up or down
Ctrl+P, Ctrl+N Previous and next (also done with vim's j,k)

Installation

Add zi load z-shell/zsh-cmd-architect to .zshrc.

Zgen

Add zgen load z-shell/zsh-cmd-architect to .zshrc and issue a zgen reset (this assumes that there is a proper zgen save construct in .zshrc).

Antigen

Add antigen bundle z-shell/zsh-cmd-architect@main to .zshrc. There also should be antigen apply.

Standalone

sh -c "$(curl -fsSL https://raw.githubusercontent.com/z-shell/zsh-cmd-architect/main/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 code snippet at the bottom.

After installing and reloading shell give ZCA a quick try with Ctrl+T.

Manual

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"

ZCA detects if it is used by any plugin manager and can handle $fpath update by itself.

Single File

Running script doc/generate_single_file will create single-file version of ZCA.

It can be sourced from .zshrc.

Note:

  • Don't forget about configuration files (copy them to ~/.config/zca).

Performance

ZCA is fastest with Zsh before 5.0.6 and starting from 5.2

Fixing tmux, screen and linux vt

If TERM=screen-256color (often a case for tmux and screen sessions) then ncv terminfo capability will have 2nd 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.


Also check out Zsh Navigation Tools and Zsh Editing Workbench