Pourquoi est-ce une nouvelle ligne pour Vim?
-
09-06-2019 - |
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?
La solution
\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
estCR
(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 <=> )