ฉันรู้ว่าฉันสามารถเปิดหลายไฟล์ด้วย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
ที่เป็นจำนวนใดมากกว่าหรือเท่ากับn
0
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
สำหรับไฟล์ถัดไป