คุณแปลงข้อความทั้งหมดใน Vim เป็นตัวพิมพ์เล็กได้อย่างไร เป็นไปได้ไหม
คุณแปลงข้อความทั้งหมดใน Vim เป็นตัวพิมพ์เล็กได้อย่างไร เป็นไปได้ไหม
คำตอบ:
หากคุณหมายถึงตัวพิมพ์ใหญ่เล็ก ๆ น้อย ๆแล้วไม่นั่นเป็นไปไม่ได้เพราะไม่สามารถแปลงข้อความให้เป็นตัวหนาหรือตัวเอียงในโปรแกรมแก้ไขข้อความใด ๆ(เมื่อเทียบกับโปรแกรมประมวลผลคำ ) หากคุณต้องการแปลงข้อความเป็นตัวพิมพ์เล็กให้สร้างบล็อกแบบวิชวลแล้วกดu(หรือUเพื่อแปลงเป็นตัวพิมพ์ใหญ่) Tilde ( ~) ในโหมดคำสั่งย้อนกลับกรณีของตัวละครภายใต้เคอร์เซอร์
หากคุณต้องการดูข้อความทั้งหมดใน Vim ในตัวพิมพ์เล็กคุณอาจต้องการดูguifontตัวเลือกหรือพิมพ์:set guifont=*ถ้า Vim ของคุณรองรับตัวเลือกแบบอักษร GUI
guuจะตัวพิมพ์เล็กบรรทัดและgu[motion]ตัวพิมพ์เล็กของข้อความ ในทำนองเดียวกันgUUและgU[motion]ทำงานในลักษณะเดียวกันสำหรับตัวพิมพ์ใหญ่เท่านั้น
ฉันคิดว่าคุณต้องการตัวพิมพ์เล็ก การแก้ปัญหาค่อนข้างง่าย:
ggVGu
คำอธิบาย:
Uสำหรับตัวพิมพ์ใหญ่ (เช่นggVGU)
คล้ายกับวิธีแก้ปัญหาของ mangledorf แต่สั้นกว่าและเป็นมิตรกับคนธรรมดา
:%s/.*/\L&/g
:%s/.*/\L&จะพอเพียง (ไม่จำเป็นต้องมีgธงตั้งแต่.*เลือกทั้งบรรทัด)
:%s/./\L&/gเนื่องจาก / g / หมายถึงการดำเนินการที่เป็นสากลสำหรับสาย สิ่งที่ได้รับฉัน &แต่เป็น ทำไมจึงจำเป็น
&ยืนอยู่ที่นี่สำหรับwhat was matched by the patternดังนั้นจึงสามารถเข้าใจได้ดังต่อไปนี้แทนโดย.* \Lowercase(what was matched by the pattern)โปรดทราบว่าการจับคู่บน.ทั่วโลกช้ากว่าการจับคู่.*
ใช้ตัวเลือกโหมดคำสั่งนี้
ggguG
gg - Goto the first line
g - start to converting from current line
u - Convert into lower case for all characters
G - To end of the file.
มีหลายวิธีในการสกินแมว ... นี่คือวิธีที่ฉันโพสต์เกี่ยวกับ:
:%s/[A-Z]/\L&/g
เช่นเดียวกันสำหรับตัวพิมพ์ใหญ่:
:%s/[a-z]/\U&/g
ฉันชอบวิธีนี้เพราะฉันใช้โครงสร้างนี้ ( :%s/[pattern]/replace/g) ตลอดเวลาดังนั้นจึงเป็นธรรมชาติมากขึ้น
:%s/./\U&/gยังใช้งานได้ ปรากฎว่ามันละเว้นตัวเลขและตัวอักษรที่ไม่ใช่ตัวอักษร สิ่งที่ทำให้ฉันเป็นคือ&. ทำไม \ U (หรือ \ L) ไม่เพียงพอเอง? เราจะขอคำอธิบายได้ไหม?
&เป็นแบบสแตนด์อะโลนสำหรับสตริงที่ตรงกัน ดังนั้นจะ\U&ใช้ประโยชน์จากสตริงที่ตรงกันเพื่อให้มันสามารถใช้สำหรับการแทนที่
สำหรับตัวอย่างและข้อมูลเพิ่มเติมโปรดอ่าน: http://vim.wikia.com/wiki/Switching_case_of_characters
&. \ L และ \ U มีเหตุผลสมบูรณ์แบบ แต่ทำไมจึง&จำเป็น
โดยปกติVu(หรือVUตัวพิมพ์ใหญ่) ก็เพียงพอที่จะเปลี่ยนทั้งบรรทัดให้เป็นตัวพิมพ์เล็กได้Vเลือกทั้งบรรทัดเพื่อนำการกระทำไปใช้
Tilda ( ~) เปลี่ยนกรณีของตัวอักษรบุคคลส่งผลให้เกิดกรณีอูฐหรือที่คล้ายกัน
มันยอดเยี่ยมจริงๆที่ Vim มีโหมดที่แตกต่างกันมากมายในการจัดการกับโอกาสต่าง ๆ และวิธีการจัดระเบียบเหล่านั้นอย่างเป็นระเบียบ
ตัวอย่างเช่นv- โหมดภาพที่แท้จริงและโหมดVvisual line และCtrl+ Q- visual block ที่เกี่ยวข้อง (สิ่งที่ช่วยให้คุณสามารถเลือกบล็อกได้คุณสมบัติที่ยอดเยี่ยมของบรรณาธิการชั้นสูงอื่น ๆ ก็มีให้โดยการกดAltปุ่มและเลือกข้อความ)
หากคุณกำลังทำงานภายใต้รสชาติของ Unix
:0,$!tr "[A-Z]" "[a-z]"
:%!tr A-Z a-z
!บ่งชี้ว่าคำสั่งของเชลล์ภายนอกดังนั้น$ man tr(เมื่อเทียบกับ:help tr) เผยให้เห็นว่าเป็นtr translate
:%0,$!tr [:upper:] [:lower:]
ฉันมีปัญหาที่คล้ายกันและฉันต้องการใช้":%s/old/new/g"แต่จบลงด้วยการใช้สองคำสั่ง:
:0
gu:$