la syntaxe de la partie de recherche et de pièces de rechange sont arbitrairement différents. Certains des mêmes codes sont réutilisés pour signifier différentes choses. Oui, c'est déroutant.
| How to type | In search, means: | In replacement, means:
----------------------------------------------------------------------------
\n | \n | End-of-line | <Nul> 0x0
^@ | CTRL-V CTRL-J | <Nul> 0x0 | <Nul> 0x0
\r | \r | Carriage return 0xD | "Break the line here"
^M | CTRL-Enter | Carriage return 0xD | "Break the line here"
\^M | \ CTRL-V CTRL-ENTER | \ + carriage return 0xD | Carriage return 0xD
Lors de la recherche, en fonction de votre plate-forme, le 0xD
peut être caché, considérés comme faisant partie de « retour à la ligne », alors oui ... vous pouvez toujours revenir à vos fichiers santé mentale et la force de tous les retours chariot affichés par l'ouverture d'un fichier et faire:
:e ++ff=unix
de même en cas de remplacement, « briser la ligne ici » fait des choses différentes en fonction de votre plate-forme. Il pourrait insérer 0xA
ou 0xD 0xA
etc.
Dans le cas où ce n'est pas tout déjà assez mauvais:
Technical detail: *NL-used-for-Nul*
<Nul> characters in the file are stored as <NL> in memory. In the display
they are shown as "^@". The translation is done when reading and writing
files. To match a <Nul> with a search pattern you can just enter [email protected] or
"CTRL-V 000". This is probably just what you expect. Internally the
character is replaced with a <NL> in the search pattern. What is unusual is
that typing CTRL-V CTRL-J also inserts a <NL>, thus also searches for a <Nul>
in the file. {Vi cannot handle <Nul> characters in the file at all}
*CR-used-for-NL*
When 'fileformat' is "mac", <NL> characters in the file are stored as <CR>
characters internally. In the text they are shown as "^J". Otherwise this
works similar to the usage of <NL> for a <Nul>.
When working with expression evaluation, a <NL> character in the pattern
matches a <NL> in the string. The use of "\n" (backslash n) to match a <NL>
doesn't work there, it only works to match text in the buffer.
À moins traiter littérale 0x0
ou 0xD
caractères, il est agood une règle de pouce pour toujours coller avec \n
pour la recherche et \r
pour le remplacement, comme vous l'avez probablement compris.
Voir aussi:
:h /\n
:h /\r
:h s/\n
:h s/\r
:h s/\<CR>
Vous pensez que ce étrange? La façon dont j'ai utilisé pour résoudre le problème de retour chariot/saut de ligne lors du déplacement entre Unix et Windows est de faire ':% s/^ V^M/^ V^M/g' –
@Paul Je me sens comme ceci est un apparenté problème. Comme l'affichage d'une chose, la recherche contre une autre chose et l'écriture d'un tiers. – tzenes