เมื่อฉันคัดลอกโค้ดจากไฟล์อื่นการจัดรูปแบบจะเลอะเช่นนี้:
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 indentindent my_program.c