Я відкриваю кілька файлів у Vim, наприклад, запустивши
vim a/*.php
який відкриває 23 файли.
Потім я вношу свої зміни та запускаю наступні двічі
:q
що закриває всі мої буфери.
Як можна закрити лише один буфер у Vim?
Я відкриваю кілька файлів у Vim, наприклад, запустивши
vim a/*.php
який відкриває 23 файли.
Потім я вношу свої зміни та запускаю наступні двічі
:q
що закриває всі мої буфери.
Як можна закрити лише один буфер у Vim?
Відповіді:
Слово обережності: "w w bw не стоїть для запису, а для wipeout!"
Більше з посібників:
: bd
Вивантажте буфер [N] (за замовчуванням: поточний буфер) та видаліть його зі списку буферів. Якщо буфер був змінений, це виходить з ладу, якщо тільки не вказано [!], В цьому випадку зміни втрачаються. Файл не змінюється.
Якщо ви знаєте, що робите, ви також можете використовувати: bw
: bw
Як |: bdelete |, але справді видаліть буфер.
:bw
тоді, коли "ти знаєш, що ти робиш", а я цього не роблю, тому, мабуть, буду використовувати :bd
.
:bd
) також закриває вкладку. Напевно, ви хочете, :bd n .. [m]
або :n,mbd
закрити конкретні числа чи діапазон чисел, що можна зробити, не дивлячись на буфери
w
Коротка write
команда відповідно до посібника Vim, крім того, жодної згадки про "очищення". Опис команди ( help write
) починається з "Записати весь буфер у поточний файл."
w
в bw
команді означає wipeout, він не говорить про w
команду. Він поставив це попередження, щоб люди не думали, що bw
команда означає буферне записування (це не означає, що буферне стирання.)
Якщо попередні відповіді цього не стають очевидними:
: bd закриє поточний буфер. Якщо ви не хочете схопити список буфера.
:bd
закриває тільки буфер, тоді як (що б це не означало), тоді як :bw
також буде очищено всі змінні і дійсно виключає його з ls
буфера.
Перевірте свій ідентифікатор буфера, використовуючи: буфери
ви побачите список буферів там
1 a.php
2 b.php
3 c.php
якщо ви хочете видалити b.php з буфера
:2bw
якщо ви хочете видалити / закрити всі з буферів
:1,3bw
Замість того, щоб переглядати вихід команди: ls та видаляти (вивантажувати, стирати ..) буфер, вказуючи його номер, я вважаю, що використання назв файлів часто є більш ефективним.
Наприклад, після того, як я відкрив пару .txt-файлів, щоб оновити свої спогади про якусь точну точку .. скопіюйте та вставте кілька рядків тексту, щоб використовувати їх як сортовий шаблон .. і т. Д., Я б набрав таке:
:bd txt <Tab>
Зверніть увагу, що відповідна рядок не повинна бути на початку імені файлу.
Вище наведено список імен файлів, які відповідають 'txt' у нижній частині екрана, і зберігає команду: bd, яку я спочатку набрав не торкнутою, готовою до завершення.
Ось приклад:
doc1.txt doc2.txt
:bd txt
Я міг би повернути пробіл над бітом 'txt' і ввести ім'я файлу, яке я хочу видалити, але там, де це стає дуже зручно, це мені не потрібно: якщо я натисну клавішу Tab вдруге, Vim автоматично завершує мою команду з першим матчем:
:bd doc1.txt
Якщо я хочу позбутися цього буфера, мені просто потрібно натиснути Enter.
І якщо буфер, який я хочу видалити, стане другим (третім .. і т. Д.) Збігом, мені потрібно лише продовжувати натискати клавішу Tab, щоб перейти до мого: bd командного циклу через список збігів.
Звичайно, цей метод також може бути використаний для переключення на заданий буфер за допомогою таких команд, як: b ..: sb .. і т.д.
Цей підхід особливо корисний, коли встановлено "прихований" варіант Vim, оскільки список буферів може швидко стати досить великим, охоплюючи кілька екранів, і ускладнює виявлення конкретного буфера, який я шукаю.
Щоб максимально використати цю функцію, можливо, найкраще прочитати наступний файл довідки Vim і відповідно налаштувати поведінку завершення командного рядка Tab, щоб вона найкраще відповідала вашому робочому процесу:
:help wildmode
Поведінка, яку я описав вище, випливає з наступного налаштування, яке я вибрав заради послідовності, щоб імітувати завершення bash:
:set wildmode=list:longest,full
На відміну від використання буферних чисел, заслуга цього підходу полягає в тому, що я зазвичай пам'ятаю принаймні частину даного імені файлу, що дозволяє мені орієнтуватися безпосередньо на буфер, а не спочатку шукати його номер за допомогою команди: ls.
[EDIT: це була дурна пропозиція, коли я не знав Віма досить добре. Будь ласка, не використовуйте вкладки замість буферів; вкладки - це "макети вікон" Vim]
Можливо, перейти на використання вкладок?
vim -p a/*.php
відкриває ті самі файли на вкладках
gt
і gT
перемикати вкладки вперед і назад
:q
закриває лише поточну вкладку
:qa
закриває все і виходить
:tabo
закриває все, крім поточної вкладки
vim-nox
пакет від Ubuntu має підтримку Ruby.
Тим, хто використовує плагін навігації по буфері або дереву, наприклад Buffergator або NERDTree, потрібно буде переключити ці розбивки перед тим, як знищити поточний буфер - інакше ви відправите свої розбивки в winkyville
Я використовую:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
Де " NERDTreeToggle
" у цьому списку те саме, що вводити текст :NERDTreeToggle
. Ви можете змінити цю функцію для інтеграції з власною конфігурацією.
:bdelete
або :bwipeout
. Дивіться мою відповідь .
Якщо ви хочете закрити буфер, не руйнуючи макет свого вікна (поточний макет на основі розщеплення), ви можете використовувати плагін типу bbye . Виходячи з цього, ви можете просто використовувати
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
Або просто створіть у вашому відображенні .vimrc
для легшого доступу
:nnoremap <Leader>q :Bdelete<CR>
З документації на плагін :
- Закрийте та вийміть буфер.
- Показати ще один файл у цьому вікні.
- Показуйте порожній файл, якщо у вас немає інших файлів.
- Не залишайте марні буфери [no file], якщо ви вирішите редагувати інший файл у цьому вікні.
- Працюйте, навіть якщо файл відкритий у кількох вікнах.
- Добре працюйте з різними дослідниками буфера та вкладками.
З документації на плагін :
Vim має дві команди для закриття буфера:
:bdelete
і:bwipeout
. Перший видаляє файл зі списку буферів, очищує його параметри, змінні та відображення. Однак він залишається у списку переходів, томуCtrl-o
повертає вас назад і знову відкриває файл. Якщо це не те, що ви хочете, використовуйте:bwipeout
або еквівалент Bbye там,:Bwipeout
де ви б використовували:bdelete
.
vim -o a/*.php
(або-O
використовувати вертикальні вікна) і уникати навігації по буфері - це чудовий метод лише для декількох файлів, але з 23 файлами вони матимуть лише кілька рядків / стовпців кожен.