คำถามติดแท็ก buffers

การแสดงไฟล์ที่โหลดลงในหน่วยความจำ การแก้ไขจะดำเนินการกับบัฟเฟอร์

6
มีวิธีง่าย ๆ ในการปิดหน้าต่างตัวบัฟเฟอร์ / ตัวอย่าง?
หนึ่งในปลั๊กอินที่ฉันติดตั้ง (อาจเป็น Supertab) ให้มุมมองที่ดีของเอกสารประกอบสำหรับรายการที่ไฮไลต์อยู่ในเมนูเสร็จ: บัฟเฟอร์รอยขีดข่วน (เห็นได้ชัด) ยังคงเปิดอยู่แม้หลังจากที่ฉันออกจากความสำเร็จ (โดยการกดEnterหรือSpace) จากนั้นเพื่อออกจากมันฉันทำ<c-w>↑:qแต่ฉันพบว่าต้องกดCtrlที่น่ารำคาญอย่างยิ่ง (เหตุผลหนึ่งที่ฉันหลีกเลี่ยงการแยก) วิธีปิดบัฟเฟอร์รอยขีดข่วนอย่างรวดเร็วคืออะไร มีวิธีแบบเนทีฟหรือฉันต้องเขียนแผนที่หรือไม่?

4
จะบันทึกหน้าต่างการแบ่งและการจัดวางบัฟเฟอร์ได้อย่างไร?
ฉันมีงานหลายอย่างที่ฉันทำในที่เก็บเดียว ฉันต้องการสร้าง "พื้นที่ทำงาน" สำหรับการทำงานกับพวกเขา หนึ่งใน "พื้นที่ทำงาน" หรือ "บัฟเฟอร์รูปแบบ" จะมีไฟล์ทั้งหมดที่ฉันต้องการที่จะทำงานในที่เปิดในรูปแบบที่ฉันต้องการ (ใช้^w+v, ^w+sการแบ่งหน้าต่าง) จากนั้นเมื่อฉันเริ่มทำงานอื่นฉันต้องการบันทึกเค้าโครงปัจจุบันของฉันย้ายไปยังอีกเค้าโครงหนึ่ง แต่ฉันต้องการกลับไปใช้เค้าโครงก่อนหน้าได้ อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?

2
ปิดและยกเลิกการโหลดบัฟเฟอร์โดยไม่ต้องออกเป็นกลุ่ม
:clo!บ่อยครั้งที่ผมจะโหลดข้อมูลบางอย่างเป็นบัฟเฟอร์ชั่วคราวและจากนั้นปิดมันด้วย แต่สิ่งนี้ซ่อนบัฟเฟอร์มากกว่าที่จะทำการขนถ่ายทั้งหมดแม้ว่าฉันจะnohiddenตั้งค่าไว้แล้วก็ตาม ฉันพบว่ามันน่าเบื่อเพราะฉันได้รับการยืนยันเป็นพิเศษเมื่อฉันออกจากกลุ่มเกี่ยวกับเนื้อหาที่ฉันทิ้งไปแล้ว ฉันสามารถใช้:q!แทนได้ แต่มันก็เป็นนิสัยที่ไม่ดีที่จะเข้าไปเพราะมันจะออกจากกลุ่มทั้งหมดถ้ามีบัฟเฟอร์เหลือเพียงอันเดียวซึ่งน่ารำคาญเช่นกัน แย่กว่านั้นถ้าฉันพิมพ์ผิด:qa!ฉันอาจสูญเสียงานมาก มีพื้นกลางหรือไม่ ฉันต้องการคำสั่งที่ฆ่าบัฟเฟอร์ปัจจุบัน แต่ไม่ได้ออกจากกลุ่ม ฉันไม่ได้คัดค้านการเขียนใน Vimscript แต่ฉันควรหลีกเลี่ยงหากคำสั่งนั้นมีอยู่แล้ว

7
วิธีที่เร็วที่สุดในการเปลี่ยนเป็นบัฟเฟอร์ในกลุ่ม?
วิธีหนึ่งที่จะเลือกบัฟเฟอร์ในกลุ่มอาจจะมีการเรียกดูบัฟเฟอร์รายการโดยใช้คำสั่งมาตรฐาน:lsหรือบางปลั๊กอิน / รหัส vimscript ภายนอกเพื่อเรียกดูรายการในหน้าต่าง สมมติว่าฉันต้องการข้ามไปที่บัฟเฟอร์โดยตรงเร็วที่สุด เพื่อสำรวจรายการบัฟเฟอร์ในโหมดต่อเนื่องตอนนี้ฉันใช้<C-J> <C-K>ทางลัดโดยตั้งค่าไว้ใน. vimrc ของฉัน: " move among buffers with CTRL map <C-J> :bnext<CR> map <C-K> :bprev<CR> อีกวิธีหนึ่ง (การเข้าถึงโดยตรง) อาจจะเปลี่ยนจากจำนวน : <C-^>รู้จำนวนบัฟเฟอร์ก็เป็นไปได้ที่จะเปลี่ยนโดยตรงโดยการป้อนหมายเลขบัฟเฟอร์ตามมาด้วย ดังนั้นถ้าผมต้องการที่จะสลับไป buffer จำนวน 5 5<C-^>ผมจะกด แต่สิ่งนี้ดูเหมือนจะไม่ทำงานสำหรับฉัน (ฉันใช้ vim 7.4 บนกล่องอูบุนตูจากผู้เยี่ยมชม Windows พร้อมแป้นพิมพ์ภาษาอิตาลี ) ฉันสงสัยว่าเป็นเพราะ^ตัวละครอยู่ในคีย์^ìตัวพิมพ์ใหญ่ในแป้นพิมพ์ภาษาอิตาลีดังนั้นในความเป็นจริง^ฉันต้องกดSHIFT-^ ความคิดใด ๆ
43 vimrc  buffers 

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

1
คุณจะเปิดบัฟเฟอร์ใหม่ในหน้าต่างปัจจุบันได้อย่างไร
ฉันเปิดแท็บสองสามแท็บด้วยการตั้งค่าหน้าต่างที่แตกต่างกัน ฉันต้องการเปิดบัฟเฟอร์ว่างใหม่ในหน้าต่างปัจจุบันโดยไม่ต้องแยก / windows หรือแท็บเพิ่มเติมอีก มีวิธีการทำเช่นนี้? ฉันรู้ว่าฉันสามารถทำอะไรบางอย่างเช่น:nตอนC-w jนั้น:qแต่ดูเหมือนว่ายุ่งเล็กน้อย หรือคล้ายกับแท็บ: :tabe gT :q ฉันสับสนเล็กน้อยเกี่ยวกับความสัมพันธ์ระหว่างหน้าต่างและบัฟเฟอร์โดยทั่วไป - คุณสามารถเปิดบัฟเฟอร์ได้มากมายโดยไม่สามารถมองเห็นได้ซึ่งคุณสามารถทำความสะอาดได้โดยใช้bdแต่ถ้ามองไม่เห็นพวกเขาจะต้องบันทึกเพราะคุณไม่สามารถซ่อนได้ พวกเขา (โดยใช้: q) โดยไม่บันทึกหรือยกเลิกการเปลี่ยนแปลง ... ที่ดูแปลกไปหน่อย

2
ฉันสามารถเปิด vim split ใหม่จาก buffer ที่มีอยู่ได้หรือไม่?
ฉันรู้ว่าเป็นไปได้หรือไม่ที่จะเปิดไฟล์ใหม่ด้วยการแยกด้วย:splitหรือ:vsplitแต่เป็นไปได้ไหมที่จะเปิดการแยกใหม่ด้วยบัฟเฟอร์ที่มีอยู่ซึ่งอาจใช้ประโยชน์จากการเติมข้อความอัตโนมัติ?
23 split  buffers 

2
ฉันจะโหลดบัฟเฟอร์ทั้งหมดพร้อมกันได้อย่างไร
เมื่อทำงานในสาขาฟีเจอร์ในgitฉันมักจะต้องซ่อนการเปลี่ยนแปลงของฉันเพื่อส่งการแก้ไขข้อบกพร่องไปยังสาขาหลัก เมื่อฉันทำงานกับการเปลี่ยนแปลงฉันgit stash popซึ่งปรับปรุงการประทับเวลาในไฟล์ แม้ว่าไฟล์จะเหมือนกัน แต่ครั้งต่อไปที่ฉันพยายามบันทึกฉันจะได้รับ: คำเตือน: ไฟล์มีการเปลี่ยนแปลงตั้งแต่อ่าน !!! คุณต้องการเขียนถึงมันจริง ๆ (y / n)? git stash popฉันไม่ต้องการที่จะโหลดไฟล์โดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลงบนดิสก์เท่านั้นเมื่อฉัน ตอนนี้ฉันโหลดแต่ละบัฟเฟอร์อีกครั้งด้วยตนเอง ( :e) มีวิธีใดที่ฉันสามารถทำได้ในคำสั่งเดียว?
20 buffers  load 

3
ดัมพ์เอาต์พุตของคำสั่ง vim ภายในลงในบัฟเฟอร์
ฉันจะดัมพ์คำสั่ง vim ภายใน (ไม่ใช่คำสั่งเชลล์) ลงในบัฟเฟอร์ใหม่ได้อย่างไร? ตัวอย่างเช่นฉันต้องการถ่ายโอนรายชื่อของปลั๊กอินทั้งหมด:enewจาก:scriptnamesเพื่อให้ฉันสามารถค้นหาได้

2
ลำดับของ WinEnter, BufEnter, BufRead, Syntax, FileType คืออะไร
ฉันได้รับautocmd.txtความช่วยเหลือแล้ว แต่ข้อมูลเกี่ยวกับเรื่องนี้กระจัดกระจายและไม่ได้นำเสนอเสมอ (เช่นกับBufRead) ใครบางคนที่เข้าใจสิ่งนี้ดีสามารถเรียงลำดับเหตุการณ์เหล่านี้ได้ - ด้วยเงื่อนไขที่ระบุไว้ใน parantheses เช่น WinEnter BufEnter (if this window is for a different buffer than the current) และอื่น ๆ สำหรับการอ้างอิงได้ง่าย? หมายเหตุ(คัดลอกมาจากความคิดเห็นของฉันด้านล่าง) : ฉันไม่ได้พูดถึงคำอธิบายของแต่ละคนซึ่งก็โอเค แต่เกี่ยวกับวิธีที่พวกเขาโต้ตอบกันและในสิ่งที่พวกเขาเกิดขึ้น สำหรับตัวอย่างเช่นWinEnterพูดว่า "Vim เรียกใช้ Autocommands ของ BufEnter หลังจาก Autocommands ของ WinEnter" TabEnterกล่าวว่า "หลังจากเรียก WinEnter และก่อนที่จะเรียกใช้เหตุการณ์ BufEnter" มันทั้งหมดกระจัดกระจายไปในหลาย ๆ ที่ และบางครั้งก็ไม่ได้กล่าวถึงเลย (เช่นBufReadไม่ได้พูดถึงว่ามันทำงานหลังจาก BufEnter หรือก่อนหน้านี้ …

4
มีวิธีการที่เชื่อถือได้ย้อนกลับไปมาในประวัติไฟล์
ฉันต้องการไปยังไฟล์ที่ฉันเพิ่งแก้ไขครั้งล่าสุดและถัดไปเช่นปลั๊กอิน MRU ทำ :bnextและ:bprevบางครั้งก็ใช้งานได้ แต่ส่วนใหญ่แล้วไม่ใช่แค่ฉันจบลงในไฟล์ที่คลุมเครือบางอย่างฉันจำไม่ได้ว่าการแก้ไขและถูกบังคับให้ถอยกลับไปที่ปลั๊กอิน MRU มีวิธีแก้ไขหรือไม่ Ctrl-^สลับระหว่างสองไฟล์สุดท้าย เป็นวิธีที่ดีที่สุดในการนำทางมากขึ้น? ฉันเข้าใจว่ามันอาจเป็นเรื่องยุ่งยาก แต่ฉันเห็นด้วยกับสิ่งใดก็ตามที่สามารถปรับปรุง:bn :bpพฤติกรรมปัจจุบัน บัฟเฟอร์ที่ฉันมักจะเห็นอยู่นอกสถานที่ อาจมีปลั๊กอินที่สามารถติดตามไฟล์ล่าสุดและมี hooks เพื่อให้ฉันสามารถสร้างการแมป การตอบความคิดเห็นล้างความคิดของฉันเล็กน้อย ฉันเชื่อว่าสิ่งที่ฉันต้องการคือสามารถย้ายไฟล์ตามลำดับการบันทึกล่าสุด ด้วยวิธีนี้ถ้าฉันย้อนกลับไปในประวัติศาสตร์คำสั่งซื้อจะไม่เปลี่ยนแปลงจนกว่าฉันจะบันทึกไฟล์ซึ่งจะกลายเป็นครั้งสุดท้ายและทำหนึ่งขั้นตอน "ย้อนกลับ" ไปยังไฟล์ที่บันทึกไว้ก่อนหน้านั้นนั่นคือลำดับที่ฉันเริ่มต้น บางอย่างเช่นCtrl-O Ctrl-Iคู่ที่เปลี่ยนไฟล์ได้ทันทีโดยไม่ต้องกระโดดไปรอบ ๆ บัฟเฟอร์ปัจจุบัน เรียงลำดับของไลค์uและUใน netrw: u Change to recently-visited directory |netrw-u| U Change to subsequently-visited directory |netrw-U|
15 buffers 

6
การใช้: สำรวจโดยไม่ปิดบัฟเฟอร์ปัจจุบัน
หากฉันเปิดไฟล์ explorer ด้วย:Exploreและเลือกไฟล์มันจะแทนที่บัฟเฟอร์ที่ฉันเปิดไว้ก่อนหน้านี้และฉันต้องเปิดอีกครั้ง ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร
14 buffers  netrw 

6
วิธีผูกชุดบัฟเฟอร์เข้ากับแท็บ?
เมื่อฉันต้องการทำงานในโครงการที่แตกต่างกันในเวลาเดียวกันฉันมีเวิร์กโฟลว์ folowing: ฉันสร้างหนึ่งแท็บสำหรับแต่ละโครงการ ในแต่ละแท็บฉันเปิดไฟล์ที่ฉันต้องการแก้ไขซึ่งทำให้หลายบัฟเฟอร์ Optionnaly ถ้าฉันต้องการเห็นสองไฟล์ (หรือมากกว่า) ในเวลาเดียวกันฉันสร้างหน้าต่างแยกดังนั้นฉันมีแท็บที่มีหน้าต่างที่แตกต่างกันซึ่งแสดงบัฟเฟอร์หนึ่ง เพื่อนำทางระหว่างบัฟเฟอร์ของฉันฉันไม่ได้ใช้จริง ๆ:lsและ:b [name or number of buffer]ฉันได้สร้างการจับคู่ที่สะดวกทำให้ฉันสามารถสลับระหว่างบัฟเฟอร์ด้วย:bnextและ:bprevious วิธีการทำงานนี้ค่อนข้างดี แต่มีบางอย่างที่รบกวนฉัน: บัฟเฟอร์ถูกแชร์ระหว่างแท็บ ถ้าผมเปิดfile1และfile2ในtab1และfile3ในtab2ถ้าในtab1ผมใช้เวลาหลาย:bnextฉันจะเห็นfile3ในแท็บนี้ซึ่งผมไม่ต้องการที่จะ ขั้นตอนการทำงานที่ผมต้องการที่จะได้รับคือ folowing : เริ่มเป็นกลุ่ม (ฉันมีแท็บแรกที่มีบัฟเฟอร์อยู่): $ vim foo เพิ่มบัฟเฟอร์ลงในแท็บนี้: :e bar เปิดแท็บใหม่และเปลี่ยนเป็น: :tabnew เปิดบัฟเฟอร์ใหม่ในแท็บนี้: :e baz ถ้าฉันอยู่ในบัฟเฟอร์นี้และทำ:bnextหรือ:bpreviousฉันจะอยู่ในbazบัฟเฟอร์ (เพราะเป็นเพียงคนเดียวในแท็บนี้) ถ้าฉันไปที่แท็บก่อนหน้า:tabpreviousและดำเนินการหลายครั้ง:bnextฉันจะสลับระหว่างfooและbarบัฟเฟอร์เท่านั้น แต่จะไม่เห็นbaz ดังนั้นคำถามของฉันมาที่นี่:มันเป็นไปได้ที่จะผูกชุดของบัฟเฟอร์ไปยังแท็บและทำให้เป็นกลุ่มที่ไม่อนุญาตให้เข้าถึงบัฟเฟอร์บางส่วนจากแท็บอื่นกว่าที่พวกเขาตั้งใจจะอยู่ใน? หมายเหตุ:ฉันทราบว่าการใช้:b [myBuffer]จะเป็นวิธีหนึ่งในการเก็บบัฟเฟอร์ไว้ในแท็บ แต่เมื่อฉันมีไฟล์ 3 หรือ 4 ไฟล์ที่จะแก้ไขฉันรู้สึกว่าฉันใช้การแมปของฉันเร็วกว่าการพิมพ์ชื่อบัฟเฟอร์(แม้ว่าฉันจะทำได้ พิมพ์ตัวอักษรเพียงบางส่วนให้ตรงกับชื่อบัฟเฟอร์)

3
วิธีที่มีประสิทธิภาพมากขึ้นในการใช้บัฟเฟอร์คืออะไร?
เมื่อเร็ว ๆ นี้ฉันได้ลดจำนวนปลั๊กอินที่ใช้อยู่อย่างมากดังนั้นฉันจึงค้นหาคำตอบโดยใช้ฟีเจอร์ Vim ในตัวเท่านั้น ฉันสังเกตเห็นข้อบกพร่องในเวิร์กโฟลว์ของฉันเมื่อฉันแก้ไขบัฟเฟอร์มากมาย: ฉันอยู่บนบัฟเฟอร์และฉันต้องการสลับไปยังอีกอันหนึ่งซึ่งฉันจำชื่อไม่ได้และไม่ใช่บัฟเฟอร์สำรอง . ดังนั้นการใช้งานจึง:b#เป็นไปไม่ได้และการใช้งานเสร็จสิ้นด้วยคำสั่ง:bจะไม่สะดวกเลย โดยให้ฉันทำสิ่งต่อไปนี้: ใช้งานครั้งแรก:buffersเพื่อรับรายการบัฟเฟอร์ที่เปิดอยู่ จำจำนวนบัฟเฟอร์ที่ฉันต้องการใช้ กดEnterเพื่อปิดรายการบัฟเฟอร์ ใช้:bXกับXจำนวนบัฟเฟอร์ที่จะใช้ เวิร์กโฟลว์นี้ดูเหมือนจะหนักสำหรับฉันดังนั้นฉันจึงเพิ่มบรรทัดต่อไปนี้ใน .vimrc: " Improve the navigation in the buffers nnoremap <Leader><S-b> :B<CR> command! B call Buffers() function! Buffers() execute "buffers" let buffer=input("Enter a buffer:") execute "b" . buffer endfunction สิ่งนี้ให้ฉันคำสั่ง:B(และการแมป) ซึ่งเรียกฟังก์ชั่น:buffersรออินพุตและในที่สุดก็เรียก:bตามด้วยอินพุต มันใช้งานได้ดี แต่ฉันประหลาดใจที่ฉันต้องพัฒนาฟังก์ชั่นดังกล่าว: โดยปกติ Vim จะมีเวิร์กโฟลว์เริ่มต้นที่มีประสิทธิภาพพอสมควรดังนั้นฉันจึงสงสัยว่าถ้ามีวิธีที่ดีกว่าในการเปลี่ยนไปใช้บัฟเฟอร์ที่ฉันไม่รู้อะไรยกเว้น …
13 buffers 

2
ฉันจะเปิดบัฟเฟอร์ใหม่โดยไม่ต้องเปิดในการแยกได้อย่างไร
ฉันรู้ว่าฉันสามารถใช้:newเพื่อเปิดบัฟเฟอร์ใหม่ในหน้าต่างแยก (กำหนดโดยset splitbelowและset splitright) แต่ฉันจะเปิดบัฟเฟอร์ใหม่ที่ว่างเปล่าโดยไม่เปิดแยกได้อย่างไร
13 buffers  split 

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