Akhir-akhir ini saya secara drastis mengurangi jumlah plugin yang saya gunakan jadi saya mencari jawaban hanya menggunakan fitur Vim bawaan.
Saya telah memperhatikan kekurangan dalam alur kerja saya ketika saya mengedit banyak buffer: Saya di buffer dan saya ingin beralih ke buffer lain yang saya tidak ingat namanya dan yang bukan buffer alternatif . Jadi :b#
tidak mungkin menggunakan dan menggunakan penyelesaian dengan perintah :b
juga tidak nyaman.
Untuk melakukan itu saya melakukan hal berikut:
- Pertama digunakan
:buffers
untuk mendapatkan daftar buffer terbuka - Ingat jumlah buffer yang ingin saya gunakan
- Tekan Enteruntuk menutup daftar buffer
- Gunakan
:bX
denganX
jumlah buffer yang digunakan.
Alur kerja ini sepertinya cukup berat bagi saya jadi saya menambahkan baris berikut ke saya
.vimrc
:
" Improve the navigation in the buffers
nnoremap <Leader><S-b> :B<CR>
command! B call Buffers()
function! Buffers()
execute "buffers"
let buffer=input("Enter a buffer:")
execute "b" . buffer
endfunction
Ini memberi saya perintah :B
(dan pemetaan) yang memanggil fungsi :buffers
menunggu input dan akhirnya panggilan :b
diikuti oleh input.
Ini bekerja dengan baik tetapi saya terkejut bahwa saya harus mengembangkan fungsi seperti itu: biasanya Vim memiliki alur kerja default yang cukup efisien jadi saya bertanya-tanya apakah ada cara yang lebih baik untuk beralih ke buffer yang saya tidak tahu apa-apa kecuali bahwa itu sudah dibuka di sesi pengeditan saya.
:ls
diikuti oleh:b#
(tidak perlu menekan balik atau melarikan diri dulu, dapat langsung dari daftar buffer di 'ls'.) (Posting sebagai komentar karena sepertinya tidak cukup substansial untuk menjadi jawaban? Juga bertanya-tanya apakah saya Saya kehilangan sesuatu dan menjawab pertanyaan yang salah.):b#
bukan yang saya cari tapi ya fakta bahwa Anda dapat menyimpan keystroke dengan memasukkan langsung:b
tanpa menekanenter
sebelumnya itu menarik. (Memang itu mungkin terlalu ringan untuk menjadi jawaban, tapi itu layak untuk dikomentari :-))#
karakter sebagai penopang untuk nomor (penyangga), bukan#
karakter literal .Jawaban:
Sebaliknya, saya menemukan penyelesaian tab menjadi sangat nyaman. Menetapkan opsi yang tepat untuk nilai-nilai yang sesuai untuk Anda mungkin banyak membantu. Ini adalah baris yang relevan dari saya
vimrc
(mereka bekerja untuk saya tetapi mereka mungkin tidak bekerja untuk Anda jadi jangan hanya menyalinnya) :Dengan itu, buffer kanan jarang lebih dari lima atau enam penekanan tombol:
Barry Arthur datang dengan solusi yang jauh lebih sederhana bertahun-tahun lalu yang telah menjadi sangat populer sejak saat itu:
di mana saya mengusulkan varian yang sedikit lebih fleksibel beberapa tahun yang lalu:
Karena kita berbicara vimscript, inilah fungsi kecil yang bagus yang saya tulis bahwa "auto-populates" baris perintah dengan stub perintah yang tepat setelah daftar seperti perintah suka
:ls
atau:ilist
. Keuntungan dari fungsi itu daripada pemetaan di atas adalah bahwa saya tidak harus mengingat pemetaan tertentu. Ini berfungsi seperti Vim, tetapi dengan sedikit twist .Yang mengatakan, saya pendukung besar "navigasi berbasis simbol" lebih dari "navigasi berbasis file". Bila berlaku, navigasi berbasis simbol jauh lebih cepat dan jauh lebih ekonomis daripada navigasi berbasis file.
GIF terakhir menunjukkan satu cara navigasi berbasis simbol. Contohnya konyol tapi ... oh well.
sumber
wild*
opsi, saya akan mencoba mengubah cara saya. Tentang solusi Barry Arthur, cukup dekat dengan jawaban @ nobe4 yang menarik. Akhirnya saya harus melihat lebih dalam padaCCR()
fungsi Anda untuk benar-benar mendapatkannya tetapi terlihat menjanjikan. Terima kasih atas jawaban anda.Saya mengalami masalah yang sama beberapa waktu lalu dan saya menemukan solusi:
Ini akan membuka daftar buffer dan tanpa menyembunyikannya, memberi Anda opsi untuk beralih buffer.
Saya pikir masuk akal jika Vim tidak memiliki opsi "daftar dan pilih" di sini, ini adalah dua tindakan terpisah. Tapi Vim cukup kuat untuk menggabungkan perintah bersama.
Anggap saja sebagai filosofi Unix: Lakukan satu hal dan lakukan dengan baik.
:buffers
daftar buffer dan:buffer xxx
memungkinkan Anda untuk memilih satu.sumber
Tetapi baru-baru ini saya telah menemukan metode tercepat dengan penekanan tombol paling sedikit adalah dengan menggunakan:
{count} CTRL-^
Ini tidak jauh berbeda dari
:b#<Enter>
tetapi seperti yang Anda katakan, Anda perlu tahu nomor penyangga!Jadi untuk itu saya menjalankan plugin MiniBufExplorer , yang menampilkan daftar nama file di bagian atas (seperti hampir setiap editor lainnya). Saya yakin ada banyak alternatif.
Akhirnya, karena Ctrl-^sedikit peregangan untuk jari-jari saya, dan ini adalah operasi yang sangat umum, saya memindahkannya ke Ctrl-E. The implementasi untuk yang tidak terlalu rumit:
Jadi proses switching buffer saya saat ini berlangsung seperti ini:
Sayangnya MBE dan skrip di atas bukan Vim bawaan, seperti yang Anda minta. Ketika saya menggunakan mesin jarak jauh tanpa konfigurasi, saya hanya menggunakan
:b [partial]
dan Tab-completion.sumber