Terminal tab completion

15

6

Possible Duplicate:
Bash completion for commands in Mac OS

I'm just moved from linux to mac, and one of the problems I'm having is that tab completion is only 1 level deep, and I'm not sure how to correct that.

Let me explain by example - when I used git on ubuntu, I'll start typing

$ git

and hit tab, and the shell would complete the command or display the options available for the letter\s I've typed. That's what happens on my mac as well (1 level). However, when I'd continue typing the next part of the command

$ git commit

and hit tab, mac terminal would not complete the next subcommand (for git) as it would in Linux. Same goes for other programs that support this multilevel command completion. I suspect this might be a readline library issue, but I'm not sure which one I should install.

sa125

Posted 2009-10-11T18:34:00.007

Reputation: 916

Question was closed 2012-07-14T13:09:46.883

This is definitely a bash configuration issue (since I get this behavior on mac + alot more that I have configured it for, like hostname completion) You should look around for power scripts for bash and add them to your profile. – Shane C. Mason – 2009-10-11T18:49:47.480

It is not a readline issue (in fact, it is not an "issue"), it is because Ubuntu holds your hand with custom packages for bash. – Jed Smith – 2009-10-11T18:37:02.983

Answers

13

Download bash_completion and source it from your .bashrc. Then put contrib/completion/git-completion.bash from the git distribution into bash_completion.d.

Alternatively you can install it via MacPorts.

user13898

Posted 2009-10-11T18:34:00.007

Reputation:

1Even better, install it via homebrew: brew install bash-completion – abyx – 2010-11-23T07:40:37.307

@abyx: chosing the "better" between homebrew and macports is a very subjective thing – None – 2011-05-04T15:18:32.130

thanks, this worked. I added the following in my .bashrc

if [ -f /opt/local/etc/bash_completion ]; then source /opt/local/etc/bash_completion fi – sa125 – 2009-10-11T20:02:28.997

2

For git there is an option available on compilation to support completion.

If you used port to install Git (which I recommend), you can reinstall git with this command

sudo port install git-core +svn+bash_completion+doc

Which will install git with bash completion, git-svn support and docs

Aurélien Bottazini

Posted 2009-10-11T18:34:00.007

Reputation: 121