Persamaan yang paling dekat ("paling dekat", bukan "tepat") dengan Ctrl+ ST2 Padalah sebuah plugin bernama, bersiaplah… CtrlP . Ada plugin serupa lainnya seperti Command-T atau FuzzyFinder .
Saya menggunakan CtrlP dan saya menyukainya tapi saya dengan sepenuh hati mendukung keputusan Anda untuk menggunakan "plugin-free". Ini bukan cara termudah untuk melakukannya tetapi akan terbayar dalam jangka panjang.
Membuka file
Cara paling dasar untuk membuka file adalah :e /path/to/filename. Untungnya, Anda mendapatkan penyelesaian tab dan karakter pengganti: klasik *dan khusus **, yang merupakan singkatan dari "sembarang subdirektori".
Menggabungkan semua itu, Anda dapat melakukan:
:e **/*foo<Tab>
untuk memilih dari semua file yang berisi foonamanya di bawah direktori kerja atau:
:e **/*foo/*bar<Tab>
untuk memilih dari semua file yang berisi barnamanya di bawah subdirektori mana pun yang mengandung foonamanya, di mana saja di bawah direktori kerja.
Tentu saja, itu berhasil untuk :tabe[dit], :sp[lit]dan :vs[plit], juga.
Perintah-perintah itu terbatas pada satu file. Gunakan :nextuntuk membuka banyak file:
:next **/*.js
dan lihatlah :help arglist.
Melompat di antara buffer
:b[uffer] adalah perintah buffer-switching dasar:
: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
Perhatikan bahwa banyak dari perintah ini dan kerabatnya menerima hitungan.
The :lsperintah menunjukkan Anda daftar buffer dimuat. Ini sedikit "istimewa", meskipun: buffer diberi nomor saat dibuat sehingga Anda dapat memiliki daftar yang terlihat seperti 1 2 5jika Anda menghapus buffer. Ini agak canggung, ya, dan itu membuat peralihan ke buffer berdasarkan nomornya agak terlalu merepotkan. Lebih suka beralih dengan nama parsial, :b foo<Tab>atau bersepeda :bn :bp,.
Bagaimanapun, berikut adalah pemetaan keren yang mencantumkan semua buffer yang dimuat dan mengisi prompt untuk Anda, menunggu Anda untuk mengetik nomor buffer dan tekan <enter>:
nnoremap gb :ls<CR>:b<Space>
Dengan pemetaan ini, beralih ke buffer lain semudah:
gb
(quickly scanning the list)
3<CR>
atau:
gb
(quickly scanning the list)
foo<tab><CR>
Ide tersebut berasal dari gambar yang diambil dari koleksi infografis Vim Bairui :

Vim juga memiliki <C-^>(atau <C-6>pada beberapa keyboard) —mode normal yang setara dengan :b#—untuk melompat antara buffer saat ini dan yang sebelumnya. Gunakan jika Anda sering bergantian di antara dua buffer.
Baca semua tentang buffer di :help buffers.
Pergi ke deklarasi
Di dalam file, Anda dapat menggunakan gdatau gD.
Dalam sebuah proyek, fitur "tag" Vim adalah teman Anda, tetapi Anda memerlukan pengindeks kode eksternal seperti ctags atau cscope. Perintah paling dasar adalah :tag foodan <C-]>dengan kursor di nama metode. Kedua alat terintegrasi dengan baik ke dalam Vim: lihat :help tags, :help ctagsdan :help cscope.
Untuk apa nilainya, saya menggunakan navigasi tag secara ekstensif untuk berpindah dalam sebuah proyek (menggunakan CtrlP :CtrlPTagdan :CtrlPBufTagperintah, sebagian besar, tetapi buit-in juga) dan metode buffer switching "umum" favorit saya adalah dengan nama.
Menerapkan konfigurasi Anda
Banyak pengguna Vim meletakkan konfigurasi mereka di bawah kontrol versi yang membuatnya sangat cepat dan mudah untuk menginstal konfigurasi Anda sendiri di mesin baru. Pikirkan tentang itu.
EDIT
Beberapa bulan lalu, saya harus mengerjakan mesin jarak jauh dengan Vim yang sudah ketinggalan zaman. Saya bisa saja memasang Vim yang tepat dan mengkloning konfigurasi kesayangan saya, tetapi saya memutuskan untuk melakukan perjalanan ringan, kali ini, untuk "mempertajam gergaji". Saya segera membangun minimalis .vimrcdan mengunjungi kembali beberapa fitur asli yang setengah terlupakan. Setelah pertunjukan itu, saya memutuskan CtrlP tidak terlalu penting dan menyingkirkannya: fitur asli dan pemetaan khusus tidak seseksi itu tetapi mereka menyelesaikan pekerjaan tanpa banyak ketergantungan.
Menyulap dengan file
set path=.,**
nnoremap <leader>f :find *
nnoremap <leader>s :sfind *
nnoremap <leader>v :vert sfind *
nnoremap <leader>t :tabfind *
:findadalah perintah yang benar-benar hebat jika Anda melakukannya set pathdengan benar. Dengan pengaturan saya, ,ffoo<Tab>akan menemukan semua file yang berisi di foobawah direktori saat ini, secara rekursif. Cepat, intuitif, dan ringan. Tentu saja, saya mendapat manfaat dari penyelesaian dan karakter pengganti yang sama seperti dengan :editdan teman.
Untuk mempercepat prosesnya, pemetaan berikut memungkinkan saya melewati seluruh bagian proyek dan menemukan file secara rekursif di bawah direktori file saat ini:
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>
PERINGATAN! The pathpilihan adalah sangat kuat. Nilai di atas— .,**—berfungsi untuk saya tetapi bahasa yang saya gunakan tidak memiliki perpustakaan standar. Nilai yang tepat bergantung sepenuhnya pada kebutuhan Anda .
Juggling dengan buffer
set wildcharm=<C-z>
nnoremap <leader>b :buffer <C-z><S-Tab>
nnoremap <leader>B :sbuffer <C-z><S-Tab>
Pemetaan di atas mencantumkan buffer yang tersedia di "wildmenu" dengan prompt kosong, yang memungkinkan saya menavigasi menu dengan <Tab>atau mengetik beberapa huruf dan <Tab>sekali lagi mempersempit daftar. Seperti halnya pemetaan file di atas, prosesnya cepat dan hampir tanpa gesekan.
nnoremap <PageUp> :bprevious<CR>
nnoremap <PageDown> :bnext<CR>
Pemetaan itu berbicara sendiri.
Menyulap dengan tag
nnoremap <leader>j :tjump /
Pemetaan ini menggunakan pencarian regex dan bukan pencarian seluruh kata sehingga saya dapat melakukannya ,jba<Tab>untuk menemukan tag foobarbaz().
Ya, pencocokan fuzzy memang membuat ketagihan, tetapi Anda bisa sama produktif tanpanya. Dan untuk sebagian kecil dari biaya.
LEBIH BANYAK EDIT
Beberapa tip / trik tambahan…
Opsi Wildmenu
The "wildmenu", diaktifkan dengan set wildmenu, membuat navigasi file / buffer lebih mudah. Perilakunya diatur oleh sejumlah opsi yang patut diselidiki:
wildmode memberi tahu Vim bagaimana Anda ingin "wildmenu" berperilaku:
set wildmode=list:full
wildignore menyaring semua cruft:
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.*
wildignorecasememungkinkan Anda untuk mencari foodan menemukan Foo:
set wildignorecase
Tanda file
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
Saya baru-baru ini menemukan permata ini pada orang lain ~/.vimrc. Ini membuat tanda file pada posisi kursor yang tepat setiap kali Anda meninggalkan buffer sehingga, di mana pun Anda berada, 'Jmelompat ke buffer JavaScript terbaru yang Anda edit. Hebat.