Saya ingin pergi ke file yang baru saja saya edit jenis terakhir dan berikutnya seperti MRU lakukan.
:bnext
dan :bprev
bekerja kadang-kadang, tetapi paling sering saya hanya berakhir di beberapa file yang tidak jelas saya tidak ingat mengedit dan dipaksa untuk kembali ke plugin MRU.
Apakah ada cara untuk memperbaikinya?
Ctrl-^
swap antara dua file terakhir. Apa cara terbaik untuk bernavigasi di antara lebih banyak?
Saya mengerti ini mungkin rumit tetapi saya setuju dengan apa pun yang dapat meningkatkan :bn
:bp
perilaku saat ini . Buffer yang sering saya lihat benar-benar tidak pada tempatnya. Mungkin ada plugin yang bisa melacak file terbaru dan menyediakan kait sehingga saya bisa membuat pemetaan?
Membalas komentar membersihkan pikiran saya sedikit. Saya percaya apa yang saya inginkan adalah dapat menelusuri file dalam urutan penyimpanan terbaru. Dengan begitu jika saya kembali ke sejarah, pesanan tidak akan berubah sampai saya menyimpan file yang kemudian menjadi yang terakhir dan membuat satu langkah "kembali" ke file yang disimpan tepat sebelum itu, yaitu yang saya mulai dari.
Sesuatu seperti Ctrl-O
Ctrl-I
pasangan yang segera berpindah file tanpa melompati buffer saat ini. Semacam suka u
dan U
di netrw:
u Change to recently-visited directory |netrw-u|
U Change to subsequently-visited directory |netrw-U|
Ctrl-O
(atau kadang-kadangCtrl-T
) sampai saya tiba di sana.Ctrl-O
danCtrl-I
. Tapi itu melompat di antara titik edit dan itu mematahkan aliran. Semua yang saya ingin bolak-balik di antara buffer dalam rangka akses. Bagaimana plugin menampilkan daftar file terbaru? Apakah mereka melacak mereka secara internal?Ctrl-^
swap antara dua file terakhir. Tapi apa cara terbaik untuk bernavigasi di antara lebih banyak?Ctrl-O/I
adalah window-specific fwiw, sedangkan MRU biasanya bersifat global. Jika Anda ingin memesan dengan yang paling baru diakses, segera setelah Anda melompat kembali, urutan daftar berubah, hal-hal yang semakin rumit.Jawaban:
Saya menulis sedikit fungsi untuk berulang kali menekan CTRL-O untuk saya, sampai buffer berubah.
Anda dapat menemukannya di sini . Saya memetakannya ke CTRL-U tetapi Anda bisa menimpa CTRL-O jika Anda mau.
Anda mungkin dapat menulis sesuatu yang serupa untuk
<C-I>
.Masalah:
Terkait:
:jumps
daftar lokasi bersejarah yang akan dilalui CTRL-O.sumber
:kwbd
untuk menutup beberapa buffer, bahwa Vim memang mundur ke buffer sebelumnya dalam urutan reverse-history yang diharapkan. Mungkin Vim memiliki daftar MRU yang tidak dibagikan dengan kami, atau mungkin memilih penyangga mana yang akan kembali berdasarkan pada sejarah lokasi CTRL-O (:jumps
).autocmd InsertLeave * normal mZ
akan ingat kapan terakhir file yang diedit di tanda global Z . Anda dapat kembali ke sana dengang'Z
. // Aku punyanmap <C-y> g'Z
tapi aku masih cenderung lebih sering menggunakan Ctrl-U.Anda dapat menggunakannya
:ls
untuk menampilkan semua buffer. Sebagai contoh:Untuk kembali ke buffer
ext.markdown
, gunakan:e +Nbuf
, di manaN
nomor buffer dari kolom pertama. Sebagai contoh::e +2buf
.Anda dapat membuat fungsi sederhana untuk pengalaman yang lebih interaktif:
Setelah menggunakan
:ChooseBuf
atau<Leader>b
Anda cukup mengetikkan jumlah buffer yang ingin Anda edit.Ini tidak cukup "paling baru digunakan", karena urutannya "paling baru dibuka" (ini mungkin juga mengapa
:bnext
/:bprev
tidak berfungsi seperti yang Anda harapkan).sumber
<C-6>
adalah apa yang Anda butuhkan, yang akan membawa Anda kembali ke buffer sebelumnya yang Anda buka sebelum yang sekarang. Ada juga:bprev
&:bnext
yang bisa Anda gunakan untuk hal yang sama.sumber
<C-6>
tidak buruk tapi saya tidak bisa menggunakannya untuk melompat kembali dua buffer.bprev
danbnext
tidak dalam urutan melompat.<C-6>
, bukan<C-^>
. Sementara pada banyak emulator terminal tidak ada perbedaan, pada beberapa (termasuk yang dikirimkan dengan OS X), ada. Untuk kasus yang terakhir, penggunaanShift
kunci diperlukan (dengan asumsi tata letak Qwerty).Anda juga dapat menggunakan
:oldfiles
untuk mendapatkan daftar file yang Anda edit.Daftar ini akan memiliki nomor yang dikaitkan dengan nama file. Pilih file, catat nomornya (katakan 14) dan buka dengan
:edit #<14
Anda juga dapat menjalankan perintah lain pada file itu atau meneruskan banyak file ke perintah sekaligus. Lebih lanjut tentang ini DI SINI
sumber
:bro[wse] ol[dfiles][!]