ฉันจะปรับข้อความธรรมดาใน Linux ได้อย่างไร


17

ฉันกำลังเขียนเอกสารข้อความธรรมดา (.txt) ที่มีย่อหน้าที่ชิดซ้ายและขวา ฉันเพิ่มช่องว่างแบ่งคำด้วยเครื่องหมายขีดคั่นหากจำเป็นจนกว่าบรรทัดจะมีความยาวเท่ากัน ในการใช้ตัวอย่างจากเอกสารของฉันย่อหน้าเช่นนี้:

ลูกบอลเพ้อฝันเหล่านี้มีคุณสมบัติแปลก ๆ บางอย่างเรียบร้อยบ้าง
ที่น่าสนใจและอื่น ๆ บ่งบอกถึงการออกแบบที่ขี้เกียจ เกือบทั้งหมดแล้ว
เกิดจากข้อบกพร่องการออกแบบเดียวกัน: เกมดังกล่าวปฏิบัติต่อพวกเขามากเกินไปเหมือนปกติ
ลูก

จะจบลงเช่นนี้:

ลูกบอลเพ้อฝันเหล่านี้มีคุณสมบัติแปลก ๆ
บางอย่างประณีตบางที่น่าสนใจและอื่น ๆ เพียง indica-
การออกแบบที่ขี้เกียจ พวกมันเกือบทั้งหมดเกิดจาก
ข้อบกพร่องการออกแบบเดียวกัน: เกมดังกล่าวปฏิบัติต่อพวกเขามากเกินไป
ลูกบอลปกติ

ฉันจะทำสิ่งนี้ได้อย่างไร

มันก็โอเคที่จะเพิ่มช่องว่าง (โดยไม่ต้องแบ่งคำข้ามบรรทัด) แต่ฉันต้องควบคุมความกว้างเป้าหมายของย่อหน้า (ใน # อักขระ) ตัวอย่างด้านบนมีความยาวไม่เกิน 53 อักขระต่อบรรทัด แต่ความกว้างของบรรทัดในเอกสารจริงของฉันแตกต่างจาก 60 ถึง 79

มันจะดีถ้ามี text editor พร้อมฟีเจอร์เช่นนั้น

ฉันได้ลองแล้ว:

  • OpenOfficeและTeX : พวกเขาเพียงแค่ใช้การจัดรูปแบบเพื่อเปลี่ยนวิธีแสดงข้อความ
  • คำสั่ง Justify ของนาโนจะไม่นับเพราะมันไม่ได้ทำให้ความกว้างสม่ำเสมอของเส้น

ฉันได้รับการยอมรับคำตอบต่อไปเพราะมันเป็นคนหนึ่งที่ทำงานที่ดีที่สุดสำหรับผม ฉันพบว่า emacs เติมคำสั่งที่ใช้ง่ายที่สุดในบรรดาคำตอบและฉันซาบซึ้งว่ามันสามารถจดจำการเยื้องของช่องว่างที่ไม่ใช่ช่องว่างได้อย่างไร อย่างไรก็ตามคำตอบอื่น ๆ ทั้งหมดเติมซอกของตัวเองและฉันขอแนะนำให้คนอื่น ๆ ที่เข้ามาที่คำถามนี้เพื่อดูพวกเขาเช่นกัน


1
ทำไม? ฉันอยากรู้อยากเห็นอย่างแท้จริง ข้อดีอย่างหนึ่งของข้อความล้วนคือมันเป็นอิสระจากการจัดรูปแบบและคุณสามารถตบมันลงใน OpenOffice หรือ TeX และทำให้มันดูดี คุณใช้อะไรในการทำสิ่งนี้
Doug Harris

นอกจากนี้คุณกำลังมองหายูทิลิตี้นี้เพื่อทำยัติภังค์กึ่งอัจฉริยะเช่นกัน?
Doug Harris

1
เหตุผลก็เพราะเป็นแนวทางสำหรับ GameFAQ GameFAQs ใช้ข้อความล้วน, เอกสาร TXT เท่านั้น สำหรับยัติภังค์ฉันต้องการ แต่ก็ไม่ใช่ข้อกำหนดที่แน่นอน
HP

คำตอบ:


5

คุณสามารถทำได้ใน emacs โดยใช้fill-paragraphหรือfill-region( กรอกเอกสาร )

คุณต้องผ่านอาร์กิวเมนต์คำนำหน้าเป็นตัวเลข คอลัมน์เติมเริ่มต้นคือ 70

M-3 M-x fill-regionเลือกข้อความที่จะเติมเต็มและทำ

ฉันตั้งคอลัมน์เติมเป็น 53 สำหรับข้อความตัวอย่างของคุณและได้รับ:

These phantasmic balls  have some strange properties,
some   neat,  some   interesting,  and   others  just
indicative of lazy  design. They're almost all caused
by  the same design  flaw: The  game treats  them too
much like regular balls.

นั่นดูดี. ฉันกำลังติดตั้งแพคเกจสำหรับ emacs ทันทีเพื่อดูคุณลักษณะนี้
ประสบการณ์ HP

โอเคใช้เวลาค่อนข้างน้อยในการทำความคุ้นเคยกับอินเทอร์เฟซและคำศัพท์ที่ผิดปกติ (อย่างผิดปกติตามมาตรฐานของวันนี้อย่างน้อย) แต่สิ่งนี้ยอดเยี่ยม Cx f 53, M-1 Mq แน่นอนว่ามันง่ายกว่าแผน B ของฉัน (ซึ่งจะเป็นการเขียนสคริปต์ Ruby ของฉันเองที่ให้ข้อความที่เป็นธรรม) และเพื่อความพึงพอใจของฉันมันยิ่งรับรู้ถึงการเยื้องและคำนึงถึงเรื่องนี้เมื่อพิจารณา ดี
HP

ฉันจะตั้งค่าคอลัมน์เติมเป็น 53 หรือเป็นค่าอื่นที่ฉันต้องการสำหรับเรื่องนั้นได้อย่างไร และฉันจะตรวจสอบว่ามันคืออะไรในปัจจุบัน?
HelloGoodbye

1
อย่างไรก็ตามลิงก์ในคำตอบของคุณยังใช้งานไม่ได้
HelloGoodbye

ฉันได้อัพเดทลิงค์
Doug Harris

18

คุณต้องการ par

เช่นจะได้รับมันบน Ubuntu ทำ:

sudo aptitude install par

เพื่อปรับtext.txt(ที่ความกว้าง 80 ตัวอักษร) ให้บันทึกในnewtext.txt:

par j1w80 < text.txt > newtext.txt

ใช้ par ใน vim หรือ gvim:

:set formatprg=par\ j1w80

จากนั้นเน้นข้อความที่คุณต้องการจัดรูปแบบและใช้gqคำสั่ง

สำหรับข้อมูลเพิ่มเติมดู man par


1
ฉันทดสอบและพบว่ามันค่อนข้างงอน บางครั้งมันส่งผลให้เกิดข้อผิดพลาดแม้ในสิ่งที่ดูเหมือนจะบริสุทธิ์ที่สุดของสถานการณ์ เมื่อเปรียบเทียบกับคำสั่ง emacs สิ่งนี้จะใช้ไม่ได้
HP

คุณยกตัวอย่างได้ไหม ดูเหมือนว่าค่อนข้างมั่นคงสำหรับฉัน
sml

1
คำสั่งที่คุณให้ไม่ถูกต้อง มันจะต้องมีไม่par w80 j1 par 80jแก้ไข: หรือpar jw80
Gandaro

6

fmt เป็นทางออกของโรงเรียนเก่า

จากหน้าคน:

fmt [-cmnps] [-d chars] [-l NUM] [-t NUM] [เป้าหมาย [สูงสุด] | -width | ความกว้าง -w] [ไฟล์ ... ]

และ

ความยาวเป้าหมายมีค่าเริ่มต้นที่ 65 และสูงสุดมากกว่า 10 ความยาวเป้าหมาย อีกทางหนึ่งคือพารามิเตอร์ความกว้างเดี่ยวสามารถระบุได้ด้วยการเติมเครื่องหมายขีดกลางหรือใช้ -w ตัวอย่างเช่นfmt -w 72'',fmt -72 '' และ `` fmT 72 72 '' ทั้งหมดสร้างเอาต์พุตที่เหมือนกัน


บางรุ่นfmtไม่มีตัวเลือกหลายตัวและไม่สามารถให้เหตุผลได้เต็ม
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

ขออภัย แต่คุณยังไม่ได้กล่าวอย่างชัดเจนว่าจะปรับข้อความโดยใช้fmtอย่างไร นอกจากนี้ดังที่เดนนิสกล่าวในระบบของฉันหน้า man นั้นไม่ได้ให้ข้อความเช่นที่คุณพูดถึงและไม่ได้บอกวิธีการพิสูจน์
jamadagni

2

นี่คือสคริปต์ Perl ที่เรียกparadjว่าสามารถใช้การให้เหตุผลและการใส่ไฮเฟน

นี่คือการdiffเปลี่ยนแปลงบางอย่างที่ฉันทำเพื่อสนับสนุนการเพิ่มระยะขอบซ้าย:

12c12
< my ($indent, $newline);
---
> my ($indent, $margin, $newline);
15a16
>   "margin:i" => \$margin,
21a23
> $margin = 0 if (!$margin);
149a152
>     print " " x $margin;
187a191,193
>   print "--margin=n (or -m=n or -m n)  Add a left margin of n ";
>   print "spaces\n";
>   print "                                (defaults to 0)\n";

คำสั่งนี้:

./paradj.pl -h --width=53 --both --indent=0 inputfile

สร้างเอาต์พุตใกล้กับตัวอย่างของคุณมาก (พื้นที่พิเศษอยู่ในตำแหน่งที่ต่างกัน)

These  phantasmic balls have some strange properties,
some  neat, some interesting, and others just indica-
tive of lazy design. They're almost all caused by the
same  design flaw: The game treats them too much like
regular balls.

ทางออกที่ดีที่โชคไม่ดีที่ฉันไม่สามารถใช้ ประมาณหนึ่งเดือนที่แล้วฉันพยายามใช้ TeX ใน Perl เพราะฉันต้องการใช้ TeX :: Hyphen (สำหรับปัญหาอื่นที่เกี่ยวข้องกับคำถามนี้) IIRC สิ่งที่ฉันค้นพบคือ repos ของ Ubuntu มีบางส่วนของไลบรารี TeX เท่านั้นและยัติภังค์ไม่ได้อยู่ในหมู่พวกเขา ฉันพยายามติดตั้งไลบรารี Perl TeX ด้วยตนเอง แต่นั่นก็ไม่ได้ผล ฉันสิ้นสุดการทำลาย Perl และใช้เวลาสองสามชั่วโมงเพื่อยกเลิกความเสียหาย ฉันลังเลที่จะให้มันไปอีก ฉันหวังว่าฉันมีตัวแทนมากพอที่จะให้ +1 สำหรับคำตอบนี้ได้อย่างน้อย
HP

@Exp HP: ฉันขอโทษที่คุณมีปัญหามากมาย ฉันได้รับสิ่งนี้ในระบบ Ubuntu 9.10 และฉันไม่มีปัญหา
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

0

ฉันใช้นาโน

เปลี่ยนชื่อไฟล์เป็นชื่อที่สั้นกว่า (8.3) เปิดใน Nano จากนั้นAlt- Jเพื่อปรับเอกสารทั้งหมด Alt- Oเพื่อประหยัด จากนั้นAlt- Xเพื่อออกจาก จากนั้นเปลี่ยนชื่อไฟล์กลับเป็นชื่อเดิม

อาจจะฟังดูยุ่งยาก แต่มันบันทึกฉันมากเวลากว่าทำคู่มือการใช้งานEnter, Delete, Endการ จำกัด คอลัมน์ 90 นาโนค่าเริ่มต้น 72 ฉันจะอยู่กับที่


2
ความมหัศจรรย์ของชื่อไฟล์สั้นคืออะไร?
Jawa

0

reformatคุณสามารถลอง

คุณสามารถติดตั้งบน Debian / Ubuntu sudo apt-get install reformatโดยทำงาน

ใช้แบบนี้:

reformat -w 80 -j < mytext.txt

ข้อความที่ถูกต้องจะถูกเขียนไปยังเอาต์พุตมาตรฐาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.