Ako môžem nájsť/nahradiť všetky znaky CR/LF v Poznámkovom bloku++?
Hľadám niečo ekvivalentné špeciálnemu znaku ^p v programe Microsoft Word.
[\r\n]+
by malo fungovať tiež
Aktualizácia 26. marca 2012, dátum vydania Notepad++ 6.0:
OMG, teraz to skutočne funguje!!!
Pôvodná odpoveď 2008 (Notepad++ 4.x) - 2009-2010-2011 (Notepad++ 5.x)
V skutočnosti nie, zdá sa, že to nefunguje s regexp...
Ale ak máte Notepad++ 5.x, môžete použiť 'rozšírený' režim vyhľadávania a hľadať \r\n
. To nájde všetky vaše CRLF
.
(Uvedomujem si, že je to rovnaká odpoveď ako ostatné, ale opäť, 'rozšírený režim' je k dispozícii len v Notepad++ 4.9, 5.x a viac)
Od apríla 2009 máte na stránke Notepad++ na túto tému článok na wiki:
"Ako nahradiť konce riadkov, čím sa zmení rozloženie riadkov".
(Spomenul ho georgiecasey vo svojej odpovedi nižšie)
Niektoré relevantné výňatky obsahujú nasledujúce postupy vyhľadávania:
Jednoduché vyhľadávanie (Ctrl+F), Režim vyhľadávania =
Normálne
V editačnom okne môžete vybrať
EOL
.
- Stačí presunúť kurzor na koniec riadku a napísať Shift+šípka doprava.
- alebo ak chcete myšou vybrať
EOL
, začnite tesne na konci riadku a ťahajte na začiatok ďalšieho riadku; ťahanie vpravo odEOL
nebude fungovať. Môžete ručne skopírovaťEOL
a vložiť ho do poľa pre unixové súbory (lenLF
).
Jednoduché vyhľadávanie (Ctrl+F), Režim vyhľadávania = Rozšírené
Voľba "Extended" zobrazuje znaky
\n
a\r
ako znaky, ktoré by mohli byť porovnané.
Rovnako ako pri normálnom režime vyhľadávania, Notepad++ hľadá presný znak.
Hľadanie\r
v súbore vo formáte UNIX nenájde nič, ale hľadanie\n
áno. Podobne súbor vo formáte Macintosh bude obsahovať\r
, ale nie\n
.
Jednoduché vyhľadávanie (Ctrl+F), Režim vyhľadávania = regulárny výraz
Regulárne výrazy používajú znaky
^
a$
na ukotvenie reťazca zhody na začiatku alebo na konci riadku. Napríklad vyhľadávaniereturn;$
nájde výskyty "return;", ktoré sa nevyskytujú so žiadnym nasledujúcim textom na tom istom riadku. Znaky kotvy fungujú vo všetkých formátoch súborov rovnako.
Metaznak '.' bodka nezodpovedá koncom riadkov.
[Testované v programe Notepad++ 5.8.5]: vyhľadávanie pomocou regulárneho výrazu s explicitným znakom
\r
alebo\n
nefunguje (v rozpore s dokumentáciou Scintilla).
Nefunguje ani vyhľadávanie podľa explicitného (vloženého) LF alebo podľa (neviditeľných) znakov EOL umiestnených v poli, keď je vybraný EOL. Rozšírené vyhľadávanie (Ctrl+R) bez regexpu
Ctrl+M vloží niečo, čo zodpovedá novým riadkom. Tie budú nahradené reťazcom replace.
Tento spôsob odporúčam ako najspoľahlivejší, pokiaľ naozaj nepotrebujete použiť regex.
Ako príklad možno uviesť, že ak chcete odstrániť každý druhý nový riadok v súbore s dvojitým riadkovaním, zadajte Ctrl+M dvakrát do poľa pre vyhľadávací reťazec a raz do poľa pre reťazec nahradiť.
Rozšírené vyhľadávanie (Ctrl+R) pomocou Regexp.
Ani Ctrl+M,
$
ani\r\n
sa nezhodujú.
Na tej istej wiki sa uvádza aj alternatíva Hex editor:
- Zadajte nový reťazec na začiatku dokumentu.
- Potom vyberte možnosť zobraziť dokument v hexadecimálnom režime.
- Vyberte jeden z nových riadkov a stlačte Ctrl+H.
- Kým máte otvorené dialógové okno Nahradiť, vyberte na pozadí nový nahradený reťazec a Ctrl+C ho skopírujte, aby ste ho mohli vložiť do vstupu Nahradiť textom.
- Potom podľa potreby nahraďte alebo nahraďte všetko.
Poznámka: znak vybraný pre nový riadok sa zvyčajne zobrazí ako
0a
.
Ak je súbor vo formáte Windows, môže mať inú hodnotu. V takom prípade môžete vždy prejsť naUpraviť -> Prevod EOL -> Previesť do formátu Unix
a po nahradení ho prepnúť späť aUpraviť -> Prevod EOL -> Previesť do formátu Windows
.
V dialógovom okne Nahradiť chcete nastaviť režim vyhľadávania na možnosť "Rozšírené". Normálny režim alebo režim regulárneho výrazu nebude fungovať.
Potom stačí nájsť "\r\n" (alebo len \n pre unixové súbory alebo len \r pre súbory vo formáte mac) a nastaviť nahradenie na čokoľvek chcete.
Za predpokladu, že má "regulárne výrazy" vyhľadávanie, vyhľadajte \r\n. Ja dávam prednosť \r?\n, pretože niektoré súbory nepoužívajú návraty vozíka.
EDIT: Vďaka za spätnú väzbu, ktokoľvek to odhlasoval. Dozvedel som sa, že... no, nič, pretože ste neposkytli žiadnu spätnú väzbu. Prečo je to zlé?