Remplacer dans tout un dossier
sans réécrire la façon dont les fichiers sont stockés.

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.

Studio 1.17.1 · macOS 14+8.5 MB à télécharger
Linelark affichant les résultats de Rechercher dans les fichiers à côté du fichier ouvert par l’un d’eux, la barre de recherche réglée sur In Files
Rechercher dans les fichiers, sur un dossier ouvertStudio 1.17.1 · macOS 14+

Ce qui se passe quand vous lancez Remplacer dans les fichiers.

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.

01

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.

02

Les fins de ligne survivent à l’aller-retour

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.

03

La sortie de compilation est ignorée, pas parcourue

.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.

04

Les binaires sont détectés et laissés tranquilles

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.

05

Les fichiers que vous avez ouverts ne sont jamais écrasés

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.

06

Les chemins sont canonisés avant comparaison

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 limites, telles qu’elles sont fixées dans le code.

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.

ComportementValeur
Fichier le plus gros pris en compte4 Mo. Tout ce qui dépasse est ignoré par la recherche comme par le remplacement.
Résultats renvoyés par une rechercheJusqu’à 5 000 occurrences sur l’ensemble du dossier, et jusqu’à 500 dans un même fichier.
Syntaxe des motifsExpressions régulières ICU via NSRegularExpression, avec les options de casse et de mot entier.
Filtre de fichiersSéparé par des espaces, des virgules ou des points-virgules. *.swift, swift et un nom de fichier exact fonctionnent tous.
Fichiers cachésIgnorés. L’énumérateur tourne avec skipsHiddenFiles.
Ce que fait une écriture ratéeLe 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é.

Là où ceci ne vous aidera pas.

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.

  • Il n’y a pas d’aperçu du remplacementLa recherche vous montre les occurrences ; Remplacer dans les fichiers rapporte ce qu’il a changé après coup. Si vous voulez inspecter chaque changement avant qu’il n’arrive, remplacez fichier par fichier dans l’éditeur.
  • Il n’y a pas d’annulation entre fichiersL’annulation est propre à chaque tampon. Un remplacement sur un dossier n’est pas une action annulable d’un coup : lancez-le dans un dépôt à l’arbre de travail propre, et lisez le diff.
  • Les fichiers de plus de 4 Mo sortent silencieusement du cadreIls sont ignorés plutôt que signalés comme ignorés. Un journal plus gros que cela ne sera pas parcouru et ne vous le dira pas.
  • La liste des exclusions n’est pas configurable.git, node_modules, DerivedData et les autres sont figés dans cette version. S’il vous faut chercher à l’intérieur de l’un d’eux, cet outil ne sait pas le faire.

Ouvrez-le sur
vos propres fichiers.

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