ST2 Ctrl+ 'ya en yakın eşdeğer ("en yakın", "tam" değil) P, hazır ol… CtrlP adlı bir eklentidir . Command-T veya FuzzyFinder gibi başka benzer eklentiler de var .
CtrlP kullanıyorum ve seviyorum ama "eklentisiz" olma kararınızı tüm kalbimle destekliyorum. Gitmenin en kolay yolu değil ama uzun vadede karşılığını alacaktır.
Dosyaları açma
Dosya açmanın en basit yolu :e /path/to/filename. Neyse ki, sekme tamamlama ve joker karakterler elde edersiniz: klasik *ve özel **olan, "herhangi bir alt dizin" anlamına gelen.
Tüm bunları birleştirerek şunları yapabilirsiniz:
:e **/*foo<Tab>
fooçalışma dizininin altında adlarında bulunan tüm dosyalar arasından seçim yapmak için veya:
:e **/*foo/*bar<Tab>
çalışma dizininin herhangi bir yerinde, adında bulunan barherhangi bir alt dizin altında adlarında bulunan tüm dosyaları seçmek için foo.
Tabii ki, işler için bu :tabe[dit], :sp[lit]ve :vs[plit]de.
Yine de bu komutlar bir dosyayla sınırlıdır. :nextBirden çok dosyayı açmak için kullanın :
:next **/*.js
ve bir göz atın :help arglist.
Arabellekler arasında atlama
:b[uffer] temel tampon değiştirme komutudur:
: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
Bu komutların birçoğunun ve akrabalarının bir sayımı kabul ettiğini unutmayın.
:lsKomut gösterileri size yüklenen tamponların bir listesi. Yine de biraz "özel": tamponlar oluşturulduklarında bir numara atanırlar, böylece 1 2 5tamponları sildiğiniz gibi görünen bir listeye sahip olabilirsiniz . Bu biraz garip, evet ve bu, numarasına göre bir tampona geçişi biraz fazla zahmetli hale getiriyor. Kısmi adıyla geçiş tercih :b foo<Tab>ya da bisiklet :bn :bp.
Her neyse, işte tüm yüklü arabellekleri listeleyen ve sizin için istemi dolduran, arabellek numarasını yazmanızı ve tuşuna basmanızı bekleyen harika bir eşleme <enter>:
nnoremap gb :ls<CR>:b<Space>
Bu eşlemeyle, başka bir tampona geçmek şu kadar basittir:
gb
(quickly scanning the list)
3<CR>
veya:
gb
(quickly scanning the list)
foo<tab><CR>
Fikir , Bairui'nin Vim infografik koleksiyonundan alınan bu görüntüden geliyor :

Vim ayrıca <C-^>(veya <C-6>bazı klavyelerde) - normal mod eşdeğeri :b#- geçerli ara bellek ile bir önceki arasında atlamak için vardır. Sık sık iki tampon arasında geçiş yapıyorsanız kullanın.
Arabellekler hakkındaki her şeyi okuyun :help buffers.
Beyana git
Bir dosya içinde gdveya kullanabilirsiniz gD.
Bir proje içinde, Vim'in "etiketler" özelliği arkadaşınızdır ancak ctags veya cscope gibi harici bir kod indeksleyiciye ihtiyacınız olacaktır. En temel komutlar :tag foove <C-]>imleç bir yöntem adı üzerindedir. Her iki araç da iyi Vim entegre edilmiştir: bakınız :help tags, :help ctagsve :help cscope.
Değeri ne olursa olsun, bir proje içinde hareket etmek için kapsamlı bir şekilde etiket gezintisi kullanıyorum ( çoğunlukla CtrlP'leri :CtrlPTagve :CtrlPBufTagkomutları kullanarak , ancak buit-in olanları da kullanarak) ve en sevdiğim "genel" arabellek değiştirme yöntemi isme göre.
Yapılandırmanızı dağıtma
Bir çok Vim kullanıcısı konfigürasyonlarını versiyon kontrolü altına alır, bu da kendi konfigürasyonunuzu yeni bir makineye kurmayı çok hızlı ve kolay hale getirir . Bunu düşün.
DÜZENLE
Birkaç ay önce, eski bir Vim'e sahip uzak bir makinede çalışmak zorunda kaldım. Uygun bir Vim kurabilir ve kendi çok sevdiğim yapılandırmamı klonlayabilirdim ama bu sefer "testereyi keskinleştirmek" için hafif yolculuk yapmaya karar verdim. Hızla bir minimalist oluşturdum .vimrcve yarı unutulmuş birkaç yerel özelliği yeniden ziyaret ettim . Bu işten sonra, CtrlP'nin o kadar da gerekli olmadığına karar verdim ve ondan kurtuldum: yerel özellikler ve özel haritalamalar o kadar seksi değil ama işi fazla bağımlılık olmadan hallediyorlar.
Dosyalarla hokkabazlık
set path=.,**
nnoremap <leader>f :find *
nnoremap <leader>s :sfind *
nnoremap <leader>v :vert sfind *
nnoremap <leader>t :tabfind *
:findset pathdoğru yaptığınız anda gerçekten harika bir komuttur . Ayarlarımla, geçerli dizinin altındaki ,ffoo<Tab>tüm dosyaları fooyinelemeli olarak bulacağım . Hızlı, sezgisel ve hafiftir. Tabii ki, :editarkadaşlarla ve arkadaşlarla aynı tamamlamadan ve joker karakterlerden yararlanıyorum .
Süreci daha da hızlı hale getirmek için, aşağıdaki eşlemeler projenin tüm bölümlerini atlamama ve dosyaları geçerli dosyanın dizini altında yinelemeli olarak bulmama izin veriyor:
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>
UYARI! pathSeçenektir son derece güçlü. Yukarıdaki değer - - benim için işe .,**yarıyor , ancak kullandığım dillerin standart bir kitaplığı yok. Doğru değeri tamamen bağlıdır senin ihtiyaçlarına.
Tamponlarla hokkabazlık
set wildcharm=<C-z>
nnoremap <leader>b :buffer <C-z><S-Tab>
nnoremap <leader>B :sbuffer <C-z><S-Tab>
Yukarıdaki eşleştirmeler, "wildmenu" içindeki mevcut arabellekleri boş bir komut istemiyle listeleyerek, ya menüde gezinmeme ya <Tab>da birkaç harf yazmama <Tab>ve listeyi daraltmama izin veriyor . Yukarıdaki dosya eşleştirmelerinde olduğu gibi, süreç hızlıdır ve neredeyse sorunsuzdur.
nnoremap <PageUp> :bprevious<CR>
nnoremap <PageDown> :bnext<CR>
Bu eşlemeler kendileri için konuşuyor.
Etiketlerle hokkabazlık
nnoremap <leader>j :tjump /
Bu eşleme, tüm kelime araması yerine normal ifade aramasını kullanır, böylece ,jba<Tab>etiketi bulmak için yapabilirim foobarbaz().
Evet, bulanık eşleştirme bağımlılık yapar, ancak onsuz da üretken olabilirsiniz. Ve maliyetin bir kısmı için.
DAHA FAZLA DÜZENLEME
Birkaç ek ipucu / püf noktası…
Wildmenu seçenekleri
İle etkinleştirilen "wildmenu" set wildmenudosya / arabellek gezinmesini kolaylaştırır. Davranışı, araştırmaya değer bir dizi seçenek tarafından yönetilir:
wildmode Vim'e "wildmenu" nun nasıl davranmasını istediğinizi söyler:
set wildmode=list:full
wildignore tüm kusurları filtreler:
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.*
wildignorecasearamanızı foove bulmanızı sağlar Foo:
set wildignorecase
Dosya işaretleri
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
Geçenlerde bu mücevheri başka birinin içinde buldum ~/.vimrc. Bir arabellekten ayrıldığınızda imlecin tam konumunda bir dosya işareti oluşturur, böylece nerede olursanız 'Jolun düzenlediğiniz en son JavaScript arabelleğine atlar. Harika.