Останнім часом я різко зменшив кількість плагінів, які використовую, тому шукаю відповіді, використовуючи лише вбудовані функції Vim.
Я помічав недолік у своєму робочому процесі, коли редагую безліч буферів: я перебуваю на буфері і хочу переключитися на інший, з якого не пам’ятаю ім'я, і який не є альтернативним буфером . Тому використання :b#
неможливо, а також використання завершення з командою :b
також не зручно.
Для цього я робив наступне:
- Спочатку скористайтеся
:buffers
для отримання списку відкритих буферів - Запам’ятайте номер буфера, який я хочу використовувати
- Натисніть, Enterщоб закрити список буферів
- Використовуйте
:bX
разомX
з номером буфера, який потрібно використовувати.
Цей робочий процес здався мені досить важким, тому я додав наступні рядки до свого
.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
Це дає мені команду :B
(і відображення), яка викликає функцію :buffers
чекати введення і, нарешті, дзвінки, :b
а потім введення.
Це добре працює, але я здивований, що мені довелося розробити таку функцію: зазвичай Vim має досить ефективний робочий процес за замовчуванням, тому мені цікаво, чи є кращий спосіб переключитися на буфер, з якого я не знаю нічого виняткового що це вже було відкрито в моїй сесії редагування.
:b#
це не те, що я шукаю, але так, цікаво те, що ви можете зберегти натискання клавіші, ввівши безпосередньо, :b
не натискаючи enter
раніше. (Дійсно, це може бути занадто легким, щоб відповісти, але варто було прокоментувати :-))
#
персонаж як резервний номер для (буферного) числа, а не буквального #
символу.
:ls
слідує:b#
(не потрібно спочатку повертатись або бігти, можу перейти безпосередньо зі списку буфера в "ls".) (Публікація як коментар, оскільки це не здається достатньо істотним, щоб бути відповіддю? Також цікаво, чи я щось пропускаю і відповідаю на неправильне запитання.)