#1 Le 26/10/2006, à 16:20
- pabix
Ouvrir vim sur les bons fichiers, à la bonne ligne
Bonjour !
Ces deux scripts combinés vous permettent d'ouvrir, dans une seule fenêtre vim, TOUS les fichiers du répertoire courant et de ses sous-répertoires, qui contiennent une expression donnée, et de positionner le curseur à la bonne ligne sur tous ces fichiers.
Ça marche avec des reg_exp (pas trop avancées : compatibles grep/vim).
1er script — je l'appelle p. ex. « where ». Il peut s'utiliser tout seul et retourne la liste des fichiers correspondant à votre expression.
#!/usr/bin/env bash
# -----------
# Description
# -----------
# Looking for a string in all files in all directories (and subdirs)
# except SVN subdirectories
# ---------
# Arguments
# ---------
# Argument 1 is string. If not given, asked for.
#############################################################################
BLUE="$(tput setaf 4)"
RED="$(tput setaf 1)"
NORMAL="$(tput sgr0)"
temp="$(tempfile)"
if [ "$1" == "" ]
then
echo -n "${BLUE}Search for:${NORMAL} " 1>&2
read s
else
s="$@"
fi
echo "${RED}----------${NORMAL}" 1>&2
grep -RIl "$s" * |
sort |
uniq |
grep -v "/.svn/" > "$temp" 2> /dev/null
cat "$temp"
echo "${RED}----------${NORMAL}" 1>&2
echo "${RED}$(wc -l "$temp" | cut -d\ -f1) résultats${NORMAL}" 1>&2
rm "$temp"
2e script — je l'appelle p. ex. « vimWhere ». C'est celui qui vous intéresse, mais il a besoin du premier.
#!/usr/bin/env bash
# -----------
# Description
# -----------
# Looking for a string in all files in all directories (and subdirs)
# except SVN subdirectories and opens vim to edit directly where
# it is necessary.
# ---------
# Arguments
# ---------
# Arguments are concatenated => research pattern.
# If no argument, it is prompted.
#############################################################################
SEARCH_PROG="~/.my_binaries/where"
BLUE="$(tput setaf 4)"
RED="$(tput setaf 1)"
NORMAL="$(tput sgr0)"
temp="$(tempfile)"
if [ "$1" == "" ]
then
echo -n "${BLUE}Search for:${NORMAL} " 1>&2
read s
else
s="$@"
fi
count=0
while read i
do
toedit[count++]="$i"
done < <("$SEARCH_PROG" "$s" 2> /dev/null)
((count==0)) && {
echo Nothing to edit
exit 0
}
echo ':au BufEnter * winc |' > $temp
while ((count > 0))
do
((count--))
echo "/$s" >> $temp
echo ":winc w" >> $temp
done
vim -O -s "$temp" -- "${toedit[@]}"
rm $temp
— Adaptez la ligne « SEARCH_PROG="~/.my_binaries/where" » avec le nom du premier script
— Rendez les deux scripts exécutables
— Rendez le deuxième (et même le premier si vous comptez l'utiliser) en accès facile, par exemple en mettant son répertoire dans PATH ou avec un alias.
C'est prêt.
Benoit
Dernière modification par pabix (Le 04/02/2009, à 19:04)
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#2 Le 30/10/2006, à 18:54
- pabix
Re : Ouvrir vim sur les bons fichiers, à la bonne ligne
Personne n'est intéressé ? Ça m'étonne quand même !
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#3 Le 13/11/2006, à 15:25
- pabix
Re : Ouvrir vim sur les bons fichiers, à la bonne ligne
Edit : maintenant, à chaque changement de fichier, la fenêtre est remise en taille maximale.
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#4 Le 13/11/2006, à 17:13
- gapz
Re : Ouvrir vim sur les bons fichiers, à la bonne ligne
Personne n'est intéressé ? Ça m'étonne quand même !
Benoit
Mais bien sûr que si qu'on est interessé, sauf que les gens qui utilisent sont des gens sérieux et donc très pris.... (pas le temps de poster)
CQFD
Real programmers code in binary :: http://gapz.tuxfamily.org
Hors ligne
#5 Le 30/08/2007, à 10:21
- compte supprimé
Re : Ouvrir vim sur les bons fichiers, à la bonne ligne
houlà, c'est énorme
" edit
" C'est même mieux avec gvim
" Par contre s'il y a un espace dans le nom de fichier ça le fait moins.
Merci pabix
Dernière modification par weenu (Le 30/08/2007, à 10:43)
#6 Le 15/09/2007, à 06:30
- pabix
Re : Ouvrir vim sur les bons fichiers, à la bonne ligne
Voilà ! Ça marche avec les espaces, les ", les ' et tout et tout !
Dernière modification par pabix (Le 15/09/2007, à 07:15)
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#7 Le 29/03/2008, à 14:18
- pabix
Re : Ouvrir vim sur les bons fichiers, à la bonne ligne
Je fais un petit up : je viens de mettre à jour !
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#8 Le 29/03/2008, à 15:59
- Yannick_LM
Re : Ouvrir vim sur les bons fichiers, à la bonne ligne
Au fait, Vim possède aussi un "grep" interne
:help grep pour plus d'infos
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne