Biorąc pod uwagę długi ciąg, który musi być wyświetlany z ograniczoną szerokością tekstu, czy istnieje narzędzie wiersza poleceń w * nix, które konwertuje ciąg jednowierszowy na ciąg wieloliniowy, przy czym każdy wiersz nie jest dłuższy niż dana szerokość tekstu?
Na przykład, biorąc pod uwagę następujący ciąg
$ MYSTRING="Call me Ishmael. Some years ago - never mind how long precisely - having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world."
Chciałbym sformatować mniej więcej tak:
$ echo $MYSTRING | special-format-command --width=30
Call me Ishmael. Some years ag
o - never mind how long precis
ely - having little or no mone
y in my purse, and nothing par
ticular to interest me on shor
e, I thought I would sail abou
t a little and see the watery
part of the world.
text-processing
Cory Klein
źródło
źródło
echo $MYSTRING | fold -w 30
, ponieważ-30
składnia nie pojawia się na stronie zagięcia ?fmt
. Różnica międzyfold
ifmt
polega na tym,fold
że zawija się na ustalonej szerokości, nawet dzieli słowa i może zaczynać wiersze spacjami. Chociażfmt
zawinie się w pobliżu lub poniżej szerokości, nie podzieli słów, linie nie będą zaczynać się spacjami i krótkie linie mogą zostać połączone.fold
wydaje się mieć podobne zachowanie, jak wfmt
przypadku-s
użycia tej opcji.Oto metoda wykorzystująca
sed
:źródło
.\{30\}
) na ten sam ciąg (&
), po którym następuje nowa linia.Całkowitym celem
fmt
(części jądra GNU i innych wersji IIRC zostały dołączone do nixów innych niż GNU *, więc prawie na pewno będzie już zainstalowany) jest sformatowanie akapitów.Istnieje jednak jeszcze lepsze narzędzie o nazwie
par
(do formatowania akapitu). Może zrobić wszystko, co w jegofmt
mocy, ale z większą ilością opcji kontrolowania dokładnego formatu wyjściowego.Jedną z wielu naprawdę fajnych rzeczy
par
jest to, że jest bardzo sprytny w obsłudze cytowania w wiadomościach e-mail (nawet na wielu poziomach cytowania) - bardzo przydatny ... Mam skonfigurowane moje .vimrc, tak że naciśnięcie F5 powoduje wysłanie bieżącego akapitu przez par.Jeśli nie jest spakowany dla twojej dystrybucji (dotyczy Debiana i pochodnych, prawdopodobnie także innych), par można znaleźć na stronie http://www.nicemice.net/par/
źródło
*nix
to tylko sposób na powiedzenie „ogólny system uniksowy lub system uniksopodobny” - pochodzi z czasów, gdy słowo Unix było zastrzeżonym znakiem towarowym AT&Tfold -s
jest najkrótszą, najlepszą odpowiedzią na twoje pytanie.Jednak w niektórych przypadkach są one tak dobre, jak narzędzia uniwersalne, jednak powinieneś poprosić o to swojego edytora.
W Emacsie możesz to zmienić w dowolny sposób. Jeśli chodzi o mnie, używam
visual-line-mode
(pokazuje się jakoWrap
mniejszy tryb w linii trybu), ponieważ w ogólnym przypadku nie chcę łamania linii nigdzie indziej niż na końcu akapitów.Myślałem, że powiem, jak to robię. To nie jest „droga”, ale jedna droga; jak już wspominam o funkcjach i zmiennych, waszym sposobem jest ich połączenie i zautomatyzowanie, aby działały dla ciebie. (To jest Emacs, ale dla każdego wystarczająco zaawansowanego edytora można napisać podobny post.)
Powiedziałem, że mam wizualnie zawijane linie podczas pisania i nigdy nie łamię ich ręcznie. Jak zawsze, są wyjątki: na przykład GNUS nie wysyła postów do Usenetu z liniami przekraczającymi określoną szerokość (w znakach). Więc używam
M-q
. W EmacsieM-q
uruchamia poleceniefill-paragraph
. Zmiennafill-column
kontroluje szerokość napełniania. Na przykład, jeśli napiszę to (w jednym wierszu)i używam Mq, rozumiem
Z
justify-current-line
(dwa razy więcej niż dwie linie), dostajeszOdkryłem jednak, że ludzie rzadko używają czcionek o jednolitej przestrzeni do przeglądania rzeczy, więc używanie go nie miało sensu (poza moją przyjemnością oglądania). Jeśli Ci się spodoba, możesz dostosować,
fill-paragraph
aby wypełnić i uzasadnić w tym samym czasie. Można również mieć Emacs zrobić dla ciebie, zawsze, jak piszesz:auto-fill-mode
. (Stresowałem się, ale to ja.)To może wydawać się dużo pracy i tak jest; ale kiedy skończysz (z tym i 1000 innymi rzeczami), możesz naprawdę cieszyć się pracą z narzędziami zachowującymi się dokładnie tak, jak lubisz.
źródło