简体   繁体   中英

How to setup auto-completion with git on openBSD?

I want to setup auto-completion for git commands in ksh and openBSD 5.8/5.9.
Somehow it was installed previously and suddenly disappeared so I have to type or copy and paste large amounts of text.

It should work as in OSX or Ubuntu, where you type git merge X... and press the "tab" key so it completes the rest of the branch name in terminal.

You will need to have a script for that. Unix/git-bash are already have this script.

Read about it here: https://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks https://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks#Auto-Completion

You have many options on how to install it. Simply choose the right way for you.,

https://github.com/bobthecow/git-flow-completion/wiki/Install-Bash-git-completion


OpenBSD Script

Here is a link to the OpenBSD script which you can use.
The file has header with all the instructions how to do it.

http://www.ualberta.ca/dept/aict/uts/software/openbsd/ports/4.6/i386/obj/git-1.7.0/git-1.7.0/contrib/completion/git-completion.bash


The above script instructions:

#!bash
#
# bash completion support for core Git.
#
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
#
# The contained completion routines provide support for completing:
#
#    *) local and remote branch names
#    *) local and remote tag names
#    *) .git/remotes file names
#    *) git 'subcommands'
#    *) tree paths within 'ref:path/to/file' expressions
#    *) common --long-options
#
# To use these routines:
#
#    1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
#    2) Added the following line to your .bashrc:
#        source ~/.git-completion.sh
#
#    3) Consider changing your PS1 to also show the current branch:
#        PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
#
#       The argument to __git_ps1 will be displayed only if you
#       are currently in a git repository.  The %s token will be
#       the name of the current branch.
#
#       In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty
#       value, unstaged (*) and staged (+) changes will be shown next
#       to the branch name.  You can configure this per-repository
#       with the bash.showDirtyState variable, which defaults to true
#       once GIT_PS1_SHOWDIRTYSTATE is enabled.
#
#       You can also see if currently something is stashed, by setting
#       GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
#       then a '$' will be shown next to the branch name.
#
#       If you would like to see if there're untracked files, then you can
#       set GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're
#       untracked files, then a '%' will be shown next to the branch name.

Download the bash completion file here: https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

I put it in: /usr/local/share/bash-completion/completions/git

Then make sure your shell is set to bash and then source that file. My bashrc section looks like this: https://gist.github.com/ckuttruff/db8349e0cc3a1930dc4f5f17a042e1f6

Afaik there is no git auto-completion script for ksh. What you can do is add hard coded completion entries to the git command. Unfortunately this prevents file auto-completion.

# Add auto-completion entries to git
set -A complete_git status commit clone rebase bisect --patch --interactive

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM