bash完了規則が保持されるように、「git」を「g」にエイリアスする方法は?


25

これを行う場合:

alias g='git'

すべての完了規則を失います(たとえば、入力後にTabキーを押すと、ブランチとリモートは自動的に完了しなくなりますg push o)。


答えはありませんが、少し時間がかかりますが、他の2つの文字を入力しないほうが本当にメリットがあるのではないかと思います。
マルコセッピ

4
確かにそうです!おそらく1日100回以上「g」と入力しています。
パウェウゴイチッキ

3
頻繁に使用される短いコマンドをさらに短いエイリアスにエイリアス化すると、1日に何百回もキーを押す手間が省けます。シェルの履歴によると、g=gitこの1か月でエイリアスを756回使用しました。つまり、「g」キーと「i」キーを合計で1512回押すのを節約できました。それは、私のgitエイリアスと組み合わせると、おそらく月に何万回もキーを押す手間が省けます。

キーストロークを短縮する主なポイントは、あなたの手があなたの脳に追いつくのを助けることです。
タイラーコリアー

superuser.com/questions/436314/のスクリプトは非常にうまく機能したので、言及する価値があると思います。
ブランディッツィ

回答:


21

から適切にコピーして変更し/etc/bash_completion.d/git、に次の行を追加します~/.bashrc

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \
    || complete -o default -o nospace -F _git g

ハ!ワンダーバー!ちょうどそれがする必要がありますように動作します:)
パウェウGościcki

1
またsource /usr/share/bash-completion/completions/git、.bashrc に追加する必要がありました
pcx 14

.bashrcここのコードが機能するかどうかはわかりませんが、この答えは間違いなく時代遅れです。/etc/bash_completion.d/git14.04には存在しないようです。以下のlzapの回答を参照してください。
マックスウォレス

18

最新のbash-completionアップストリームが移動し、少し名前を変更しました。雪が降る:

source /usr/share/bash-completion/completions/git
__git_complete g __git_main

次のような場合は、Ubuntuの最新バージョン(14.04、Fedora 22以降など)で使用してください。

completion: function `_git' not found

完了中。


2
ここが唯一の正解であるようです。
pjvandehaar

__git_complete gc _git_checkout(または同様の)を使用して、より具体的なエイリアスの補完を設定します。検索/usr/.../git右の名前を見つけるために、上記のように。
マックスウォレス

1
@MaxWallace-.gitconfigで特定のgitメソッドのエイリアスを設定する場合(gc = checkoutなど)、それらの補完を明示的に設定する必要はありません。
ピョートルアレクサンダーChmielowski

1
よろしくお願いします!しかし、私は(例えば、トップレベルのbashのエイリアスのためにその作品を考えていないgc=> git checkoutエイリアシングではなく)ccheckoutgit、そして言ってgit c。私が間違っている場合は修正してください。
マックスウォレス

@MaxWallaceはい、あなたは正しい、私の間違い;)
ピオトルアレクサンダーChmielowski


2

最初に、元の完了コマンドを検索します。例:

$ complete | grep git

complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git

次に、これらをスタートアップスクリプトに追加します(例:〜/ .bashrc):

# copy the original statement, but replace the last command (git) with your alias (g)
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g

# load dynamically loaded completion functions (may not be required)
_completion_loader git

_completion_loader行が必要とされないことがあります。ただし、状況によっては、コマンドを入力しTABて最初に押した後にのみ、完了関数が動的にロードされます。したがって、元のコマンドを使用せずにエイリアス+を試してみると、TAB「bash:completion:function not found」などのエラーが表示される場合があります。


よく働く。私にとってこれは正しい答えです。完了時のgrepコマンドは便利です。補完ローダーは必要ありませんでした。
ポールカールトン

1

これを行うため更新された方法(完了は私にとっては機能しません):

  1. cd -ホームディレクトリに切り替える
  2. wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
  3. source ~/git-completion.bash.bashrcファイルに追加します(このファイルがホームフォルダーにない場合、bashは自動的に検索します)
  4. alias g='git'.bashrcファイルに追加します。
  5. 新しいセッションを開始するか、変更をソースします source ~/.bashrc

2
リンクしたコメントで実際に補完を追加した部分をスキップしました__git_complete g _git
。– pjvandehaar

0

完全を期すために、この~/.bash-completionファイルを使用して回答を追加します。このファイルは、bash-completionスクリプトの最後にあります。

_xfunc git __git_complete g __git_main
_xfunc git __git_complete gl _git_log
_xfunc git __git_complete gd _git_diff
_xfunc git __git_complete gb _git_branch

その後、私~/.bashrcにはエイリアスだけがあります。私がしようとしていた:

  • ~/.bashrcbash- completionなどで自分を汚すことを避けます(所属するものを保持します)✓
  • git補完全体をシェルに入力しないでくださいavoid

_xfuncとにかくgit-completionのソースは残念ながら。適切に実行する方法がわかったら、この回答を更新します(ランチパッドも質問しまし)。


-1

こちらをご覧くださいhttps : //gist.github.com/scue/576310b7c6b7714aad05

wget https://gist.github.com/scue/576310b7c6b7714aad05/raw/459d46761c231f5c373c1cf496920b01bb6669d2/.bash_aliases.git -O ~/.bash_aliases.git
echo "test -e ~/.bash_aliases.git && source ~/.bash_aliases.git" >> ~/.bashrc

お楽しみください!(^ o ^)/


1
申し訳ありませんが、それはまったく異なるものです。コマンド全体にこのような単純なエイリアスを作成するのは簡単です。
パウェウゴイチッキ

Oh-My-Zshのgitプラグインのように動作させるだけです:github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/…– 15
scue

-1

通常どおりエイリアスを定義するだけです:

alias g='git'

次に、complete-aliasをインストールて、bashの完了エイリアスを認識させます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.