Question

De la question Comment remplacer un caractère pour une nouvelle ligne dans Vim? . Vous devez utiliser \ r lors du remplacement de texte pour une nouvelle ligne, comme ceci

:%s/%/\r/g

Mais lorsque vous remplacez les fins de lignes et les nouvelles lignes d'un caractère, vous pouvez le faire comme suit:

:%s/\n/%/g 

Quelle section du manuel documente ces comportements et quel est leur raisonnement?

Était-ce utile?

La solution

De vim docs sur les modèles :

  

\r correspond à < CR >

     

\n correspond à une fin de ligne -     Lors de la correspondance dans une chaîne au lieu de   texte tampon une nouvelle ligne littérale     le caractère est assorti.

Autres conseils

De http://vim.wikia.com/wiki/Search_and_replace :

  

Lors de la recherche

     

...

     

\n est une nouvelle ligne, \r est CR (retour chariot = Ctrl-M = ^M)

     

Lors du remplacement

     

...

     

0x00 est un saut de ligne, <=> est un octet nul (<=>).

Un autre aspect est que \0, qui est traditionnellement NULL, est pris en compte. s//\0/ signifie & "tout le motif correspondant &"; (Qui, soit dit en passant, est redondant avec, et plus long que, &).

  • Donc, vous ne pouvez pas utiliser NULL pour signifier \n, donc vous utilisez \r
  • Donc, vous ne pouvez pas utiliser <=> pour signifier <=>, donc vous utilisez <=>.
  • Donc, vous ne pouvez pas utiliser <=> pour signifier <=>, mais je ne sais pas qui voudrait ajouter ce caractère volontairement.

& # 8212; & # 9736;

:help NL-used-for-Nul

  

Détail technique:

     Les caractères

<Nul> du fichier sont stockés sous <NL> en mémoire. À l'écran   ils sont indiqués par " ^@ " ;. La traduction est faite en lecture et en écriture   des dossiers. Pour faire correspondre un <=> à un modèle de recherche, vous pouvez simplement entrer CTRL - @ ou   " CTRL-V 000 &> ;. C'est probablement ce à quoi vous vous attendez. En interne, le   caractère est remplacé par un <=> dans le modèle de recherche. Ce qui est inhabituel est   que taper CTRL-V CTRL-J insère également un <=>, donc recherche également un <=>   dans le fichier. {Vi ne peut pas gérer <=> les caractères du fichier}

Tout d’abord, ouvrez :h :s pour afficher la section < !> quot; 4.2 Remplacer " de la documentation sur " Change " ;. Voici ce que la commande accepte:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

Notez la description de pattern et de string

  

Pour la {pattern} voir |pattern| .
  {string} peut être une chaîne littérale ou quelque chose de similaire
  spécial; voir |sub-replace-special| .

Vous savez maintenant que le modèle de recherche et les modèles de remplacement suivent des règles différentes. Si vous suivez le lien vers \r, vous obtiendrez la section qui explique tous les modèles d’expression rationnelle utilisés dans Vim.

Pendant ce temps, :h :s% vous amène à la sous-section de & "; 4.2 Substitute &" ;, qui contient les modèles de substitution, parmi lesquels <=> pour les sauts de ligne / scissions.

(Le raccourci vers cette partie du manuel est <=> )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top