ฉันได้ลองใช้MiniBufExplorerแล้ว แต่โดยปกติแล้วฉันมักจะมีหน้าต่างหลายบานแสดงหรือปิดไปพร้อมกัน สิ่งที่ฉันต้องการคือบางอย่างเช่นLustyJugglerพร้อมการค้นหาที่เพิ่มขึ้นวิธีที่ฉันสลับระหว่างบัฟเฟอร์ใน Emacs มีสคริปต์แบบนี้แน่ ๆ ?
ฉันได้ลองใช้MiniBufExplorerแล้ว แต่โดยปกติแล้วฉันมักจะมีหน้าต่างหลายบานแสดงหรือปิดไปพร้อมกัน สิ่งที่ฉันต้องการคือบางอย่างเช่นLustyJugglerพร้อมการค้นหาที่เพิ่มขึ้นวิธีที่ฉันสลับระหว่างบัฟเฟอร์ใน Emacs มีสคริปต์แบบนี้แน่ ๆ ?
คำตอบ:
ฉันใช้ปลั๊กอิน Command-T vimของ Wincent Colaiuta มาสองสามเดือนแล้ว Wincent เขียนส่วนของมันที่ต้องเร็วเป็น C และต้องบอกว่ามัน! และฉันคิดว่าตรรกะการจับคู่รูปแบบไฟล์นั้นดีกว่า Command-T ของ Textmate ตรวจสอบscreencast
ปลั๊กอิน Command-T สำหรับ VIM มีกลไกที่รวดเร็วและใช้งานง่ายสำหรับการเปิดไฟล์ด้วยการกดแป้นพิมพ์จำนวนน้อยที่สุด มีชื่อว่า "Command-T" เนื่องจากได้รับแรงบันดาลใจจากหน้าต่าง "ไปที่ไฟล์" ที่ผูกไว้กับ Command-T ใน TextMate
ไฟล์จะถูกเลือกโดยการพิมพ์อักขระที่ปรากฏในพา ธ และเรียงลำดับโดยอัลกอริทึมซึ่งรู้ว่าอักขระที่ปรากฏในบางตำแหน่ง (เช่นทันทีหลังจากตัวคั่นพา ธ ) ควรมีน้ำหนักมากกว่า
การเปลี่ยนบัฟเฟอร์ที่ง่ายขึ้นมีเคล็ดลับที่เป็นประโยชน์มากมาย ฉันได้ปรับเปลี่ยนสิ่งต่อไปนี้เป็น. vimrc ของฉันซึ่งทำหน้าที่เติมชื่อบัฟเฟอร์อัตโนมัติแมปคำสั่งการสลับบัฟเฟอร์ที่มีประโยชน์ที่สุดกับ <Leader> และคีย์แถวบ้านด้านซ้ายของฉันและแสดงหมายเลขบัฟเฟอร์ปัจจุบันในบรรทัดสถานะ :
"" Tab triggers buffer-name auto-completion
set wildchar=<Tab> wildmenu wildmode=full
let mapleader = ","
map <Leader>t :CommandT<Return>
map <Leader>a :bprev<Return>
map <Leader>s :bnext<Return>
map <Leader>d :bd<Return>
map <Leader>f :b
"" Show the buffer number in the status line.
set laststatus=2 statusline=%02n:%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
ฉันยังใช้MiniBufExplorerซึ่งมีรายการขนาดกะทัดรัดของบัฟเฟอร์ที่ระบุไว้ในแต่ละรายการในแนวนอนแยกด้านบน
ฉันเคยใช้การรวมกันของแท็บและอินสแตนซ์ gvim หลายรายการโดยเก็บกลุ่มของไฟล์ที่เกี่ยวข้องไว้เป็นแท็บในแต่ละอินสแตนซ์ ตราบเท่าที่ฉันไม่ได้ลงเอยด้วยแท็บมากเกินไปในอินสแตนซ์เดียวแถบแท็บจะแสดงชื่อไฟล์แต่ละไฟล์ที่คุณกำลังแก้ไขได้อย่างรวดเร็ว
จากนั้นฉันอ่านโพสต์ของ Jamis Buck เกี่ยวกับวิธีที่เขาเปลี่ยนจาก TextMate กลับไปเป็นกลุ่มและเรียนรู้เทคนิคที่ยอดเยี่ยม:
ตอนนี้ฉันมีอินสแตนซ์ gvim เพียงตัวเดียวขยายใหญ่สุดและแยกออกเป็นหลาย ๆ หน้าต่างเพื่อที่ฉันจะได้เห็นไฟล์หลาย ๆ ไฟล์พร้อมกัน ฉันผูก Ctrl-F กับ fuzzyfinder_textmate ดังนั้นตอนนี้ถ้าฉันพิมพ์ (พูด) Ctrl-F mod/usob
มันจะเปิดแอพ / รุ่น / user_observer.rb ฉันแทบไม่เคยรำคาญกับแท็บอีกต่อไป
อัปเดต 2010/08/07
ในขณะที่ fuzzyfinder_textmate ยังคงยอดเยี่ยมดังที่ Casey ชี้ให้เห็นในความคิดเห็น แต่ก็ไม่ได้รับการดูแลอีกต่อไป นอกจากนี้ (และ / หรือ fuzzyfinder.vim) ทำงานช้าและไม่เสถียรเล็กน้อยเมื่อทำงานกับโครงการขนาดใหญ่ (ไดเรกทอรีหรือไฟล์จำนวนมาก) ดังนั้นฉันจึงมองหาทางเลือกอื่น
โชคดีที่มีน่าจะเป็นทางเลือกที่ดีมากในรูปแบบของWincent Colaiuta 's คำสั่ง T ปลั๊กอิน สิ่งนี้มีลักษณะการทำงานที่คล้ายกันมาก (ถ้าไม่ดีกว่าเล็กน้อย) กับ fuzzyfinder_textmate แต่เร็วกว่าอย่างเห็นได้ชัด นอกจากนี้ยังมีคุณสมบัติที่ดีเช่นความสามารถในการเปิดไฟล์ที่พบในแบบแยกหรือแนวตั้ง ขอขอบคุณ (และคะแนนโหวต!) ถึง David Rivers ที่ชี้ให้เห็น
ฉันใช้พื้นฐาน - ' :ls
' + ' :bn
' / ' :bp
' + ' :b <part-of-name>
'
:map <c-n> :bn<cr>
และ:map <c-p> :bp<cr>
ตั้งแต่C-n
และC-p
เร็วในการพิมพ์และอนุญาตให้มีการหมุนเวียนระหว่างบัฟเฟอร์หากคุณกดซ้ำ ๆ (ฉันไม่เคยใช้มันเพื่อจุดประสงค์เดิม) มันเหมือนกับการหมุนเวียนระหว่างแท็บเบราว์เซอร์กับC-PgUp
และC-PgDn
หรือทางลัดใด ๆ ที่เบราว์เซอร์ของคุณมี
[b
สำหรับบัฟเฟอร์ก่อนหน้าและ]b
สำหรับบัฟเฟอร์ถัดไป รวมถึงสินค้าอื่น ๆ อีกมากมายที่ใช้แนวคิด]
สำหรับถัดไปและ[
ก่อนหน้า
ฉันชอบ "ctrl-w s" และ "ctlr-w v" เพื่อแบ่งหน้าต่าง จากนั้นฉันแมปปุ่มการเคลื่อนไหว (h, j, k, l) โดยกด ctrl ค้างไว้เพื่อเลื่อนไปมาระหว่างหน้าต่างแยก:
" Map ctrl-movement keys to window switching
map <C-k> <C-w><Up>
map <C-j> <C-w><Down>
map <C-l> <C-w><Right>
map <C-h> <C-w><Left>
การต้องขยับมือไปที่ปุ่มลูกศรนั้นน่ารำคาญ
ต่อไปฉันตั้งค่า ctlr-tab เพื่อสลับระหว่างบัฟเฟอร์ในหน้าต่างปัจจุบัน (เช่นสภาพแวดล้อมอื่น ๆ ):
" Switch to alternate file
map <C-Tab> :bnext<cr>
map <C-S-Tab> :bprevious<cr>
สิ่งเหล่านี้ทำงานได้ดีสำหรับฉันในช่วงหลายปีที่ผ่านมาแม้ว่ากลุ่มคนจะมีความลับมากกว่าที่คุณจะรู้ก็ตาม
:bp
และ <SK> ถึง:bn
ฉันใช้
CTRL- Jสำหรับบัฟเฟอร์ถัดไป
CTRL- Kสำหรับบัฟเฟอร์ก่อนหน้า
CTRL- Lสำหรับแท็บถัดไป
CTRL- Hสำหรับแท็บก่อนหน้า
นี่คือการ.vimrc
กำหนดค่า:
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
map <C-L> :tabn<CR>
map <C-H> :tabp<CR>
imap <A-1> <Esc>:tabn 1<CR>i
imap <A-2> <Esc>:tabn 2<CR>i
imap <A-3> <Esc>:tabn 3<CR>i
imap <A-4> <Esc>:tabn 4<CR>i
imap <A-5> <Esc>:tabn 5<CR>i
imap <A-6> <Esc>:tabn 6<CR>i
imap <A-7> <Esc>:tabn 7<CR>i
imap <A-8> <Esc>:tabn 8<CR>i
imap <A-9> <Esc>:tabn 9<CR>i
map <A-1> :tabn 1<CR>
map <A-2> :tabn 2<CR>
map <A-3> :tabn 3<CR>
map <A-4> :tabn 4<CR>
map <A-5> :tabn 5<CR>
map <A-6> :tabn 6<CR>
map <A-7> :tabn 7<CR>
map <A-8> :tabn 8<CR>
map <A-9> :tabn 9<CR>
:tab sball
หรือแทนที่จะใช้:tabn
คุณควรใช้:buffer
ฉันเพิ่งไปดูมินิมอลมากขึ้น
ในการวนบัฟเฟอร์ที่ฉันใช้]bและ[bจากที่ไม่ได้จับคู่: https://github.com/tpope/vim-unimpaired
:bจะกระโดดตรงไปยังบัฟเฟอร์เปิดเพียงแค่ใช้เสร็จแท็บเป็นกลุ่มที่มี ตัวอักษรสองสามตัวก็เพียงพอที่จะไปยังบัฟเฟอร์ที่เปิดอยู่ด้วยแท็บหนึ่งหรือสองแท็บ
ในทำนองเดียวกันกับเปิดบัฟเฟอร์ฉันใช้:eกับเส้นทางสัมพัทธ์และแท็บเสร็จสมบูรณ์
ฉันยังใช้:lsเป็นครั้งคราวเพื่อดูว่าฉันเปิดบัฟเฟอร์อะไรบ้าง (และเพื่อตรวจสอบสถานะที่แก้ไข)
ในการกำจัดบัฟเฟอร์ฉันใช้:bwเพื่อล้างบัฟเฟอร์ ฉันมักจะทำการแบ่งชั่วคราวและเปลี่ยนบัฟเฟอร์เพื่อรักษาเค้าโครงของฉันแม้ว่าจะ:bwปิดหน้าต่างที่ใช้งานอยู่ก็ตาม
ทุกสิ่งที่มินิบัฟที่ฉันลองจบลงทำให้ฉันรำคาญและฉันไม่ต้องการให้สิ่งที่จับคู่อัจฉริยะเปิดไฟล์แบบสุ่มให้ฉัน หากฉันต้องการค้นหาบางสิ่งจริงๆฉันใช้ NERDtree ( :e .)
IDK เมื่อเร็ว ๆ นี้ฉันก็ทิ้งแยงกริง (เพราะมันสกรูขึ้นxp) และเริ่มใช้รีจิสเตอร์และฉันเพิ่งตัดสินใจว่าf/ tการเคลื่อนไหวเป็นสิ่งที่ยิ่งใหญ่ที่สุดที่เคยมีมา ...
<leader>ll
กับ:ls
. นอกจากนี้ยังมีประโยชน์มากในการตรวจสอบให้แน่ใจว่าคุณมีset wildmenu
อยู่ใน.vimrc
ขณะนั้นคุณจะได้รับเมนูเล็ก ๆ ที่มาพร้อมกับทางเลือกทั้งหมดสำหรับ:b
Buffer Explorer ที่ยอดเยี่ยมสิ่งนี้ต้องเป็นหน่วยความจำของกล้ามเนื้อที่แข็งแกร่งซึ่งฉันพบว่าตัวเองต้องการใช้มันในแอปพลิเคชันอื่น ๆ ฉันพบว่ามันเร็วมากเมื่อทำการแก้ไขมากกว่าสองไฟล์
ฉันใช้เวลาค่อนข้างนานในการสร้าง. vimrc เพื่อทำงานกับโครงการ HTML :: Mason นี้ที่ฉันทำมาสี่ปีแล้วดังนั้นฉันจึงมีแท็บและหน้าต่างแยกที่แปลก ๆ เพื่อความเพลิดเพลินในการรับชมของคุณ:
map ;o :Sex <CR>
map <C-J> <C-W>j
map <C-K> <C-W>k
map <C-l> <C-W>l
map <C-h> <C-W>h
map ;] :tabnext<CR>
map ;[ :tabprev<CR>
map <C-t> :tabe +"browse ."<CR>
map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>
,be
, ,bs
, ,bv
ดังนั้นฉันแมป TSelectBuffer ,bb
ไป
ในการแสดงรายการและสลับระหว่างบัฟเฟอร์ที่ฉันใช้:
nnoremap <Leader>l :ls<CR>:b<space>
ในการสลับระหว่างบัฟเฟอร์:
map <Leader>n :bn<CR>
map <Leader>p :bp<CR>
ฉันได้แมป<S-J>
และ<S-K>
ถึง:bp
และ:bn
แม้ว่าฉันจะยอมรับว่าฉันไม่ได้ใช้มันเนื่องจากจำนวนไฟล์มากกว่า 10 ฉันได้ทำการแมป<C-J>
และ<C-K>
กับแท็บก่อนหน้าและแท็บถัดไปของ Gnome Terminal แล้วและฉันมักจะเรียกใช้กลุ่ม 4 อินสแตนซ์สำหรับแต่ละกลุ่ม 4 โครงการที่แตกต่างกันที่ฉันทำ ฉันยังคงหวังว่าบัฟเฟอร์ถัดไปและก่อนหน้านี้จะไปที่ประวัติของบัฟเฟอร์ที่ฉันกำลังดำเนินการอยู่ไม่ใช่รายการบัฟเฟอร์ลำดับที่เขาต้องการ
ฉันใช้ tselectbuffer มันเร็วมากและไม่เหมือนกับ bufexplorer ที่ไม่ใช้พื้นที่ในหน้าต่างของคุณ นอกจากนี้ยังมีการค้นหาที่เพิ่มขึ้นด้วยฉันลองใช้มินิยูเอ็กซ์โพลเรอร์และพบว่าการนำทางในบัฟเฟอร์ค่อนข้างยาก
ฉันใช้แบบง่าย: vsplit กับ ^ W + w / ^ W + r และ: tabnew ด้วยคีย์ผสม Ctrl + Alt + PgUp / PgDown
เมื่อมีบัฟเฟอร์หลายตัวเปิดอยู่ในเซสชัน Vim การติดตามบัฟเฟอร์และหมายเลขบัฟเฟอร์ตามลำดับอาจเป็นเรื่องยาก หากเป็นกรณีนี้การเปลี่ยนไปใช้ไฟล์อื่นสามารถทำได้ง่ายขึ้นโดยใช้แผนที่ธรรมดา:
: nnoremap (F5): บัฟเฟอร์ (CR): บัฟเฟอร์ (Space)