Chaque fichier garde son encodage
Le fichier est décodé avec l’encodage dans lequel il était stocké, le remplacement s’applique au texte, et il est réécrit avec ce même encodage et ses fins de ligne d’origine. Rien n’est normalisé au passage.

Rechercher et remplacer dans les fichiers
La plupart des outils de remplacement sur un dossier lisent chaque fichier comme de l’UTF-8, le réécrivent en UTF-8 avec des fins de ligne LF, et vous rendent un diff plein de changements que vous n’aviez pas demandés. Linelark lit chaque fichier avec son propre encodage et ses propres fins de ligne, et le réécrit à l’identique.

Le mécanisme
Rechercher ▸ Remplacer dans les fichiers parcourt le dossier ouvert, décide quels fichiers sont candidats, et ne réécrit que ceux qui correspondent vraiment. Chaque étape existe pour éviter une façon précise dont un remplacement sur un dossier tourne mal.
Le fichier est décodé avec l’encodage dans lequel il était stocké, le remplacement s’applique au texte, et il est réécrit avec ce même encodage et ses fins de ligne d’origine. Rien n’est normalisé au passage.
Les fichiers CRLF et CR sont normalisés en LF *en mémoire*, pour qu’un motif qui traverse un saut de ligne se comporte pareil partout, puis réécrits avec les fins de ligne qu’avait le fichier à l’arrivée.
.git, .svn, node_modules, .build, build, DerivedData, .venv et __pycache__ sont ignorés en bloc — l’énumérateur n’y descend pas, donc une occurrence dans node_modules ne peut pas être réécrite par accident.
Un octet NUL n’importe où dans le premier kilooctet d’un fichier est le signe classique, et tout fichier qui en contient un est ignoré avant qu’une regex ne l’effleure.
Les tampons déjà ouverts dans l’éditeur sont exclus du parcours, donc un remplacement sur un dossier ne peut pas jeter en silence des modifications non enregistrées dans un onglet caché derrière la fenêtre.
L’énumération de répertoires renvoie /private/var quand une URL construite à la main dit /var. Sans réduire cet écart, le garde-fou « ignorer ce fichier ouvert » aurait l’air de fonctionner tout en ne faisant rien.
Les détails
Ce sont les vraies constantes, pas des arrondis. Savoir où un outil s’arrête, c’est ce qui le rend digne de confiance pour un dépôt auquel vous tenez.
| Comportement | Valeur |
|---|---|
| Fichier le plus gros pris en compte | 4 Mo. Tout ce qui dépasse est ignoré par la recherche comme par le remplacement. |
| Résultats renvoyés par une recherche | Jusqu’à 5 000 occurrences sur l’ensemble du dossier, et jusqu’à 500 dans un même fichier. |
| Syntaxe des motifs | Expressions régulières ICU via NSRegularExpression, avec les options de casse et de mot entier. |
| Filtre de fichiers | Séparé par des espaces, des virgules ou des points-virgules. *.swift, swift et un nom de fichier exact fonctionnent tous. |
| Fichiers cachés | Ignorés. L’énumérateur tourne avec skipsHiddenFiles. |
| Ce que fait une écriture ratée | Le fichier est consigné par son nom dans le rapport et le traitement continue. Il n’est jamais laissé à moitié écrit. |
Lu dans le code publié de Linelark Studio 1.17.1, et non dans sa documentation. Quand les deux divergent, c’est celui-ci qui est livré.
Avant de compter dessus
Un remplacement sur un dossier est une opération destructrice sur des fichiers que vous n’avez pas ouverts. Voici les cas où il vaut mieux prendre autre chose.
Gratuit, et pour de bon
Notarisé par Apple, macOS 14 et versions ultérieures, Intel et Apple silicon.
Télécharger Studio 1.17.1 8.5 MB · toutes les versions, avec leurs empreintes