Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

pabix a écrit :

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 big_smile


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 cool

" edit
" C'est même mieux avec gvim smile
" 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