web-dev-qa-db-fra.com

Étant donné le résultat de grep -n, comment puis-je ouvrir vim dans cette ligne spécifique? (en utilisant uniquement le clavier)

Lorsque j'exécute grep "keyword" -n et que je reçois 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 (dites le deuxième de la liste) dans la ligne trouvée?

Je viens maintenant de copier le résultat à l'aide de la souris, de le copier après vimname__, puis d'ajouter + avec le numéro de ligne que je copie. (Cela signifie que j'écris vim a/b/c +70 en 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 il est suffisamment court])

Est-il possible de le faire avec un raccourci clavier?

8
CIsForCookies

Deux choses:

  1. Vim supporte un peu grep.

    Si vous ouvrez Vim et que vous faites :grep keyword ... , Vim renseigne la liste des correctifs rapides avec les résultats et passe au premier fichier. Vous pouvez ensuite passer à l'entrée n avec :cc n (et d'autres commandes).

  2. Vous pouvez renseigner la liste de correctifs susmentionnée à l'aide de la sortie de grep:

    vim -q <(grep -n keyword ...)
    

    Et ensuite, utilisez les commandes de navigation de quickfix mentionnées ci-dessus.

Cela est plus simple que de jouer avec la sortie de grep manuellement.

Au lieu de (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:

grep ... | tee log
vim -q log
12
muru

Vous pouvez le faire s'il n'y avait pas déjà de support pour grep alors que @muru répondait:

:cexpr system("grep -n keyword")

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.

2
max630