ฉันรู้ว่าฉันสามารถเปิดหลายไฟล์ด้วยvimการทำสิ่งที่ชอบvim 2011-12*.logแต่ฉันจะสลับระหว่างไฟล์และปิดไฟล์ทีละไฟล์ได้อย่างไร นอกจากนี้ฉันจะบอกชื่อไฟล์ของไฟล์ปัจจุบันที่ฉันแก้ไขได้อย่างไร
ฉันรู้ว่าฉันสามารถเปิดหลายไฟล์ด้วยvimการทำสิ่งที่ชอบvim 2011-12*.logแต่ฉันจะสลับระหว่างไฟล์และปิดไฟล์ทีละไฟล์ได้อย่างไร นอกจากนี้ฉันจะบอกชื่อไฟล์ของไฟล์ปัจจุบันที่ฉันแก้ไขได้อย่างไร
คำตอบ:
ก่อนอื่นในเสียงเรียกเข้าคุณสามารถป้อน:(โคลอน) จากนั้นช่วยhelpด้วย:helpเพื่อดูรายการหัวข้อช่วยเหลือตนเองรวมถึงบทแนะนำสั้น ๆ ภายในรายการหัวข้อเลื่อนเคอร์เซอร์ไปที่หัวข้อที่สนใจแล้วกดctrl]และหัวข้อนั้นจะเปิดขึ้น
จุดเริ่มต้นที่ดีสำหรับคุณคือหัวข้อ
|usr_07.txt| Editing more than one file
ตกลงไปที่คำตอบของคุณ
หลังจากเริ่มเป็นกลุ่มด้วยรายการไฟล์คุณสามารถย้ายไปยังไฟล์ถัดไปได้โดยการป้อน:nextหรือ:nสั้น ๆ
:wnextสั้นสำหรับเขียนการเปลี่ยนแปลงปัจจุบันแล้วย้ายไปที่ไฟล์ถัดไป
นอกจากนี้ยังมีความคล้ายคลึง:previous, และ:wprevious :Next(โปรดสังเกตว่า:pเป็นชวเลข:print. ชวเลขสำหรับ:previousเป็น:prevหรือ:N.)
หากต้องการดูว่าคุณอยู่ที่ไหนในรายการไฟล์ให้ป้อน:argsและไฟล์ที่กำลังแก้ไขจะปรากฏใน[](เครื่องหมายวงเล็บ)
ตัวอย่าง:
vim foo.txt bar.txt
:args
ผลลัพธ์:
[foo.txt] bar.txt
คุณสามารถเปิดไฟล์อื่นในขณะที่เสียงเรียกเข้าเปิดด้วย:tabe filenameและเพื่อสลับไปยังไฟล์อื่นที่คุณพิมพ์:tabnหรือ:tabpสำหรับไฟล์ถัดไปและก่อนหน้า
แป้นพิมพ์ลัดgTและgtยังสามารถใช้เพื่อสลับแท็บเมื่อคุณไม่ได้อยู่ในโหมดแก้ไข (เช่นไม่ได้อยู่ในการแทรกเปลี่ยนโหมด ฯลฯ ) ในบางระบบCtrl+ Alt+ Page UpและCtrl+ Alt+ Page Downยังอนุญาตให้สลับแท็บได้ด้วย แต่วิธีนี้ไม่ได้ผลเสมอไป (ตัวอย่างเช่นมันจะไม่ทำงานในเทอร์มินัล OS X 'ออกนอกกรอบ')
และคุณสามารถดูชื่อไฟล์ที่ด้านบนของแอพเสียงเรียกเข้า
vim -p file1 file2
:argadd filenameแล้ว:nextไปที่ไฟล์นั้น ในทำนองเดียวกันคุณสามารถใช้:argdel filenameเพื่อลบไฟล์ใดไฟล์หนึ่งในการแก้ไข
คำสั่งเพื่อสลับระหว่างบัฟเฟอร์:
:bf # Go to first file.
:bl # Go to last file
:bn # Go to next file.
:bp # Go to previous file.
:bw # Close file.
:help buffer เพื่อค้นหาข้อมูลเพิ่มเติม
หากต้องการทราบว่าการใช้ชื่อไฟล์Ctrl+ G, :fileหรือ:f
:bwปิดไฟล์ฮ่าฮ่า อย่าลืมอ่านความช่วยเหลือใน:bwที่ที่บอกว่าคุณควรใช้เฉพาะเมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่ มันไม่ได้เป็นเรื่องใหญ่ แต่ถ้าคุณต้องการที่จะเช็ดออกทั้งหมดของเครื่องหมายและข้อมูลเกี่ยวกับแฟ้มใช้ดีกว่า:bdหรือ:qเหมือนคนปกติ
:bwกรณีที่คุณอยากรู้: vi.stackexchange.com/questions/2212/…
ตัวเลือกอื่นนอกเหนือจากคำตอบที่ได้รับคือการแบ่งหน้าต่างด้วย:
:sp
:vsp
:vspสำหรับการแบ่งแนวตั้ง จากนั้นใช้Ctrl+W <ARROW_KEYS>เพื่อย้ายในบานหน้าต่าง
:vsแทน:vsp
Ctrl+W, vสำหรับการแยกในแนวตั้งและCtrl+W, sสำหรับการแยกในแนวนอน
CTRL+Wมาหลายปีแล้วและเมื่อไม่นานมานี้ฉันได้ทำการแก้ไข VI จำนวนมากภายในหน้าเว็บ ทุกครั้งที่ฉันพิมพ์คำสั่งโดยไม่ได้คิดและแท็บเบราว์เซอร์ ... มันหายไปแล้ว! ฉันลืมไปเรื่อย ๆ ฉันต้องเรียนรู้ทางลัดใหม่จริงๆ
:n -> Move to next file
:N -> Move to previous file
ฉันถามคำถามที่คล้ายกันที่ superuser
"วิธีคัดลอกและวางระหว่าง bash windows และไฟล์ต่าง ๆ ที่เปิดด้วย VI"
คำตอบสำหรับคำถามของฉันคือคุณไม่สามารถทำได้ แต่คุณสามารถเปิดสองไฟล์ในหนึ่งหน้าต่างทุบตีโดยใช้:splitคำสั่งของ VIM :
$ vim file1เปิดไฟล์ที่สองภายใน VIM โดยใช้:split file2คำสั่ง$ vim -o file1 file2จากการทุบตี:qออกและ:q!บังคับให้ออกทุบตีของฉันเป็นสีดำและสีขาวดังนั้นชื่อไฟล์ของแต่ละหน้าจอมีการจัดรูปแบบเป็นบรรทัด 'เลือก' ย้อนกลับกับชื่อไฟล์ที่อ้างถึงที่นั่น
Woot!
ฉันพบวิธีที่สะดวกที่สุดในการแก้ไขไฟล์หลายไฟล์โดยใช้แท็บ คุณสามารถเปิดหลายไฟล์ในแท็บแยกผ่านบรรทัดคำสั่งดังนี้:
vim -p file1.txt file2.txt
หรือถ้าคุณเปิดเป็นกลุ่มอยู่แล้วคุณสามารถเปิดไฟล์ใหม่ในแท็บใหม่ดังนี้:
:tabe file2.txt
เมื่อคุณเปิดแท็บแล้วให้ใช้gtเพื่อดูแท็บถัดไปและgTเพื่อดูแท็บก่อนหน้า
คุณสามารถข้ามไปยังแท็บแรกด้วยแท็บ1gtที่สองด้วย2gtเป็นต้น
คุณสามารถปิดแท็บโดยใช้ :tabc
ในที่สุดคุณสามารถย้ายแท็บปัจจุบันไปยังnสถานที่ที่มีวัน:ntabmที่เป็นจำนวนใดมากกว่าหรือเท่ากับn0
argadd a/b c/d e/f
argadd ...จะเพิ่มไฟล์ทั้งหมดลงใน args และไปยัง:ls/ :buffersและอนุญาตให้คุณแก้ไขได้
ดู:h arglsit& :h argedit&:h argsd
นอกจากนี้คุณยังสามารถดำเนินการบางอย่างเฉพาะใน args ด้วย:argdo ...และคุณสามารถเริ่มต้นอีกครั้งกับ args :argsd*ของคุณโดยทำ
มีหลายวิธีที่จะทำเช่นนั้น คนแรกอาจจะสะดวกน้อยกว่าคือการโทรvimด้วยไฟล์ที่คุณต้องการแก้ไข - สร้าง:
vim first_file second_file ...
มันเรียกสองไฟล์ในสองบัฟเฟอร์ ที่จะเปลี่ยนจากไฟล์ไปยังอีกโปรดใช้และ:n :Nหากต้องการแสดงรายการไฟล์ที่คุณกำลังแก้ไข:argsจะทำงาน :help bufferจะช่วยคุณมากขึ้นในเรื่องนี้
สิ่งนี้ควรตอบคำถามของคุณ แต่นี่คือข้อมูลเพิ่มเติม:
ไม่มีทางที่จะแก้ไขไฟล์ของคุณในวิธีที่สะดวกมากขึ้นโดยการแยกคอนโซลหน้าจอของคุณโดยใช้เป็นเสียงเรียกเข้า การทำเช่นนี้เปิดสองเฟรมกับ:split( :sp) หรือ:vsplit( :vs) ในขณะที่ใช้เป็นกลุ่ม จากนั้นไปในกรอบเหล่านี้โดยใช้การรวมกันCtrl+ W> +Ctrl Wนอกจากนี้คุณยังสามารถใช้Ctrl+ W+ ลูกศรหรือคีย์ ( H, J, KหรือL) ที่สอดคล้องกับเฟรมถัดไป :e file_nameเมื่อเป็นเช่นนี้จะทำแก้ไขไฟล์ที่คุณต้องการด้วย :help opening-windowจะช่วยคุณมากขึ้นในเรื่องนี้
ตอนนี้หากคุณต้องการเห็นความแตกต่างระหว่างไฟล์ให้ใช้-dอาร์กิวเมนต์หรือเรียกโปรแกรมvimdiff (เหมือนกัน) กับไฟล์ที่เกี่ยวข้อง :help diffจะช่วยคุณมากขึ้นในเรื่องนี้
vim -d first_file second_file ...
โปรดแจ้งให้เราทราบหากคุณมีปัญหา
ฉันชอบใช้ split windows ทั้งแนวนอนและแนวตั้งเพื่อแก้ไขหลาย ๆ ไฟล์
ฉันใช้ tmux เพื่อจัดการหน้าต่างเหล่านั้นได้ง่ายขึ้น
https://tmux.github.io/ "เทอร์มินัลมัลติเพล็กเซอร์คืออะไรช่วยให้คุณสลับระหว่างโปรแกรมต่าง ๆ ในเทอร์มินัลหนึ่งได้อย่างง่ายดายแยกออกจากพวกเขา (พวกเขายังคงทำงานในพื้นหลัง) มากขึ้นดูคู่มือ "
ตัวอย่าง: ดูไฟล์หรือรันการทดสอบทางด้านขวาแก้ไขไฟล์ทดสอบและไฟล์ต้นฉบับทางซ้าย: 
:e #(filename) เพื่อสลับระหว่างไฟล์ที่เปิดสองไฟล์
:p สำหรับไฟล์ก่อนหน้า
:n สำหรับไฟล์ถัดไป