Lorsque je cours grep "keyword" -n
et que j'obtiens la liste de résultats suivante:
a/b/c:10: keyword
a/b/c:70: keyword
a/b/d:50: keyword
Comment puis-je ouvrir l'un des fichiers (disons le 2e de la liste) dans la ligne qu'il a trouvée?
Je viens maintenant de copier la sortie à l'aide de ma souris, et de la copier après vim
, puis d'ajouter +
avec le numéro de ligne que je copie. (ce qui signifie que j'écris en vim a/b/c +70
utilisant la copie de la souris pour obtenir le nom du fichier, et une autre copie de la souris pour obtenir le numéro de ligne [ou je le copie simplement à la main, quand c'est assez court])
Existe-t-il un moyen de le faire avec un raccourci clavier?
command-line
vim
grep
CIsForCookies
la source
la source
echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset
.Réponses:
Deux choses:
Vim a un certain support pour
grep
.Si vous ouvrez Vim et que vous le faites
:grep keyword ...
, Vim remplit la liste des correctifs rapides avec les résultats et passe au premier fichier. Vous pouvez ensuite passer à la n ième entrée de correction rapide avec:cc n
(et d'autres commandes).Vous pouvez remplir la liste de correctifs précités en utilisant la sortie de grep:
Et puis utilisez les commandes de navigation quickfix mentionnées ci-dessus.
Soit est plus simple que de jouer avec la sortie de grep manuellement.
Comme alternative à (2), vous pouvez enregistrer la sortie de grep dans un fichier et utiliser ce fichier à la place, si vous pensez que vous n'ouvrirez pas nécessairement Vim après:
la source
grep -n
(<filename>:<line>: ...
). J'utilise le plugin fugitif pour Git, puis c'est une question de:Gstatus
, déplacer vers le fichier souhaité et appuyez sur Entrée.grep alias
pour utiliser toujours les couleurs, et cela, pour une raison quelconque, a cassé l'-q >()
option ...Vous pourriez le faire s'il n'y avait pas déjà de support pour grep comme @muru a répondu:
Il peut être utilisé avec une autre commande,
git grep
par exemple.En outre, vous pouvez ouvrir la sortie dans un tampon et utiliser "cbuffer" dessus.
Voir la section quickfix du manuel à ce sujet.
la source