เป็นกลุ่มแก้ไข / สลับระหว่างหลายไฟล์ได้อย่างมีประสิทธิภาพในโครงสร้างไดเรกทอรีขนาดใหญ่


11

ฉันไม่ได้เป็นผู้ใช้พลังเสียงสูง แต่ฉันเพิ่งเริ่มเข้าใจการเคลื่อนไหวขั้นสูงและคำสั่งด้วยเสียงเรียกเข้า แต่มีข้อเสียเปรียบอย่างหนึ่งที่ฉันไม่สามารถหลีกเลี่ยงได้

ฉันโตมาพร้อมกับโปรแกรมกราฟิกสำหรับการเขียนโค้ด แต่ฉันเพิ่งเริ่มใช้ vim บน ssh & screen เพื่อทำงานกับโปรเจ็กต์ขนาดใหญ่ที่มีโฟลเดอร์จำนวนมาก

ฉันอยากรู้ว่าอาจารย์ที่ดีทำงานอย่างไรกับหลายไฟล์อย่างรวดเร็วและง่ายดาย พิจารณาแอพทางรถไฟเป็นตัวอย่าง สมมติว่าคุณต้องการแก้ไขคอนโทรลเลอร์เพื่อให้คุณทำงานได้

vim app/controllers/controller.rb

แต่แล้วคุณต้องการเปลี่ยนการแก้ไขมุมมองหรือการย้ายฐานข้อมูลอย่างรวดเร็วสัญชาตญาณแรกของฉันคือ:wqกลับไปที่ทุบตีเพื่อนำทางไปยังไดเรกทอรีนั้นและเริ่มเป็นกลุ่มอีกครั้งในบัฟเฟอร์ใหม่

เห็นได้ชัดว่านี่ผิดปกติ

ฉันได้เรียนรู้เกี่ยวกับหลายสิ่งเช่น:

  • เซิร์ฟเวอร์ลูกค้า (แต่ฉันไม่ต้องการใช้ X บน ssh และนี่เป็นวิธีเดียวเท่านั้น)
  • :eเพื่อเปิดไฟล์อื่นโดยการเบราส์ แต่ฉันไม่สามารถทำได้อย่างรวดเร็ว แท็บสมบูรณ์ทำให้ฉันเดินทางจริงๆ
  • เปิดไดเรกทอรีทั้งหมดและค้นหาผ่านบัฟเฟอร์
  • NERDTree สัญญา แต่ฉันอยากอยู่ห่างจากการแสดงกราฟิกใด ๆ เพื่อบังคับให้ฉันไปยังการนำทางบรรทัดคำสั่งหลัก

ฉันขอโทษที่ไร้เดียงสา แต่ฉันต้องการเรียนรู้วิธีการที่ถูกต้องเกี่ยวกับเรื่องนี้แม้ว่ามันจะเป็นเรื่องส่วนตัวก็ตาม

คุณมีวิธีการอะไรและคุณจะแนะนำอะไร


สำหรับ Ruby on Rails โดยเฉพาะปลั๊กอิน rails.vimของ Tim Pope มีคำสั่งที่ดี (เมื่อเสร็จสมบูรณ์ขยายเป็นลำดับชั้นใหม่) สำหรับเปิดไฟล์สำหรับรุ่น / มุมมอง / ตัวควบคุม / การย้าย / การทดสอบ / ... (ดูrails-type-navigationในเอกสารประกอบหรือ:help rails-type-navigationเมื่อคุณ มีมันติดตั้ง)
Chris Johnsen

คำตอบ:


7

เป็นไปได้ที่จะตั้งค่ากลุ่มเพื่อแก้ไขไฟล์หลาย ๆ ไฟล์โดยไม่ต้องออกเลย คุณใช้บัฟเฟอร์หลายอันและสลับระหว่างกัน เนื่องจากคุณใช้เสียงเรียกเข้าภายในหน้าจอคุณสามารถใส่สิ่งต่อไปนี้ใน ~ / .vimrc ของคุณเพื่อเปิดใช้งานสิ่งนั้น

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

การแม็พคีย์เหล่านั้นแม็พกับปุ่ม Ctrl-Left และ Right arrow เพื่อสลับระหว่างบัฟเฟอร์ ปุ่ม F4 เรียกใช้เมนูเดียวกับที่ GUI แสดง ตอนนี้แท็บการกดจะแสดงเมนูเล็ก ๆ สำหรับการเลือกเสร็จเมื่อแท็บกดของคุณ


เคล็ดลับที่ดีมากคำตอบสามข้อนี้ช่วยให้ฉันรู้สึกสะดวกสบายมากขึ้น การจัดการบัฟเฟอร์ที่ดีโดยไม่มีปลั๊กอินเป็นทักษะที่ยอดเยี่ยม รัก Wildmenu!
febs

5

ฮะ! ฉันเคยเป็นเหมือนคุณดังนั้นฉันรู้ว่าคุณมาจากไหน แม้ตอนนี้ฉันรู้ว่าฉันกำลังทำอะไรในระดับหนึ่ง (ฉันไม่ใช่เทพยดา แต่ฉันหวังว่าจะไปถึงที่นั่น) ฉันจะยังคงทำบางครั้ง: wq และกลับไปที่กระสุนของฉัน

ลองดูสินี่อาจช่วยคุณได้ (มันจะช่วยฉันด้วยเนื่องจากฉันไม่เคยรู้เรื่องนี้นั่นคือสิ่งที่ยอดเยี่ยมเกี่ยวกับไซต์ stackexchange - คุณเรียนรู้โดยการช่วยให้ผู้อื่นเรียนรู้!)

นี่คือบางสิ่งที่ฉันทำ

  1. :eคำสั่ง จากภายในเป็นกลุ่มเมื่อแก้ไขไฟล์คุณสามารถทำสิ่งที่ชอบ:e dir/subdir/otherfileและมันจะเปิดในบัฟเฟอร์ใหม่ซึ่งหมายความว่าคุณจะเปิดสองไฟล์พร้อมกัน

  2. Ctrl-Shift-6(ไม่ทราบค่า ASCII จริง) หากคุณมีบัฟเฟอร์สองอันที่เปิดอยู่คุณสามารถสลับไปมาระหว่างกันในแฟลชด้วยการสลับนี้

  3. bd- ลบบัฟเฟอร์ ให้คุณล้างบัฟเฟอร์

  4. นี่เป็นสิ่งที่มีประโยชน์จริงๆ - :sh. หากคุณต้องกลับไปที่เชลล์ไม่ว่าด้วยเหตุผลใดก็ตาม (เช่นเพื่อดูไดเรกทอรีและไฟล์ chmod) คุณสามารถเรียกใช้คำสั่งเชลล์ของ vim ได้ การออกจากเชลล์จะพาคุณย้อนกลับไปยังตำแหน่งที่คุณอยู่ในกลุ่ม

  5. ในหมวดหมู่เดียวกันกับข้างบน - การพิมพ์:!และคำสั่ง unix หลังจากนั้นจะรันคำสั่งนั้น lsลองนี้ด้วย (ฉันคิดว่ามันใช้งานได้กับ shell builtins ด้วย แต่ฉันไม่แน่ใจ)

นี่คือสิ่งที่ฉันใช้ตลอดเวลา นอกจากนี้ยังมี:nสำหรับไฟล์ถัดไปและ:pสำหรับไฟล์ก่อนหน้าเนื่องจากคุณสามารถเปิดบัฟเฟอร์มากกว่าสองอันในกลุ่มพร้อมกันได้ (โดยปกติฉันจะไม่ทำสิ่งนี้)


เยี่ยมมากขอบคุณสำหรับเคล็ดลับเหล่านั้น ฉันยังพบนี้: wincent.com/products/command-t ฉันถูกเสียบเพื่อเริ่มใช้งาน ข้อเสียอย่างเดียวคือคุณต้องการทับทิม (ไม่ค่อยเป็นมิตรกับสิ่งของ ssh) แต่มันเป็นสิ่งที่ฉันกำลังมองหา ว่ารวมกับ:sh, :eและการจัดการบัฟเฟอร์ที่เหมาะสมและสิ่งที่ได้รับเซ็กซี่
febs

ในเปลือกหอยมากที่สุด (เช่นเปลือกหอยกับงานควบคุม) Ctrl+Zควรระงับกระบวนการ ( fgจากเปลือกเพื่อแสดงอีกครั้ง) - :shซึ่งเป็นในทางเลือกที่จะ
maxschlepzig

อีกหนึ่งเคล็ดลับที่ยอดเยี่ยม! ยอดเยี่ยม ฉันจะต้องรวบรวมสิ่งเหล่านี้ในโพสต์บล็อกหรืออะไร
febs

2

นั่นคือสิ่งที่คุณจะเริ่มใช้ปลั๊กอิน สำหรับการจัดการไฟล์ (หรือบัฟเฟอร์) แผนผังNERDและMiniBufExplorerเป็นตัวเลือกทั่วไป ในกรณีของคุณฉันจะ google " vim ruby ​​ide " และทำตามหนึ่งในบทเรียนมากมายที่ฉันพบ ฉันใช้ Python และ 3 คำสั่งในบทช่วยสอนนี้กำหนดค่าทุกอย่างที่ฉันต้องการจาก Vim


2

ฉันขอแนะนำให้ใช้ split windows เพื่อดูหลายไฟล์พร้อมกัน เพิ่มทักษะบางอย่างด้วยการจัดการบัฟเฟอร์และหน้าต่างภายใน VIM และคุณจะเป็นนินจา VIM ในเวลาไม่นาน

สำหรับเอกสารจริงฉันจะแนะนำคุณไปยังเอกสาร VIM Windowsแต่ฉันจะพยายามเริ่มต้นที่นี่

เริ่ม VIM ด้วย 2 (หรือมากกว่า) แบ่งตามแนวนอนหน้าต่างด้านบนมี File1 หน้าต่างถัดลงมามี file2 เป็นต้น

vim -o <file1> <file2> (file3 file4 ...)

เริ่ม VIM ด้วย 2 (หรือมากกว่า) แยกแนวตั้งหน้าต่างด้านซ้ายสุดมี file1, หน้าต่างถัดไปที่มี file2 เป็นต้น

vim -O <file1> <file2> (file3 file4 ...)

เลื่อนเคอร์เซอร์ไปที่หน้าต่างอื่น:

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

แก้ไขแล้วหนึ่งไฟล์ แต่ต้องการแยกหน้าต่างและแก้ไขไฟล์อื่นด้วย:

:split <file2>
:vsplit <file2>

สำหรับการแยกในแนวนอนและแนวตั้งตามลำดับ

นอกจากนี้ยังมีคำสั่งให้ย้ายหน้าต่างไปมาปรับขนาด ฯลฯ


1

ใช้คำสั่ง vi: split เพื่อเปิดหน้าต่างแก้ไขครั้งที่สอง Split สามารถแยกได้ทั้งแนวนอนและแนวตั้งและมากกว่าสองครั้ง ฉันเปิดไฟล์ได้มากถึง 10 ไฟล์ในเซสชัน vi เดียวกัน

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