คุณแปลงข้อความทั้งหมดใน 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:$