เมื่อฉันคัดลอกโค้ดจากไฟล์อื่นการจัดรูปแบบจะเลอะเช่นนี้:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
ฉันจะจัดรูปแบบอัตโนมัติของรหัสนี้เป็นกลุ่มได้อย่างไร
เมื่อฉันคัดลอกโค้ดจากไฟล์อื่นการจัดรูปแบบจะเลอะเช่นนี้:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
ฉันจะจัดรูปแบบอัตโนมัติของรหัสนี้เป็นกลุ่มได้อย่างไร
คำตอบ:
ลองกดแป้นต่อไปนี้:
gg=G
คำอธิบาย: gg
ไปที่ด้านบนของไฟล์=
เป็นคำสั่งเพื่อแก้ไขการเยื้องและG
บอกให้ดำเนินการจนถึงจุดสิ้นสุดของไฟล์
ฉันชอบใช้โปรแกรมสไตล์ศิลปะ ตามเว็บไซต์ :
Artistic Style เป็นซอร์สโค้ดตัวจัดรูปแบบและตัวเสริมความงามสำหรับภาษาการเขียนโปรแกรม C, C ++, C # และ Java
มันทำงานใน Window, Linux และ Mac มันจะทำสิ่งต่าง ๆ เช่นเยื้องแทนที่แท็บด้วยช่องว่างหรือในทางกลับกันวางช่องว่างรอบการดำเนินการตามที่คุณต้องการ (แปลงif(x<2)
ถ้า( x<2 )
หากเป็นวิธีที่คุณชอบ) วางวงเล็บในบรรทัดเดียวกันเป็นคำนิยามฟังก์ชั่นหรือย้ายพวกเขาไป บรรทัดด้านล่าง ฯลฯ ตัวเลือกทั้งหมดจะถูกควบคุมโดยพารามิเตอร์บรรทัดคำสั่ง
เพื่อใช้ใน vim เพียงตั้งค่าตัวเลือก formatprg แล้วใช้คำสั่ง gq ตัวอย่างเช่นฉันมีใน. vimrc ของฉัน:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
เพื่อที่ว่าเมื่อใดก็ตามที่ฉันเปิดไฟล์. cpp, formatprg จะถูกตั้งค่าด้วยตัวเลือกที่ฉันชอบ จากนั้นฉันสามารถพิมพ์ gg เพื่อไปที่ด้านบนของไฟล์และจัดgqGรูปแบบไฟล์ทั้งหมดตามมาตรฐานของฉัน หากฉันเพียงต้องการฟอร์แมตฟังก์ชันเดียวฉันสามารถไปที่ด้านบนสุดของฟังก์ชั่นจากนั้นพิมพ์gq][และมันจะฟอร์แมตฟังก์ชันนั้นใหม่
ตัวเลือกที่ฉันมีสำหรับ astyle -T4pb
เป็นเพียงความชอบของฉัน คุณสามารถดูเอกสารของพวกเขาและเปลี่ยนตัวเลือกเพื่อให้มันจัดรูปแบบรหัสตามที่คุณต้องการ
นี่คือตัวอย่าง ก่อนที่จะ astyle:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
หลัง astyle (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
หวังว่าจะช่วย
ฉันพบว่าใช้clang-format
งานได้ดี
มีตัวอย่าง keybindings ในเอกสาร clang
ฉันชอบใช้การequalprg
รวมเป็นกลุ่ม นี้ช่วยให้คุณสามารถเรียกใช้clang-format
ด้วยG=gg
หรืออื่น ๆ ที่=
ตัวเลือกการเยื้อง
เพียงแค่ใส่สิ่งต่อไปนี้ในไฟล์. vimrc ของคุณ:
autocmd FileType c,cpp setlocal equalprg=clang-format
sudo apt install clang-format
บางทีคุณสามารถลองต่อไปนี้ $ indent -kr -i8 * .c
หวังว่ามันจะมีประโยชน์สำหรับคุณ!
ฉันชอบindent
ที่กล่าวไว้ข้างต้น แต่ส่วนใหญ่ฉันต้องการจัดรูปแบบเฉพาะส่วนเล็ก ๆ ของไฟล์ที่ฉันกำลังทำงานอยู่ เนื่องจากindent
สามารถรับรหัสจาก stdin ได้ง่ายมาก:
:!indent
รูปแบบโดยการพิมพ์astyle
ใช้ stdin ด้วยดังนั้นคุณสามารถใช้เล่ห์เหลี่ยมเดียวกันได้
ฉันต้องการเพิ่มว่าเพื่อป้องกันไม่ให้เกิดความสับสนในสถานที่แรกที่คุณสามารถพิมพ์:set paste
ก่อนวาง หลังจากวางคุณสามารถพิมพ์:set nopaste
สิ่งต่างๆเช่น js-beautify และเยื้องเพื่อทำงานอีกครั้ง
:set paste!
สำหรับสิ่งนี้ซึ่งสลับค่าการวางแทนการตั้งค่า สิ่งนี้ทำให้ง่ายต่อการปิดเนื่องจากคุณสามารถเลื่อนคำสั่งสองสามคำสั่งแล้วกด Enter
indent
ของพวกเขาคือเครื่องมือที่เรียกว่า คุณสามารถดาวน์โหลดได้ด้วยแล้วเรียกใช้apt-get install indent
indent my_program.c