ที่อยู่ใกล้เทียบเท่า ( "ที่อยู่ใกล้" ไม่ "แน่นอน") เพื่อ ST2 ของCtrl+ Pเป็นปลั๊กอินที่เรียกว่าได้รับการพร้อม ... CtrlP มีปลั๊กอินอื่น ๆ ที่คล้ายกันเช่นCommand-TหรือFuzzyFinder FuzzyFinder
ฉันใช้ CtrlP และฉันชอบมัน แต่ฉันสนับสนุนด้วยใจจริงที่จะเลือกใช้ "ปลั๊กอินฟรี" ไม่ใช่วิธีที่ง่ายที่สุด แต่จะให้ผลตอบแทนในระยะยาว
กำลังเปิดไฟล์
วิธีพื้นฐานที่สุดในการเปิดไฟล์คือ:e /path/to/filename
. โชคดีที่คุณได้รับการเติมแท็บและสัญลักษณ์แทน: แบบคลาสสิก*
และแบบพิเศษ**
ซึ่งย่อมาจาก "ไดเรกทอรีย่อยใด ๆ "
เมื่อรวมทั้งหมดเข้าด้วยกันคุณสามารถทำได้:
:e **/*foo<Tab>
เพื่อเลือกจากไฟล์ทั้งหมดที่มีfoo
ในชื่อภายใต้ไดเร็กทอรีการทำงานหรือ:
:e **/*foo/*bar<Tab>
เพื่อเลือกจากไฟล์ทั้งหมดที่มีbar
ในชื่อของพวกเขาภายใต้ไดเร็กทอรีย่อยใด ๆ ที่มีfoo
ในชื่อของมันที่ใดก็ได้ภายใต้ไดเร็กทอรีการทำงาน
แน่นอนว่าผลงาน:tabe[dit]
, :sp[lit]
และ:vs[plit]
มากเกินไป
คำสั่งเหล่านี้ จำกัด ไว้ที่ไฟล์เดียว ใช้:next
เพื่อเปิดไฟล์หลายไฟล์:
:next **/*.js
:help arglist
และใช้เวลาดูที่
กระโดดไปมาระหว่างบัฟเฟอร์
:b[uffer]
เป็นคำสั่งการสลับบัฟเฟอร์พื้นฐาน:
:b4 " switch to buffer number 4
:bn " switch to next buffer in the buffer list
:bp " switch to previous buffer in the buffer list
:bf " switch to first buffer in the buffer list
:bl " switch to last buffer in the buffer list
:b foo<Tab> " switch by buffer name with tab-completion
:b# " switch to the alternate file
สังเกตว่าคำสั่งเหล่านี้หลายคำสั่งและญาติของพวกเขายอมรับการนับ
:ls
คำสั่งแสดงรายการของบัฟเฟอร์โหลด มันค่อนข้าง "พิเศษ" แม้ว่าบัฟเฟอร์จะถูกกำหนดหมายเลขเมื่อสร้างขึ้นเพื่อให้คุณสามารถมีรายการที่ดูเหมือน1 2 5
ว่าคุณลบบัฟเฟอร์ นี่เป็นเรื่องที่น่าอึดอัดใจใช่และนั่นทำให้การเปลี่ยนไปใช้บัฟเฟอร์ตามจำนวนนั้นค่อนข้างลำบากเกินไป ต้องการเปลี่ยนชื่อโดยบางส่วนหรือขี่จักรยาน:b foo<Tab>
:bn :bp
อย่างไรก็ตามนี่คือการทำแผนที่ที่ยอดเยี่ยมที่แสดงรายการบัฟเฟอร์ที่โหลดทั้งหมดและเติมข้อมูลพร้อมท์ให้คุณรอให้คุณพิมพ์จำนวนบัฟเฟอร์แล้วกด<enter>
:
nnoremap gb :ls<CR>:b<Space>
ด้วยการแมปนี้การเปลี่ยนไปใช้บัฟเฟอร์อื่นทำได้ง่ายๆดังนี้:
gb
(quickly scanning the list)
3<CR>
หรือ:
gb
(quickly scanning the list)
foo<tab><CR>
แนวคิดนี้มาจากภาพที่นำมาจากคอลเลกชัน Vim infographics ของ Bairui :
Vim ยังมี<C-^>
(หรือ<C-6>
บนแป้นพิมพ์บางตัว) ซึ่งเทียบเท่ากับโหมดปกติ:b#
- เพื่อข้ามไปมาระหว่างบัฟเฟอร์ปัจจุบันและก่อนหน้า ใช้มันถ้าคุณมักจะสลับกันระหว่างสองบัฟเฟอร์
:help buffers
อ่านทั้งหมดเกี่ยวกับบัฟเฟอร์ใน
ไปที่การประกาศ
ภายในไฟล์คุณสามารถใช้gd
หรือgD
.
ภายในโปรเจ็กต์คุณลักษณะ "แท็ก" ของกลุ่มเป็นเพื่อนของคุณ แต่คุณจะต้องมีตัวสร้างโค้ดภายนอกเช่น ctags หรือ cscope คำสั่งพื้นฐานที่สุดคือ:tag foo
และ<C-]>
ด้วยเคอร์เซอร์บนชื่อวิธีการ เครื่องมือทั้งสองมีการบูรณาการอย่างดีในกลุ่ม: ดู:help tags
, และ:help ctags
:help cscope
สำหรับสิ่งที่คุ้มค่าฉันใช้การนำทางแท็กอย่างกว้างขวางเพื่อย้ายภายในโปรเจ็กต์ (โดยใช้ CtrlP :CtrlPTag
และ:CtrlPBufTag
คำสั่งส่วนใหญ่ แต่เป็นแบบ buit-in ด้วย) และวิธีการสลับบัฟเฟอร์ "ทั่วไป" ที่ฉันชอบคือตามชื่อ
การปรับใช้การกำหนดค่าของคุณ
จำนวนมากของผู้ใช้ที่เป็นกลุ่มนำการตั้งค่าของพวกเขาภายใต้การควบคุมรุ่นซึ่งจะทำให้มันมากง่ายรวดเร็วและการติดตั้งการตั้งค่าของคุณเองบนเครื่องใหม่ ลองคิดดูสิ
แก้ไข
ไม่กี่เดือนที่ผ่านมาฉันต้องทำงานกับเครื่องระยะไกลกับ Vim ที่ล้าสมัย ฉันสามารถติดตั้ง Vim ที่เหมาะสมและโคลน config อันเป็นที่รักของตัวเองได้ แต่ฉันตัดสินใจที่จะเดินทางแสงคราวนี้เพื่อที่จะ "ลับเลื่อยให้คมขึ้น" ฉันสร้างมินิมัลลิสต์อย่างรวดเร็ว.vimrc
และกลับมาเยี่ยมชมคุณสมบัติพื้นเมืองที่ถูกลืมไปสองสามรายการ หลังจากกิ๊กนั้นฉันตัดสินใจว่า CtrlP ไม่จำเป็นและกำจัดมันออกไป: คุณสมบัติดั้งเดิมและการแมปที่กำหนดเองนั้นไม่เซ็กซี่เท่า แต่พวกเขาทำงานได้สำเร็จโดยไม่ต้องพึ่งพามากนัก
การเล่นกลกับไฟล์
set path=.,**
nnoremap <leader>f :find *
nnoremap <leader>s :sfind *
nnoremap <leader>v :vert sfind *
nnoremap <leader>t :tabfind *
:find
เป็นคำสั่งที่ยอดเยี่ยมอย่างแท้จริงทันทีที่คุณset path
ถูกต้อง ด้วยการตั้งค่าของฉัน,ffoo<Tab>
จะพบไฟล์ทั้งหมดที่foo
อยู่ในไดเร็กทอรีปัจจุบันแบบวนซ้ำ รวดเร็วใช้งานง่ายและน้ำหนักเบา แน่นอนว่าฉันได้รับประโยชน์จากการเติมเต็มและสัญลักษณ์แทนเช่นเดียวกับ:edit
และเพื่อน ๆ
เพื่อให้กระบวนการรวดเร็วยิ่งขึ้นการแมปต่อไปนี้ทำให้ฉันสามารถข้ามส่วนทั้งหมดของโปรเจ็กต์และค้นหาไฟล์ซ้ำได้ภายใต้ไดเร็กทอรีของไฟล์ปัจจุบัน:
nnoremap <leader>F :find <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>S :sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>V :vert sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>T :tabfind <C-R>=expand('%:h').'/*'<CR>
คำเตือน! path
ตัวเลือกเป็นอย่างมากที่มีประสิทธิภาพ ค่าด้านบน.,**
- - ใช้ได้สำหรับฉันแต่ภาษาที่ฉันใช้ไม่มีไลบรารีมาตรฐาน ที่เหมาะสมคุ้มค่าขึ้นอยู่กับคุณความต้องการ
เล่นกลกับบัฟเฟอร์
set wildcharm=<C-z>
nnoremap <leader>b :buffer <C-z><S-Tab>
nnoremap <leader>B :sbuffer <C-z><S-Tab>
การแมปด้านบนแสดงรายการบัฟเฟอร์ที่มีอยู่ใน "เมนูป่า" พร้อมข้อความแจ้งว่างทำให้ฉันสามารถนำทางเมนูด้วย<Tab>
หรือพิมพ์ตัวอักษรสองสามตัวและ<Tab>
อีกครั้งเพื่อ จำกัด รายการให้แคบลง เช่นเดียวกับการแมปไฟล์ด้านบนกระบวนการนี้รวดเร็วและแทบไม่มีแรงเสียดทาน
nnoremap <PageUp> :bprevious<CR>
nnoremap <PageDown> :bnext<CR>
การทำแผนที่เหล่านั้นพูดเพื่อตัวเอง
เล่นกลกับแท็ก
nnoremap <leader>j :tjump /
การแมปนี้ใช้การค้นหา regex แทนการค้นหาคำทั้งหมดดังนั้นฉันจึงสามารถ,jba<Tab>
ค้นหาแท็กfoobarbaz()
ได้
ใช่การจับคู่ที่คลุมเครือเป็นสิ่งเสพติด แต่คุณสามารถมีประสิทธิผลได้เช่นกันหากไม่มีมัน และเพียงเศษเสี้ยวของต้นทุน
แก้ไขเพิ่มเติม
เคล็ดลับ / เทคนิคเพิ่มเติมสองสามข้อ ...
ตัวเลือก Wildmenu
"wildmenu" ที่เปิดใช้งานset wildmenu
ทำให้การนำทางไฟล์ / บัฟเฟอร์ง่ายขึ้น พฤติกรรมของมันถูกควบคุมโดยตัวเลือกมากมายที่ควรค่าแก่การตรวจสอบ:
wildmode
บอก Vim ว่าคุณต้องการให้ "wildmenu" ทำงานอย่างไร:
set wildmode=list:full
wildignore
กรองส่วนที่ไม่สมบูรณ์ทั้งหมด:
set wildignore=*.swp,*.bak
set wildignore+=*.pyc,*.class,*.sln,*.Master,*.csproj,*.csproj.user,*.cache,*.dll,*.pdb,*.min.*
set wildignore+=*/.git/**/*,*/.hg/**/*,*/.svn/**/*
set wildignore+=tags
set wildignore+=*.tar.*
wildignorecase
ช่วยให้คุณสามารถค้นหาfoo
และค้นหาFoo
:
set wildignorecase
เครื่องหมายไฟล์
augroup VIMRC
autocmd!
autocmd BufLeave *.css normal! mC
autocmd BufLeave *.html normal! mH
autocmd BufLeave *.js normal! mJ
autocmd BufLeave *.php normal! mP
augroup END
~/.vimrc
ฉันเพิ่งพบอัญมณีนี้ในของคนอื่น จะสร้างเครื่องหมายไฟล์ที่ตำแหน่งที่แน่นอนของเคอร์เซอร์เมื่อใดก็ตามที่คุณปล่อยบัฟเฟอร์ดังนั้นไม่ว่าคุณจะอยู่ที่ใดก็ตามจะ'J
ข้ามไปยังบัฟเฟอร์ JavaScript ล่าสุดที่คุณแก้ไข น่ากลัว