การนำทางหลายไฟล์


11

ถ้าผมเปิดเป็นกลุ่มที่มีหลายไฟล์ในบรรทัดคำสั่งเช่นvim debug.log*โหลดdebug.log, debug.log.1และdebug.log.2ผมสามารถนำทางระหว่างพวกเขากำหนดให้กับหลายหน้าต่าง ( :split/ :vsplit) หรือดังกล่าวหรือไม่

ทางลัดเดียวที่ฉันรู้จักสำหรับโหมดการทำงานนี้คือ:nซึ่งโหลดไฟล์ถัดไปในรายการ ฉันสามารถทำอะไรได้อีกในโหมดการทำงานหลายไฟล์นี้? (หรือหัวข้อความช่วยเหลือใดครอบคลุมเรื่องนั้น)


3
:previous(หรือ:prev) เป็นสิ่งที่ตรงกันข้าม:nและกลับไฟล์
รวย

คำตอบ:


13

หัวข้อความช่วยเหลือที่เกี่ยวข้องมากที่สุดจะ:lsยังเป็นที่รู้จัก หรือ:files :buffers

ในvim debug.log*ตัวอย่างของคุณถ้าคุณให้:lsคำสั่งคุณจะเห็น:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

…ระบุว่าอันแรกคือบัฟเฟอร์ที่แอคทีฟ

หากต้องการเปิดdebug.log.2ในหน้าต่างปัจจุบันให้ใช้คำสั่ง:b 3or :b debug.log.2เพื่อแสดงบัฟเฟอร์ 3

หากต้องการแยกหน้าต่างและเปิดบัฟเฟอร์ 2 ให้กำหนด:sb 2คำสั่ง :vert sb 2รุ่นแนวตั้งแยกที่เป็น

:bคำสั่งมีหลายรูปแบบ เรียกดูหัวข้อความช่วยเหลือที่อ้างถึงที่นี่เพื่อทำความเข้าใจกับพวกเขา


นอกจากนี้คุณสามารถเรียกใช้vim -o debug.log*เพื่อเปิดไฟล์ทั้งหมดในแต่ละไฟล์แยกกันหรือvim -O debug.log*เพื่อเปิดในแต่ละไฟล์ในแนวตั้ง


6

นอกเหนือจากฟังก์ชั่น vim แบบ raw ที่กล่าวถึงโดย 200_success แล้วระบบนิเวศของ Vim นั้นเต็มไปด้วยปลั๊กอินเพื่อมอบฟังก์ชันการทำงานพิเศษเช่น:

อย่างไรก็ตามก่อนที่คุณจะไปและเริ่มใช้ปลั๊กอินคุณควรทำความเข้าใจกับบัฟเฟอร์และหน้าต่างในกลุ่มอย่างเต็มที่


1
โปรดอ่านนโยบายของเราเกี่ยวกับคำตอบปลั๊กอินคำแนะนำและเพิ่มรายละเอียดเกี่ยวกับวิธีการที่ปลั๊กอินเหล่านี้มีประโยชน์ต่อผู้ใช้
200_success

6

นอกจากนี้คุณยังสามารถเปิดเป็นกลุ่มด้วยพารามิเตอร์ที่แตกต่างกัน

เปิดไฟล์ในแท็บ:

vim -p debug.log*

เปิดไฟล์ในแนวแยก:

vim -o debug.log*

มีปลั๊กอินที่ยอดเยี่ยมและมีประสิทธิภาพมากที่เรียกว่า CtrlSpace:

https://github.com/szw/vim-ctrlspace

มันมีประโยชน์มากถ้าคุณต้องการทำงานกับไฟล์จำนวนมาก เพียงคุณสามารถจินตนาการ ctrl-space เป็นรายการบัฟเฟอร์ของตัวเองสำหรับทุกแท็บ มันมีวิธีที่ง่ายมากในการนำทางระหว่างไฟล์ต่าง ๆ ตามที่ผู้เขียนระบุไว้:

Vim-CtrlSpace เป็นปลั๊กอิน Vim เพื่อควบคุมและจัดระเบียบพื้นที่ทำงานของคุณใน Vim รวมถึงการจัดการบัฟเฟอร์ไฟล์แท็บเซสชันและโครงการในที่สุด วิธีการของมันค่อนข้างแปลก แต่แน่นอนว่าคุณจะรู้สึกเหมือนอยู่บ้านโดยเฉพาะถ้าคุณใช้ windows, tabs, buffer ฯลฯ


ยินดีต้อนรับสู่ Vi / Vim! โปรดอ่านนโยบายของเราเกี่ยวกับคำตอบปลั๊กอินคำแนะนำและเพิ่มรายละเอียดเกี่ยวกับวิธีการที่ปลั๊กอินตรงกับคำถาม
200_success


4

หากคุณต้องการเปิดไฟล์ใดไฟล์หนึ่งโดยไม่จำเป็นต้องผ่าน:lsคุณสามารถใช้สิ่งต่อไปนี้:

  • :vs filename เปิดไฟล์ในแนวแยก
  • :sp filename ทำสิ่งเดียวกัน แต่แยกในแนวนอน
  • :tabe filename เปิดในแท็บใหม่

หากคุณไม่ระบุชื่อไฟล์คุณก็จะเปิดแยก / แท็บใหม่ของไฟล์ปัจจุบันซึ่งจะเป็นประโยชน์สำหรับไฟล์ขนาดยาว


2
:tคือคำสั่ง copy สำหรับคุณต้องไม่น้อยกว่า:tabedit :tabe
tommcdo

โอ้แดงคุณพูดถูก ขอบคุณฉันจะแก้ไข!
Tom

0

มีทางลัดที่มีประโยชน์เล็กน้อยสำหรับการนำทางหลายไฟล์:

  • CTRL-^(โดยที่Nเป็นหมายเลขบัฟเฟอร์) เพื่อข้ามไปยังไฟล์ที่แก้ไขก่อนหน้านี้
  • N CTRL-^(ซึ่งNเป็นหมายเลขบัฟเฟอร์) เพื่อข้ามไปยังบัฟเฟอร์เฉพาะ

    ตัวอย่างเช่น:

    • 1Control+^ - ไปที่บัฟเฟอร์ที่ 1
    • 2Control+^ - ไปที่บัฟเฟอร์ที่สอง
    • เป็นต้น

    :buffer Nนี้จะเทียบเท่ากับ

  • ใช้:Ex/ :Sex/ :Vexเพื่อสำรวจไดเรกทอรีปัจจุบัน

  • ใช้:tabsแทน ( vim -p) พร้อมกับทางลัดที่กำหนดเองใน.vimrcเช่น:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • การใช้:ba/ :vert baการแยกกระโดดลงในบัฟเฟอร์เลือกผ่านทางControl+w, w/ Wแล้วทำให้มันเป็นหน้าต่างปัจจุบัน ( :on)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.