web-dev-qa-db-fra.com

Remplacer le texte entre guillemets dans vim

J'ai un gros fichier SQL et je voudrais renommer le nom de la table de "feedback" en "commentaires", mais je ne souhaite pas remplacer le commentaire Word si une ligne contient ce texte, j'essayais donc de le sélectionner avec le citations mais vim ne peut pas le trouver. j'utilise

:s/`feedback`/`comments`/

Une idée comment le faire? peut-être que vim n'est pas la meilleure option pour cela?

4
SERPRO

Alors que vim en est certainement capable, ma première pensée serait d’utiliser sed ou Perl. Utilisation de sed:

sed -i.bak 's/`feedback`/`comments`/g' path/to/file

L'indicateur -i permet à sed d'effectuer des opérations dans les fichiers spécifiés au lieu d'écrire dans stdout (-isuffix effectue une copie de sauvegarde path/to/filesuffix).

6
muru

Essayez in vim:

:%s/`feedback`/`comments`/gc

cela devrait fonctionner comme prévu

5
Ramya A

Voici un vi/vim one-liner (en utilisant ex -s pour éviter d'ouvrir l'éditeur plein écran, ce qui provoquerait un bref clignotement):

ex -s -c 'w %~ | %s/`feedback`/`comments`/g' -c 'x' <file>

Explication:

  • w %~ enregistre une copie du fichier avec le suffixe ~. C'est pratique comme sauvegarde au cas où vous gâcheriez quelque chose.
  • | est le séparateur de commande.
  • % signifie "faire cette action sur chaque ligne".
  • s/`feedback`/`comments`, comme vous le savez probablement déjà, signifie "remplacez le texte par l'expression régulière `feedback` par `comments` sur la ligne en cours".
  • g signifie "global", c'est-à-dire ne vous arrêtez pas après la première substitution sur la ligne.
  • x est un raccourci pour wq, c’est-à-dire qu’il signifie écrire le fichier et quitter. Il doit être séparé, sinon il sera bloqué s'il n'y a pas de correspondance.
2
nyuszika7h