[Workaround] Weird vim bash completion behaviour

Currently running bash-completion 1.2-2. Vim does not seems to auto-complete files when I am in the root of my home directory(i.e. just '~' and no subdirectories); only sub-directories are given as possible options. Resourcing /etc/bash_completion does not have any effect. Other current working directories work fine. Running this line from /etc/bash_completion does seem to fix it:
complete -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' vi vim gvim rvim view rview rgvim rgview gview emacs xemacs sxemacs kate kwrite
Resourcing /etc/bash_completion breaks it again, really weird.
I have no idea what's going on. Maybe bash-completion has trouble with the '~' character somehow?
EDIT: only the root of the user's home directory is affected (i.e. just '~' and no subdirectories)
Last edited by OutOfPhase (2011-03-24 16:02:41)

Seems that some completion rules are being deleted in the lines 1632-1653 in /etc/bash_completion, which is the very file that adds the completion rules in the first place(!) This hardly makes any sense. Somewhere in that block things go wrong.
Commenting crucial lines from this block, for example line 1644, fixes it.

Similar Messages

  • Problem with ssh and bash-completion

    I and a co-worker are having a weird problem with ssh and bash-completion. We have a local config in .ssh/config with hosts we connect everyday. An example:
    host foo
    hostname foo.org
    user foobar
    host foobar
    hostname foobar.org
    user foobar
    When we try to type
    ssh foo<tab><tab>b<tab>
    the console just freeze and we can't type anything, everything we type is ignored, but after about 30 seconds the host is completed.
    This works a some time ago, so some upgrade make this happen. Anyone can reproduce this?

    quigybo wrote:
    Actually thinking about it, rather than using the semi-dodgy fix posted on the bug tracker, we can just test if the daemon is running since we are not on MacOS X. It is cleaner and 250 ms quicker.
    --- bash_completion.orig 2010-09-14 05:33:22.000000000 +0930
    +++ bash_completion 2010-09-14 05:45:04.000000000 +0930
    @@ -1316,10 +1316,12 @@
    # contains ";", it may mistify the result. But on Gentoo (at least),
    # -k isn't available (even if mentioned in the manpage), so...
    if type avahi-browse >&/dev/null; then
    - COMPREPLY=( "${COMPREPLY[@]}" $( \
    - compgen -P "$prefix$user" -S "$suffix" -W \
    - "$( avahi-browse -cpr _workstation._tcp 2>/dev/null | \
    - awk -F';' '/^=/ { print $7 }' | sort -u )" -- "$cur" ) )
    + if [ -n "$(pidof avahi-daemon)" ]; then
    + COMPREPLY=( "${COMPREPLY[@]}" $( \
    + compgen -P "$prefix$user" -S "$suffix" -W \
    + "$( avahi-browse -cpr _workstation._tcp 2>/dev/null | \
    + awk -F';' '/^=/ { print $7 }' | sort -u )" -- "$cur" ) )
    + fi
    fi
    # Add results of normal hostname completion, unless
    This is the same test as was used in bash-completion 1.1.
    Thanks  quigybo, I use your patch, the issue is gone
    Why does so many packages depends on Avahi? Maybe make it optdepends is
    enough?
    my laptop $ pacman -Qi avahi
    Required By : gnome-disk-utility gnome-vfs libcups mpd sane

  • Bash completion broken since upgrade

    Hi,
    since I did an upgrade the bash autocompletion behaves strange. Completing directories will end in a space instead of an slash. Eg you enter "/et[tab]" and it completes "/etc " instead of "/etc/". This makes navigating directory hierarchies a PITA. Can anyone confirm this? Any known workarounds?

    For those still looking for a solution to this:
    From: http://aur.archlinux.org/packages.php?ID=16980
    Comment by: vl981 on Fri, 31 Dec 2010 03:57:13 +0000
    Hi.
    For those who use this package and bash completion in same time:
    remove the _filedir function from the '/etc/bash_completion.d/acroread'
    file provided by the package. See http://forums.adobe.com/thread/745833.
    P.S. Updated PKGBUILD and respected acroread files one may found here:
    https://github.com/vp1981/pkgbuild/raw/master/acroread/PKGBUILD
    https://github.com/vp1981/pkgbuild/raw/master/acroread/PKGBUILD
    Last edited by kontax (2011-02-11 10:52:20)

  • Bash-completion works only with X

    Hi,
    For a long time bash-completion has not been working for me in VC. This didn't change with numerous upgrades, so I think this must be due to some my local setting. In VC it doesn't work for any user and in X it works for all users, so it is most probably something system-wide that is causing this. I never touched any files owned by bash-completion package. I browsed through /etc/profile and /etc/profile.d/ but didn't find anything weird.
    Any clues where to fix this?
    Thanks!

    I've always had the same problem as the OP, just never got round to posting about it. A solution would make my systemctl aliases much more useful.
    @Trilby, you need the bash-completion package installed.
    Last edited by slithery (2015-01-06 21:50:34)

  • [SOLVED] tmux bash completion

    Hey,
    Looking through internet, I didn't find any solution. I want to be able to hit Tab on a terminal to complete my commands, like I do a million times a day.
    Except it doesn't work on tmux, Tab just does nothing at all.
    Here is my tmux.conf :
    #Make zsh default shell to use
    # set-option -g default-shell /bin/zsh
    # use UTF8
    set -g utf8
    set-window-option -g utf8 on
    # make tmux display things in 256 colors
    set -g default-terminal "screen-256color"
    # set scrollback history
    set -g history-limit 3000
    # shorten command delay
    set -sg escape-time 1
    # set window and pane index to 1 (0 by default)
    set-option -g base-index 1
    setw -g pane-base-index 1
    # reload ~/.tmux.conf
    bind -n C-q source-file ~/.tmux.conf \; display "Reloaded!"
    # Select and open URL
    bind -n C-u run tmux-url-select
    unbind-key Tab
    # split window horizontally and vertically
    bind -n C-v split-window -h
    bind -n C-h split-window -v
    # Make the current window the first window
    bind -n C-T swap-window -t 1
    # map Vi movement keys as pane movement keys
    bind -n C-Left select-pane -L
    bind -n C-Down select-pane -D
    bind -n C-Up select-pane -U
    bind -n C-Right select-pane -R
    # and use C-h and C-l to cycle thru panes
    bind -n C-o select-window -t :-
    bind -n C-i select-window -t :+
    # resize panes using PREFIX H, J, K, L
    bind -n C-N resize-pane -L 5
    bind -n C-J resize-pane -D 5
    bind -n C-K resize-pane -U 5
    bind -n C-L resize-pane -R 5
    # explicitly disable mouse control
    setw -g mode-mouse off
    set -g mouse-select-pane on
    set -g mouse-resize-pane on
    set -g mouse-select-window on
    # Copy & Paste
    # provide access to the clipboard for pbpaste, pbcopy
    #set-option -g default-command "reattach-to-user-namespace -l zsh"
    set-window-option -g automatic-rename on
    # use vim keybindings in copy mode
    setw -g mode-keys vi
    # setup 'v' to begin selection as in Vim
    bind-key -t vi-copy v begin-selection
    bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"
    # update default binding of 'Enter' to also use copy-pipe
    unbind -t vi-copy Enter
    bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
    bind y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy '
    bind C-y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy '
    # set some pretty colors
    #set pane colors - hilight the active pane
    set-option -g pane-border-fg colour235 #base02
    set-option -g pane-active-border-fg red #base01
    # colorize messages in the command line
    set-option -g message-bg black #base02
    set-option -g message-fg brightred #orange
    # Status Bar
    set-option -g status off # turn the status bar on
    set -g status-utf8 on # set utf-8 for the status bar
    set -g status-interval 5 # set update frequencey (default 15 seconds)
    set -g status-justify centre # center window list for clarity
    # set-option -g status-position top # position the status bar at top of screen
    # visual notification of activity in other windows
    setw -g monitor-activity off
    set -g visual-activity off
    # set color for status bar
    set-option -g status-bg colour0
    set-option -g status-fg yellow #yellow
    set-option -g status-attr dim
    # set window list colors - red for active and cyan for inactive
    set-window-option -g window-status-fg brightblue #base0
    set-window-option -g window-status-bg colour0
    #set-window-option -g window-status-attr dim
    set-window-option -g window-status-current-fg red #orange
    set-window-option -g window-status-current-bg colour235
    set-window-option -g window-status-current-attr bright
    # show session name, window & pane number, date and time on right side of
    # status bar
    #set -g status-right-length 60
    #set -g status-right "#[fg=blue]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: %l:%M %p :: #(date -u | awk '{print $4}')::"
    Anyone with a solution ?
    Thanks !
    Last edited by Kolibry (2014-10-19 20:56:04)

    I restarted the server. I also tried to skip "set -sg escape-time 1". My current shell is bash, and I can't tell you what progress I've made because I haven't made any
    EDIT : I didn't understand "rc files", I just get it now. Here is my bashrc :
    export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
    export EDITOR=vim
    export LIBVA_DRIVER_NAME=vdpau
    export VDPAU_DRIVER=r600
    export PATH=$PATH:/home/kolibry/Scripts
    source tmux-completion.sh
    source tmux-bash-completion.sh
    ansiblocks
    bind 'set completion-ignore-case on'
    if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
    fi
    xhost +local:root > /dev/null 2>&1
    complete -cf sudo
    shopt -s cdspell
    shopt -s checkwinsize
    shopt -s cmdhist
    shopt -s dotglob
    shopt -s expand_aliases
    shopt -s extglob
    shopt -s histappend
    shopt -s hostcomplete
    shopt -s nocaseglob
    export HISTSIZE=10000
    export HISTFILESIZE=${HISTSIZE}
    export HISTCONTROL=ignoreboth
    alias ls='ls --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
    alias ll='ls -l --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
    alias la='ls -la --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
    alias grep='grep --color=tty -d skip'
    alias cp="cp -i" # confirm before overwriting something
    alias df='df -h' # human-readable sizes
    alias free='free -m' # show sizes in MB
    alias np='vim PKGBUILD'
    alias starwars="telnet towel.blinkenlights.nl"
    alias inxi="inxi -Fxzc2"
    alias weechat="weechat-curses"
    alias news='newsbeuter'
    alias zik="mpd && ncmpcpp"
    alias version="lsb_release -si -sr -sc"
    alias fdisk="sudo fdisk -l"
    alias formater="sudo mkfs.vfat -F 32"
    ### Dropbox ###
    #alias ./dropbox_uploader.sh upload="upload dropbox"
    #alias ./dropbox_uploader.sh download="download dropbox"
    conf() {
    case $1 in
    bspwm) vim ~/.config/bspwm/bspwmrc ;;
    sxhkd) vim ~/.config/sxhkd/sxhkdrc ;;
    conky) vim ~/.conkyrc ;;
    menu) vim ~/.config/openbox/menu.xml ;;
    mpd) vim ~/.mpd/mpd.conf ;;
    mutt) vim ~/.mutt/muttrc ;;
    ncmpcpp) vim ~/.ncmpcpp/config ;;
    moc) sudo vim /home/kolibry/.moc/config ;;
    moctheme) sudo vim /home/kolibry/.moc/themes/kolibry_theme ;;
    weechat) vim ~/.weechat/weechat.conf ;;
    pacman) sudo vim /etc/pacman.conf ;;
    mirrorlist) vim /etc/pacman/mirrorlist ;;
    termite) vim ~/.config/termite/config ;;
    ranger) vim ~/.config/ranger/rc.conf ;;
    rifle) vim ~/.config/ranger/rifle.conf ;;
    tmux) vim ~/.tmux.conf ;;
    vim) vim ~/.vimrc ;;
    compton) vim ~/.config/compton.conf ;;
    xinit) vim ~/.xinitrc ;;
    xresources) vim ~/.Xresources && xrdb ~/.Xresources ;;
    zathura) vim ~/.config/zathura/zathurarc ;;
    tint2) vim ~/.config/tint2/tint2rc ;;
    bashrc) vim ~/.bashrc && source ~/.bashrc ;;
    dwb) vim ~/.config/dwb/default/quickmarks ;;
    grub) sudo vim /etc/default/grub.cfg ;;
    mupen64plus) vim ~/.config/mupen64plus/mupen64plus.cfg ;;
    dunst) vim ~/.config/dunst/dunstrc ;;
    *) echo "Unknown application: $1" ;;
    esac
    function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }
    function cdl () { cd "$@" && ls; }
    alias dpi="xdpyinfo | grep resolution"
    alias mocp="mocp -T kolibry_theme"
    ### Gestion du système ###
    # Créer une liste des paquets installés :
    alias pkglist='comm -23 <(pacman -Qeq|sort) <(pacman -Qmq|sort) > pkglist'
    # Créer une liste des paquets AUR installés :
    alias pkglist-aur='pacman -Qqm > pkglist-aur'
    # Restaurer la liste des paquets :
    alias installpkglist='yaourt -S $(< pkglist)'
    # Mise à jour des miroirs et mettre à jour le système :
    alias update='sudo pacman-mirrors -g && sudo pacman -Syu'
    #Mettre à jour le système :
    alias maj='sudo pacman -Syu'
    # Installer un paquet :
    alias installer='sudo pacman -S'
    # Effacer un paquet :
    alias supprimer='sudo pacman -R'
    # Paquets orphelins :
    alias orphans='sudo pacman -Qdt'
    # Infos paquet :
    alias info='sudo pacman -Si'
    # Rafraichissement de la liste des paquets:
    alias refresh='sudo pacman -Syy'
    # cacheclean -v 2 ,deletes all but the last 2 versions of installed packages the pacman cache:
    alias c-c='sudo cacheclean -v 2'
    # yaourt -Syu by typing yaur :
    alias majaur='yaourt -Syu --aur'
    # yaourt -S by typing yS :
    alias install='yaourt -S'
    # yaourt -Rsn , which fully deletes packages - see above :
    alias remove='yaourt -Rsn'
    # Date dernière maj
    alias lastup='echo -e "\e[1;31mLast Upgraded:\e[0m " ; sort /var/log/pacman.log | tail -n 50 | grep upgraded | cut -c 1-18 | uniq -d'
    #Détails dernière maj
    alias lastupd='echo -e "\e[1;31mLast upgraded:\e[0m " ; cat /var/log/pacman.log | grep upgraded | tail -n 40'
    # Recharger URxvt config
    alias x='xrdb .Xresources'
    # Convertir vidéo youtube en fichier audio
    alias ogg='youtube-dl -x --audio-format vorbis --audio-quality 0'
    # mpv en couleurs
    alias mpv='mpv --msg-module'
    # Nettoyer le terminal
    alias c='clear'
    #Restaurer tmux
    alias res='sh /home/kolibry/Scripts/restoretmux'
    # Eteindre le PC
    alias stop='shutdown now'
    # Ecran externe
    alias externe='xrandr --output VGA-0 --mode 1600x900 --output LVDS --off'
    # Ecran interne
    alias interne='xrandr --output LVDS --mode 1366x768 --output VGA-0 --off'
    # Touchpad
    alias touchpadon='synclient TouchpadOff=0'
    alias touchpadoff='synclient TouchpadOff=1'
    # Test scroll rapidité terminal
    alias testterminal='for i in {0..9999}; do echo -n "------$i-"; done'
    ##fun&entertaining
    alias insults='wget http://www.randominsults.net -O - 2>/dev/null | grep \<strong\> | sed "s;^.*<i>\(.*\)</i>.*$;\1;";'
    alias matrix='echo -e "\e[32m"; while :; do for i in {1..16}; do r="$(($RANDOM % 2))"; if [[ $(($RANDOM % 5)) == 1 ]]; then if [[ $(($RANDOM % 4)) == 1 ]]; then v+="\e[1m $r "; else v+="\e[2m $r "; fi; else v+=" "; fi; done; echo -e "$v"; v=""; done'
    alias matrix2='echo -e "\e[31m"; while $t; do for i in `seq 1 30`;do r="$[($RANDOM % 2)]";h="$[($RANDOM % 4)]";if [ $h -eq 1 ]; then v="\e[1m $r";else v="\e[2m $r";fi;v2="$v2 $v";done;echo -e $v2;v2="";done;'
    alias matrix3='COL=$(( $(tput cols) / 2 )); clear; tput setaf 2; while :; do tput cup $((RANDOM%COL)) $((RANDOM%COL)); printf "%$((RANDOM%COL))s" $((RANDOM%2)); done'
    alias matrix4='echo -ne "\e[32m" ; while true ; do echo -ne "\e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]" " " < /dev/urandom | dd count=1 bs=50 2> /dev/null ; done'
    alias matrix5='tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=lcase,unblock | GREP_COLOR="1;32" grep --color "[^ ]"'
    alias colorrainbow='yes "$(seq 1 255)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .01; done'
    alias roulette='[ $[ $RANDOM % 6 ] == 0 ] && echo Die || echo Live' # command line Russian roulette
    alias einsteiny='A=1;B=100;X=0;C=0;N=$[$RANDOM%$B+1];until [ $X -eq $N ];do read -p "N between $A and $B. Guess? " X;C=$(($C+1));A=$(($X<$N?$X:$A));B=$(($X>$N?$X:$B));done;echo "Took you $C tries, Einstein";' # numbers guessing game
    alias etchasketch='c=12322123;x=20;y=20;while read -sn1 p;do k=${c:(p-1)*2:2};let x+=$((k/10-2));let y+=$((k%10-2));echo -en \\033[$y\;"$x"HX;done' # use the 1 2 3 and 4 keys to move the cursor around the screen (It's an etch-a-sketch for your terminal!)
    alias excuses='echo `telnet bofh.jeffballard.us 666 2>/dev/null` |grep --color -o "Your excuse is:.*$"' # excuses
    alias freechess='telnet fics.freechess.org 5000' # connects to a telnet server for free internet chess
    alias funfacts='wget http://www.randomfunfacts.com -O - 2>/dev/null | grep \<strong\> | sed "s;^.*<i>\(.*\)</i>.*$;\1;";'
    alias 99bottles='x="bottles of beer";y="on the wall";for b in {99..1};do echo "$b $x $y, $b $x. Take one down pass it around, $(($b-1)) $x $y"; sleep 3;done'
    alias addictive='count="1" ; while true ; do read next ; if [[ "$next" = "$last" ]] ; then count=$(($count+1)) ; echo "$count" ; else count="1" ; echo $count ; fi ; last="$next" ; done' # simple addicting bash game
    alias busy='for i in `seq 0 100`;do timeout 6 dialog --gauge "Install..." 6 40 "$i";done' # pretend to be busy in office to enjoy a cup of coffee
    alias busy2='my_file=$(find /usr/include -type f | sort -R | head -n 1); my_len=$(wc -l $my_file | awk "{print $1}"); let "r = $RANDOM % $my_len" 2>/dev/null; vim +$r $my_file'
    alias busy3='cat /dev/urandom | hexdump -C | highlight ca fe 3d 42 e1 b3 ae f8 | perl -MTime::HiRes -pnE "Time::HiRes::usleep(rand()*1000000)"'
    ### Fonction scrot + upload ###
    imgur-upl() {
    curl -s -F image=@"$1" -F "key=1913b4ac473c692372d108209958fd15" \
    http://api.imgur.com/2/upload.xml | grep -Eo "<original>(.)*</original>" \
    | grep -Eo "http://i.imgur.com/[^<]*"
    # Back up file
    bu() {
    cp -a "$1" "$1.$(date +%d.%m.%y-%H:%M)"
    # ex - archive extractor
    # usage: ex <file>
    ex ()
    if [ -f $1 ] ; then
    case $1 in
    *.tar.bz2) tar xjf $1 ;;
    *.tar.gz) tar xzf $1 ;;
    *.bz2) bunzip2 $1 ;;
    *.rar) unrar x $1 ;;
    *.gz) gunzip $1 ;;
    *.tar) tar xf $1 ;;
    *.tbz2) tar xjf $1 ;;
    *.tgz) tar xzf $1 ;;
    *.zip) unzip $1 ;;
    *.Z) uncompress $1;;
    *.7z) 7z x $1 ;;
    *) echo "'$1' cannot be extracted via ex()" ;;
    esac
    else
    echo "'$1' is not a valid file"
    fi
    ##### Couleurs prompt ####
    #Black \e[0;30m
    #Blue \e[0;34m
    #Green \e[0;32m
    #Cyan \e[0;36m
    #Red \e[0;31m
    #Purple \e[0;35m
    #Brown \e[0;33m
    #Gray \e[0;37m
    #Dark Gray \e[1;30m
    #Light Blue \e[1;34m
    #Light Green \e[1;32m
    #Light Cyan \e[1;36m
    #Light Red \e[1;31m
    #Light Purple \e[1;35m
    #Yellow \e[1;33m
    #White \e[1;37m
    #NC='\e[0m' # No Color
    # background colors
    #RED='\e[41m'
    #BLUE='\e[44m'
    #CYAN='\e[46m'
    #GREEN='\e[42m'
    #YELLOW='\e[43m'
    # prompt
    #PS1="\[\e[0;33m\]┌─[\[\e[1;31m\u\e[0;33m\]]──[\[\e[0;34m\]${HOSTNAME%%.*}\[\e[0;33m\]]\[\e[0;32m\]:\w$\[\e[0;33m\]\n\[\e[0;33m\]└──\[\e[0;33m\]>>\[\e[0m\]"
    #prompt essai
    PS1="\[\e[0;34m\]┌─[\[\e[0;31mo_o\e[0;34m\]]──[\[\e[0;33m\]\w\[\e[0;34m\]]\[\e[0;34m\]\n\[\e[0;34m\]└──\[\e[0;34m\][\[\e[0m\]"
    # prompt robot
    #PS1='┌─[\e[0;31mo_o\e[m] ─ [\e[0;36m\w\e[m]\n└─|'
    BROWSER=/usr/bin/xdg-open
    ### Man pages en couleur ###
    man() {
    env LESS_TERMCAP_mb=$(printf "\e[1;31m") \
    LESS_TERMCAP_md=$(printf "\e[1;31m") \
    LESS_TERMCAP_me=$(printf "\e[0m") \
    LESS_TERMCAP_se=$(printf "\e[0m") \
    LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
    LESS_TERMCAP_ue=$(printf "\e[0m") \
    LESS_TERMCAP_us=$(printf "\e[1;32m") \
    man "$@"
    Last edited by Kolibry (2014-10-19 20:40:15)

  • [SOLVED] Slight issue concerning pacman & bash completion

    Hi all,
    I've come across a small issue when using the -Rs option with pacman.
    The auto completion doesn't appear to be working for the first package name passed after the -Rs option.
    For example, when issuing the command
    pacman -Rs firefox
    and pressing tab twice, it will not show any options or auto-complete. However, if I add another package to be removed:
    pacman -Rs firefox chr
    and hit the tab key twice, autocomplete will work, and it'll autocomplete to chromium.
    Bash-completion (2.0-3) is installed, and the rest of the system is up to date. Am I missing something here, or have I stumbled upon a bug?

    I don't know so much about it, but I'm under the impression that bash-completion for pacman (once enabled in ~/.bashrc by adding "complete -cf pacman") works by default by checking the user's PATH variable, i.e. it will offer to complete pacman commands with the name of any executable in the user's PATH's () as well as the contents of the current directory. ... which means: if firefox isn't installed, it won't find it; if it is, it will offer this completion; if there's a file called firefox in the current directory, it will also offer it.
    but as I said, I'm not an expert on bash-completion

  • Loading bash-completion faster?

    getting sick of having to wait a second or so anytime i load a new shell to see my PS1.
    i found out that the sole culprit is sourcing /etc/bash_completion.
    I know you can already start typing when processing .bashrc and /etc/bash.bashrc is still ongoing, but it's kinda ugly.
    anyone knows how to make it faster?
    just some ideas that may [not] be feasible/possible:
    - load completions in the background (`source` is synchronous though)
    - show PS1 already when completions are not loaded yet.  maybe we could make it so that the end of .bashrc you change the color of PS1.
    - make a custom package of bash-completion that has no files for stuff i don't use (apt, moosay, yum etc)

    I didn't believe you in #bash. ;)
    Anyway, you can try set -a or export -f function_name (lots of functions in bash_completion so exporting them one by one isn't practical).
    Putting set -a in ~/.bash_profile will export everything. This could be a solution since that file is only sourced during login shells, meaning it'll only load it once per vc. Now instead of sourcing bash_completion from bashrc, do it from bash_profile.
    The trade-off is that now these functions/variables are available in non-interactive instances like scripts, which shouldn't be a problem since good scripts define their functions or source them at runtime.
    Edit: make sure SHELLOPTS is not exported, else the -a attribute gets inherited.
    Last edited by pwd (2009-12-28 01:41:46)

  • Git bash-completion giving problems?

    I get this on startup (in tty1 AFTER gnome starts up in tty7)
    /etc/bash_completion.d/git: line 123: syntax error near unexpected token `<'
    /etc/bash_completion.d/git: line 123: ` done < <(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')'
    I have not changed /etc/bash_completion.d/git at all, and the file appears to be the right one from the git package. Git's bash-completion seems to work, if I type 'git p' and then tab it'll show me push/pull as options....
    Ideas, anyone? Only happening to me?

    Looks like this thread: https://bbs.archlinux.org/viewtopic.php?id=101586

  • Problems with Bash Completion

    Hi,
    I recently noticed an odd new behavior of the bash-completion package.
    For example:
    Lets say there is folder called 'Downloads'. The oldd behavior was:
    mv Dow[tab]
    mv Downloads/
    Now, it's like this:
    mv Dow[tab]
    mv Downloads
    (with a space after 'Downloads')
    It's annoying because, you can't get an ls output when pressing tab again.
    Another example: Let's assume there is a file called 'some file.txt'
    Old:
    mv some[tab]
    mv some\ file.txt
    New:
    mv some[tab]
    mv some file.txt
    Pretty annoying too. mv doesn't work anymore because of the space in the filepath.
    Does anyone know how to fix this?

    https://bbs.archlinux.org/viewtopic.php?id=113158

  • Netcfg2 with bash-completion

    I've written a script to support bash completion for netcfg2.
    Here it is:
    http://fatcat.ftj.agh.edu.pl/~sitarzm/A … on/netcfg2
    Just download it and place it in /etc/bash_completion.d, log out and login again and give it a try.

    MAC!EK wrote:
    Since the script was quite old I replaced it with a new version on that site:
    http://fatcat.ftj.agh.edu.pl/~sitarzm/A … ion/netcfg
    or
    http://fatcat.ftj.agh.edu.pl/~sitarzm/A … on/netcfg2
    uastasi if you want the completion to work with 'n' command add a line at the end:
    complete -F _netcfg n
    Awesome, thank you :)

  • Bash completion of alias

    I have the following lines in my .bashrc:
    alias y='yaourt'
    alias yq='y -Q'
    complete -o filenames -F _yaourt y
    This allows me to do bash completion with just 'y -Q' or 'y' followed by any argument. However, I'm trying to get completion to work when I type in 'yq'. I was wondering if there was a way to send the argument '-Q' to the yaourt completion? Or would I need to write a separate wrapper function?

    Yes, but it doesn't work. The problem is that yaourt by itself has no tab completion. It requires arguments so that it knows what type of completion it is: ie. installed vs not installed programs. I would prefer to get it to work in bash, but if not, I'll take a look at zsh.

  • Bash-completion for archlinux (ready for testing)

    EDIT (20031013): new url & version 1.0 is out
    Hello all,
    I've created a bash-completion script for AL.
    Get it from :
    http://www.kegep.tuc.gr/~manolis/archli … ion.script
    Then :
    pacman -S bash-completion
    copy my script as /etc/bash_completion.d/archlinux
    source /etc/profile
    or log out & back in to enable auto-completion.
    Then simply try pacman -S [tab] to check it.
    So far it auto-completes the init scripts (try /etc/rc.d/network [tab]...), makepkg & pacman.
    Please test it & report any problems or suggestions so that it could get included in the bash-completion pkg.

    sud_crow wrote:Im not chassing you, i swear!
    I begin to feel like a dot in pacman .
    sud_crow wrote:Can you post some explination about its use?? what it does exactly (i know what auto-completions is, but,  what auto-completes and how?)
    Auto-completion is the best thing since fresh bread . You already use it, when you press [tab] or (ie pac[tab]) and it completes the rest of the word (ie pacman). The bash-completion pkg provides some more advanced completion features, like man pac[tab] and it completes it to man pacman, or ssh [tab] and it completes using the hosts included in ~/.ssh/known_hosts.
    My script provides these features for ArchLinux. Simply try pacman -S [tab] and enjoy the list of all available packages for installation on your system. Or pacman -Q -l [tab] that completes from packages installed in your system. Then try /etc/rc.d/network [tab], it will list 'restart start stop'
    (ps. [tab] == pressing the 'tab' key on your keyboard btw.)

  • Bash-completion upgrade conflicts with pacman

    pacman warned me that /usr/share/bash-completion/completions/makepkg would be overwritten.
    pacman -Oo said then that it's part of bash-completion 1.99-1, but there's already bash-completion 1.99-2 that hasn't any more included that file cause now as it seems, the file move into the new pacman package.
    https://projects.archlinux.org/svntogit … 50dbc12ba0
    So following process to not corrupt anything:
    1) Move the file out of the way:
    # mv /usr/share/bash-completion/completions/makepkg /usr/share/bash-completion/completions/makepkg.bak
    2) Upgrade pacman
    # pacman -S pacman
    3) Upgrade bash-completion (this step will remove the file)
    # pacman -S bash-completion
    4) Reinstall pacman again, to not loose the file.
    # pacman -S pacman
    5) Now, you can remove the backup.
    # rm -f /usr/share/bash-completion/completions/makepkg.bak

    toofishes wrote:
    defcon wrote:
    i've seen that pacman 3.1 has it's own bash completion file
    i installed the new pacman, but bash_completion doesnt work....
    Did you source it or logout/login? It doesn't magically do that itself.
    . /etc/bash_completion
    both, i reload it with source ~/.bashrc  and later i logged out/in

  • Bash completion upgrade breaks pacman bc

    hello,
    today's bash completion upgrade deletes the archlinux file under /etc/bash_completion.d/.
    pacman's bash completion doesn't work anymore. i've seen that pacman 3.1 has it's own bash completion file.
    is this somehow related?
    vlad
    ps: i'm not using testing.
    Last edited by DonVla (2008-01-10 17:50:15)

    toofishes wrote:
    defcon wrote:
    i've seen that pacman 3.1 has it's own bash completion file
    i installed the new pacman, but bash_completion doesnt work....
    Did you source it or logout/login? It doesn't magically do that itself.
    . /etc/bash_completion
    both, i reload it with source ~/.bashrc  and later i logged out/in

  • Bash-Completion notice

    Hi,
    I already flagged bash-completion several days ago in the packages system, but i wanted to stress the need for an update, here is the extract from the developer's site: http://www.caliban.org/bash/
    bash 3.1 is now available. Initial reports suggest that there are some minor incompatibilities between this version and the 20050721 release of the bash completion code, which many people are still using. Please ensure that you upgrade to the 20060301 release, which is believed to fix these issues.
    As you know, we have bash 3.1 on current for some time now, and well, i just wish i could use bash-completion again
    I dont know where to post this, packages forums changed since the AUR and well... this is the best place i could find.

    sud_crow wrote:
    Hi iphitus,
    i flagged it out of date, i didn't know the consequences of that, that issues a bug-tracker ticket?
    just as a side note:
    i thought on posting it because i know that the flag doesn't necessarily mean the update is important, but as this package didn't work anymore, i wanted to let know it was a pretty important update... although its not a base package and i / it can wait!
    No, the flag emails the developer.
    What i meant is that, most devs dont read the forums, but most do check the bug tracker, and would take notice if you issued a bug ticket to inform them.
    iphitus

Maybe you are looking for