mirror of https://github.com/ohmyzsh/ohmyzsh.git
Compare commits
5 Commits
05e03e04d4
...
8d99959ba0
Author | SHA1 | Date |
---|---|---|
Daniel Braunwarth | 8d99959ba0 | |
dependabot[bot] | 6e9cda3d30 | |
ohmyzsh[bot] | d689aa289e | |
Felipe Contreras | 8c5b71b2f4 | |
Daniel Braunwarth | 7558d5f05e |
|
@ -2,11 +2,13 @@ dependencies:
|
|||
plugins/gitfast:
|
||||
repo: felipec/git-completion
|
||||
branch: master
|
||||
version: tag:v2.1
|
||||
version: tag:v2.2
|
||||
postcopy: |
|
||||
set -e
|
||||
rm -rf git-completion.plugin.zsh Makefile README.adoc t tools
|
||||
test -e git-completion.zsh && mv -f git-completion.zsh _git
|
||||
rm -rf git-completion.plugin.zsh Makefile t tools
|
||||
mv README.adoc MANUAL.adoc
|
||||
mv -f src/* .
|
||||
rmdir src
|
||||
plugins/gradle:
|
||||
repo: gradle/gradle-completion
|
||||
branch: master
|
||||
|
|
|
@ -3,5 +3,5 @@ charset-normalizer==3.4.1
|
|||
idna==3.10
|
||||
PyYAML==6.0.2
|
||||
requests==2.32.3
|
||||
semver==3.0.2
|
||||
semver==3.0.3
|
||||
urllib3==2.3.0
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
This project is a friendly fork of the official Git completion
|
||||
(`contrib/completion`) and prompt scripts for Bash, Zsh, and possibly other
|
||||
shells.
|
||||
|
||||
Most Git developers use the Bash shell, for which the completion scripts work
|
||||
rather well, however, Zsh is typically neglected. I've sent many patches to fix
|
||||
the issues, many have been merged, but many have been ignored, thus the need for
|
||||
a canonical location of a good, working Zsh completion.
|
||||
|
||||
There are advantages for Bash users too. Currently the scripts under `contrib` are tied to the
|
||||
specific Git version, for example the completion scripts of version v2.40
|
||||
(https://git.kernel.org/pub/scm/git/git.git/plain/contrib/completion/git-completion.bash?h=v2.40.0[git-completion.bash])
|
||||
have issues with older versions of Git (e.g. v2.33); the ones in
|
||||
this project don't.
|
||||
|
||||
With `git-completion` you can be sure you are using the latest completion that
|
||||
works in both shells, and any Git version.
|
||||
|
||||
This is a sister project of the
|
||||
https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/gitfast[Oh My Zsh
|
||||
gitfast] plugin (that I also maintain), which has similar needs.
|
||||
|
||||
== Installation ==
|
||||
|
||||
* https://github.com/felipec/git-completion/wiki/Bash[Bash instructions]
|
||||
* https://github.com/felipec/git-completion/wiki/Zsh[Zsh instructions]
|
||||
|
||||
== Improvements from upstream ==
|
||||
|
||||
This is a short list of the benefits you get:
|
||||
|
||||
* Easier installation
|
||||
* Tons of bug fixes
|
||||
* Works with older versions of git
|
||||
* Zsh: much more options
|
||||
* Zsh: quoting works properly
|
||||
* Zsh: automatic suffix removal
|
||||
|
||||
For a full list of all the patches on top of upstream git check
|
||||
https://github.com/felipec/git-completion/wiki/Patches[Patches].
|
|
@ -2,23 +2,11 @@
|
|||
|
||||
# zsh completion wrapper for git
|
||||
#
|
||||
# Copyright (c) 2012-2020 Felipe Contreras <felipe.contreras@gmail.com>
|
||||
# Copyright (c) 2012-2024 Felipe Contreras <felipe.contreras@gmail.com>
|
||||
#
|
||||
# The recommended way to install this script is to make a copy of it as a
|
||||
# file named '_git' inside any directory in your fpath.
|
||||
# The recommended way to use this script is to prepend its location to your $fpath:
|
||||
#
|
||||
# For example, create a directory '~/.zsh/', copy this file to '~/.zsh/_git',
|
||||
# and then add the following to your ~/.zshrc file:
|
||||
#
|
||||
# fpath=(~/.zsh $fpath)
|
||||
#
|
||||
# You need git's bash completion script installed. By default bash-completion's
|
||||
# location will be used (e.g. pkg-config --variable=completionsdir bash-completion).
|
||||
#
|
||||
# If your bash completion script is somewhere else, you can specify the
|
||||
# location in your ~/.zshrc:
|
||||
#
|
||||
# zstyle ':completion:*:*:git:*' script ~/.git-completion.bash
|
||||
# fpath=($git_completion_srcdir $fpath)
|
||||
#
|
||||
|
||||
zstyle -T ':completion:*:*:git:*' tag-order && \
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# bash/zsh completion support for core Git.
|
||||
#
|
||||
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
|
||||
# Copyright (c) 2012-2024 Felipe Contreras <felipe.contreras@gmail.com>
|
||||
#
|
||||
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
|
||||
# Distributed under the GNU General Public License, version 2.0.
|
||||
#
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
# run0
|
||||
|
||||
Easily prefix your current or previous commands with `run0` by pressing <kbd>esc</kbd> twice.
|
||||
|
||||
To use it, add `run0` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... run0)
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Current typed commands
|
||||
|
||||
Say you have typed a long command and forgot to add `run0` in front:
|
||||
|
||||
```console
|
||||
$ apt-get install build-essential
|
||||
```
|
||||
|
||||
By pressing the <kbd>esc</kbd> key twice, you will have the same command with `run0` prefixed without typing:
|
||||
|
||||
```console
|
||||
$ run0 apt-get install build-essential
|
||||
```
|
||||
|
||||
### Previous executed commands
|
||||
|
||||
Say you want to delete a system file and denied:
|
||||
|
||||
```console
|
||||
$ rm some-system-file.txt
|
||||
-su: some-system-file.txt: Permission denied
|
||||
$
|
||||
```
|
||||
|
||||
By pressing the <kbd>esc</kbd> key twice, you will have the same command with `run0` prefixed without typing:
|
||||
|
||||
```console
|
||||
$ rm some-system-file.txt
|
||||
-su: some-system-file.txt: Permission denied
|
||||
$ run0 rm some-system-file.txt
|
||||
Password:
|
||||
$
|
||||
```
|
||||
|
||||
The same happens for file editing, as told before.
|
||||
|
||||
## Key binding
|
||||
|
||||
By default, the `run0` plugin uses <kbd>Esc</kbd><kbd>Esc</kbd> as the trigger.
|
||||
If you want to change it, you can use the `bindkey` command to bind it to a different key:
|
||||
|
||||
```sh
|
||||
bindkey -M emacs '<seq>' run0-command-line
|
||||
bindkey -M vicmd '<seq>' run0-command-line
|
||||
bindkey -M viins '<seq>' run0-command-line
|
||||
```
|
||||
|
||||
where `<seq>` is the sequence you want to use. You can find the keyboard sequence
|
||||
by running `cat` and pressing the keyboard combination you want to use.
|
|
@ -0,0 +1,44 @@
|
|||
# ------------------------------------------------------------------------------
|
||||
# Description
|
||||
# -----------
|
||||
#
|
||||
# run0 will be inserted before the command
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
# Authors
|
||||
# -------
|
||||
#
|
||||
# * Daniel Braunwarth <oss@braunwarth.dev>
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
__run0-replace-buffer() {
|
||||
local old=$1 new=$2 space=${2:+ }
|
||||
|
||||
# if the cursor is positioned in the $old part of the text, make
|
||||
# the substitution and leave the cursor after the $new text
|
||||
if [[ $CURSOR -le ${#old} ]]; then
|
||||
BUFFER="${new}${space}${BUFFER#$old }"
|
||||
CURSOR=${#new}
|
||||
# otherwise just replace $old with $new in the text before the cursor
|
||||
else
|
||||
LBUFFER="${new}${space}${LBUFFER#$old }"
|
||||
fi
|
||||
}
|
||||
|
||||
run0-command-line() {
|
||||
# If line is empty, get the last run command from history
|
||||
[[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)"
|
||||
|
||||
case "$BUFFER" in
|
||||
run0\ *) __run0-replace-buffer "run0" "" ;;
|
||||
*) LBUFFER="run0 $LBUFFER" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
zle -N run0-command-line
|
||||
|
||||
# Defined shortcut keys: [Esc] [Esc]
|
||||
bindkey -M emacs '\e\e' run0-command-line
|
||||
bindkey -M vicmd '\e\e' run0-command-line
|
||||
bindkey -M viins '\e\e' run0-command-line
|
Loading…
Reference in New Issue